Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading “具有可变持续时间的干扰器模式”;“业务逻辑”;_Multithreading_Performance_Latency_Low Latency_Disruptor Pattern - Fatal编程技术网

Multithreading “具有可变持续时间的干扰器模式”;“业务逻辑”;

Multithreading “具有可变持续时间的干扰器模式”;“业务逻辑”;,multithreading,performance,latency,low-latency,disruptor-pattern,Multithreading,Performance,Latency,Low Latency,Disruptor Pattern,在存在可变持续时间“业务逻辑”任务的流程中,如何有效地使用中断器?以前做过吗 是否可以使用第二个环形缓冲区处理响应阶段?如果是的话,我该怎么做呢 我了解破坏者,并看到我的呼叫链中的一些具体部分,在那里我可以应用这个概念。具体而言,该应用程序是一个中间件类型的应用程序,它执行以下步骤: 读取入站消息,解组请求 确定客户请求的详细信息,确定要处理的工作流步骤 调用后端系统来执行步骤 整理响应、记录响应、整理并返回给消费者 问题在于,后端步骤的某些实例可能需要“很长”的时间,这可能会迫使短时间运行

在存在可变持续时间“业务逻辑”任务的流程中,如何有效地使用中断器?以前做过吗

是否可以使用第二个环形缓冲区处理响应阶段?如果是的话,我该怎么做呢

我了解破坏者,并看到我的呼叫链中的一些具体部分,在那里我可以应用这个概念。具体而言,该应用程序是一个中间件类型的应用程序,它执行以下步骤:

  • 读取入站消息,解组请求
  • 确定客户请求的详细信息,确定要处理的工作流步骤
  • 调用后端系统来执行步骤
  • 整理响应、记录响应、整理并返回给消费者
问题在于,后端步骤的某些实例可能需要“很长”的时间,这可能会迫使短时间运行的任务的响应阶段等待长时间运行的任务。假设后端系统的调用可以是异步的,也可以是同步的,所以我们的想法是后端系统调用只是一个消费者,它触发了对后端的异步请求

后端系统响应时间可以是5毫秒(某些请求)、50毫秒(90%的请求)到-5000毫秒(1%的请求)(想想大型磁盘I/O)


我可以认为干扰程序可能非常高效,但我无法绕过这个障碍来降低平均延迟。

看来这是一个答案--还有其他建议吗?