【发布时间】:2019-02-13 10:33:46
【问题描述】:
我有 2 个微服务——“A”产生了一些源自事件的数据,并在微服务“B”中复制。我有一个 UI,它与位于微服务“B”之上的 API 对话,该 API 在内部使用来自“A”的复制数据。我已经为这两个微服务分别进行了可用性计算——比如说 99.5% 和 99.8%。如何计算整个系统的可用性?例如,如果“A”关闭而“B”启动,用户仍然可以看到来自 B 的 API 工作,尽管来自“A”的数据过时。我不应该是第一个偶然发现这种情况的人......
【问题讨论】:
-
整个系统有:99.5% x 99.8% = 99.301%
-
您的对于基于 SOA 的架构是正确的,其中“B”的可用性取决于“A”的可用性。正如我所提到的,我确实有一份最新数据的副本,该数据源自 B 中的 A 事件,直到 A 启动并运行。
-
您如何定义系统的可用性?陈旧数据意味着系统可用或不可用?
-
是的……这就是讨论的重点。事件驱动架构为我提供了这个缓冲,让微服务 B 可以处理来自 A 的最新数据。如果 A 不应该在 X:00 am 到 Y:00 am 之间发送新数据;尽管 A 下跌而 B 上涨,但从技术上讲,我正在提供最新数据。我希望我不是第一个遇到这种情况的人。
-
可用性的定义取决于您的业务。如果企业认为使用远程陈旧数据的微服务可用,那么整体可用性是所有独立微服务的最小值。
标签: microservices high-availability event-sourcing availability