反应时间与非反应时间

时间:2019-06-17 12:04:43

标签: reactive-programming project-reactor reactor

对于一个足以处理多个请求(不会耗尽线程)的系统,从用户角度来看,在响应时间/速度方面会有区别吗?

而且,数据库是唯一通常阻塞线程的东西,因此我们需要反应式数据库驱动程序吗? 我的意思是,如果其余端点不对db进行调用,则该端点是否是反应性的就不会有任何区别?

1 个答案:

答案 0 :(得分:0)

首先,您需要了解使用project-reactor-webflux客户端时会发生什么。

假设您的端点(称为/ demo)负责对其他系统进行5次异步调用,以从自身返回响应。

示例响应时间:

  • 服务A:5毫秒
  • 服务B:50毫秒
  • 服务C:100毫秒
  • 服务D:250毫秒
  • 服务E:400毫秒

典型的非weblux客户端方式:

消耗5个线程,最后一个阻塞400ms。

Webflux客户端方式:

每次对服务A,B,C,D,E的调用都会占用一个线程,进行调用,返回线程,并且当响应到来时会消耗另一个线程来处理响应。

最终结论: 如果您的系统同时因大量请求(让它为n个)而超负荷运行,则将n个线程锁定400毫秒。

尝试想象问题的严重程度。