0

我正在设计系统架构。(Java EE/Spring)

该系统的主要因素是低延迟。(从端到端谈论大约 1 ms 和更少)

我们已经为这个实时系统计划了几个组件。

我向各位专家提出的问题:我知道耦合和解耦的所有优点(故障转移、分离、维护、扩展等)

我在这里面临的问题是:

例如,假设我在机器 A(app1)和机器 B(app2)上有两个不同的应用程序。

请求必须通过两台机器。两台机器处理完请求后,最终答案将发送给客户端。

这两者之间的集成延迟肯定会比在同一台机器下拥有这些应用程序(网络时间等)更高。

另一方面,我可以自己更新和维护每个应用程序,而无需依赖同一台机器。故障转移、集群、负载平衡也是如此

你会给我什么建议?我应该考虑什么?延迟与解耦和维护

谢谢,雷。

4

2 回答 2

2

请求必须通过两台机器。两台机器处理完请求后,最终答案将发送给客户端。

它可以增加 0.1 到 0.2 毫秒。这可能是可以接受的。

另一方面,我可以自己更新和维护每个应用程序,而无需依赖同一台机器。

您更有可能更新软件而不是硬件。Hadrware 通常可以在非高峰时间(例如周末)进行更新

故障转移也是如此,

您拥有的机器越多,您的故障点就越多。

聚类

如果您将所有内容都放在一台机器上,您可能不需要集群。

负载均衡

如果您需要使用多台机器,这更有意义。

如果您有一个 Web 应用程序,1 毫秒是相当激进的目标。如果您有网络服务,例如交易系统,则可以根据您的要求实现亚毫秒甚至亚 100 微秒。

于 2012-09-20T12:57:45.247 回答
0

处理相同请求的机器越多,延迟就越多——这是显而易见的。此外,消除应用程序之间的所有边界 - JVM、线程,并将它们实现为在同一线程上按顺序调用的 2 个过程。

在一种情况下,更多的机器可以减少延迟:在一台机器上分配负载等以释放资源(处理器),以消除拥塞。让不同的工具(货币、股票)在不同的机器上交易。

于 2012-09-20T13:21:43.497 回答