[英]Latency vs decoupling architecture advice
我正在设计一个系统架构。(Java EE / Spring)
这个系统的主要因素是低延迟 。(从端到端谈论1毫秒和更少)
我们为这个实时系统规划了几个组件。
我向您提问的问题:我知道耦合和解耦的所有优点(故障转移,分离,维护,扩展等......)
我面临的问题是:
例如,假设我在机器A(app1)和机器B(app2)上的应用程序中有两个不同的应用程序。
请求必须通过两台机器。 两台机器处理完请求后,最终答案将发送给客户。
这两者之间的集成延迟肯定会高于将这些应用程序放在同一台机器上(网络时间等)。
另一方面,我可以自己更新和维护每个应用程序,而不依赖于同一台机器。 同样适用于故障转移,群集,负载平衡
你有什么建议我的? 我应该考虑什么? 延迟与解耦和维护
谢谢,雷。
请求必须通过两台机器。 两台机器处理完请求后,最终答案将发送给客户。
它可以增加0.1到0.2毫秒。 这可能是可以接受的。
另一方面,我可以自己更新和维护每个应用程序,而不依赖于同一台机器。
您更有可能更新软件而不是硬件。 Hadrware通常可以在非高峰时段更新,如周末
同样适用于故障转移,
您拥有的机器越多,您拥有的故障点就越多。
集群
如果您在一台计算机上拥有所有内容,则可能不需要群集。
负载均衡
如果您需要使用多台机器,这会更有意义。
如果您有一个Web应用程序1毫秒是相当激进的目标。 如果你有一个网络服务,如交易系统亚毫秒或甚至低于100微秒,可以根据你的要求实现。
处理相同请求的机器越多,延迟就越多 - 这是显而易见的。 此外,消除应用程序之间的所有边界 - JVM,线程,并将它们实现为在同一线程上顺序调用的2个过程。
在一种情况下,更多的机器可以减少延迟:分配负载,从而在一台机器上释放资源(处理器),以消除拥塞。 让不同的工具(货币,股票)在不同的机器上交易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.