繁体   English   中英

动态消息传递与延迟设计问题

[英]Dynamically messaging vs Latency design issue

我想从您的经历中了解您对我的设计的想法。

我正在设计一个具有非常关键部分的系统:

我有组件A,B,C(在同一JVM上),它们需要彼此“讲话”。

我可以通过两种方式这样做:

  1. 方法调用方式(每一个都包含彼此的实例(注入,对象实例等)。

  2. 消息传递方式(主题/队列)

我知道有一个中间件混乱系统(选项2)的缺点。

但:

我在谈论延迟注意事项。 我需要使这些消息以低延迟到达目标(谈论ms延迟)。

我想选择选项2(消息传递方式)。

根据您的经验,它将对我的延迟产生多大影响? 同样,延迟是这个决定中非常重要的因素。

(使用Java编程,尚不确定哪个应用容器(Spring,Jboss ..)

谢谢,雷。

假定消息传递方式是在同一JVM内的内存中。 然后,通常大多数延迟都来自争用(使用同步等),调度(如何唤醒线程以完成其工作等)和GC的组合。 这些延迟源往往使所有其他方面相形见.。

可以编写重量不大但不会增加太多开销的消息传递系统。 Akka就是一个很好的例子,它越来越多地进入低延迟金融系统。 它在Scala领域中广为人知,但它确实具有Java API。

总之,可以将消息传递系统实现为不到毫秒的要求。 但是,请确保首先满足您的需求。 仅仅因为您可以,并不意味着您应该这样做。 如果您在小型系统上工作,那么良好的设计可能只需要依赖注入/控制反转。 但是,如果您正在考虑使用消息传递作为将多个cpu内核引入混合的一种方式,那么我建议您看一下Akka。 即使仅作为案例研究。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM