设计可靠的微服务
在微服务架构中,每个服务都不是孤立存在的,它们相互协作,共同构成一个庞大的系统。然而,复杂系统中故障不可避免,如何设计可靠的微服务成为关键。本文将介绍服务可用性的概念,探讨微服务应用中可能出现的故障类型及影响,并探索设计可靠服务通信的方法。
1. 定义可靠性
要衡量微服务的可靠性,可从服务的可用性入手。以一个简单的微服务系统为例,服务 holdings 调用两个依赖服务 transactions 和 market-data ,这些服务又有各自的依赖。
服务在运行过程中,会有成功执行工作的时间(正常运行时间,uptime),也会有因故障无法完成工作的时间(停机时间,downtime)。可用性是指服务在运行时间内正常工作的百分比,它是衡量服务可靠性的指标。
高可用性通常用“几个九”来表示,例如两个九是 99%,五个九是 99.999%。关键的面向生产的服务可靠性通常不应低于这个标准。
假设 holdings 调用 market-data 的成功率为 99.9%,看似可靠,但随着请求量增加,0.1% 的停机时间会变得很明显。微服务的依赖链可能会很复杂,整个系统的故障率可以通过将依赖链各部分的可用性相乘来估算。
例如,有六个成功率相同的服务,每个服务的调用成功率为 99.9%,那么系统的综合可靠性为 0.999^6 = 0.994 = 99.4%。可以看出,整个应用的可靠性总是低于其独立组件,服务的最大可用性是其依赖服务可用性的乘积。
如果服务
超级会员免费看
订阅专栏 解锁全文
168万+

被折叠的 条评论
为什么被折叠?



