java延迟与解耦体系结构建议
我正在设计一个系统架构。(JavaEE/Spring)
该系统的主要因素是低延迟。(从一端到另一端谈论1毫秒及以下)
我们已经为这个实时系统规划了几个组件
我向各位专家提出的问题:我知道耦合和解耦的所有优点(故障转移、分离、维护、扩展等)
我在这里面临的问题是:
例如,假设我在机器A(app1)和机器B(app2)上有两个不同的应用程序
请求必须通过两台机器。最终答案将在两台机器处理请求后发送给客户端
这两个应用程序之间的集成延迟肯定会比在同一台机器下使用这些应用程序(联网时间等)更高
另一方面,我可以自己更新和维护每个应用程序,而不依赖于同一台机器。故障切换、群集和负载平衡也是如此
你会给我什么建议?我应该考虑什么?延迟与解耦和维护
谢谢, 雷
# 1 楼答案
处理同一请求的机器越多,延迟就越大——这是显而易见的。此外,消除应用程序之间的所有边界—JVM、线程,并将它们实现为在同一线程上顺序调用的两个过程
在一种情况下,更多的机器可以减少延迟:分配负载,从而释放一台机器上的资源(处理器),以消除拥塞。让不同的工具(货币、股票)在不同的机器上交易
# 2 楼答案
它可能会增加0.1至0.2毫秒。这可能是可以接受的
您更可能更新软件而不是硬件。Hadrware通常可以在非高峰时间(如周末)更新。
机器越多,故障点就越多
如果您在一台机器上拥有所有功能,则可能不需要集群
如果您需要使用多台机器,这将更有意义
如果您有一个web应用程序,1毫秒是一个相当积极的目标。如果您有一个网络服务,如交易系统,根据您的要求,亚毫秒甚至亚100微秒是可以实现的