【问题标题】:Availability calculation of a Event driven Microservice Architecture事件驱动微服务架构的可用性计算
【发布时间】: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


【解决方案1】:

让我们描述两个选项:

1) 您的客户需要最新数据(评估某些资格、实时评估等): 微服务相互依赖,因此 您必须将两个可用性相乘 99.8% x 99.5% = 99.3%

2) 您的客户不需要最新数据(很可能是一些报告生成): 您可以声称系统的可用性为 99.8%。

【讨论】:

  • 那么为什么要倍增呢?你计算了两者都可用的机会?问题是关于 B 显示来自 A 的陈旧数据。
猜你喜欢
  • 2019-06-18
  • 2018-05-13
  • 2021-02-03
  • 2017-09-03
  • 2013-05-22
  • 2018-06-25
  • 2020-04-18
  • 1970-01-01
  • 2016-12-07
相关资源
最近更新 更多