如何设计出容忍依赖项和高可靠服务的微服务

2022-09-03  本文已影响0人  robot_test_boy
为什么要可靠性?

没有哪个微服务是一座不与外界联系的孤岛,每个微服务总归要隶属于某个更大的系统。这些依赖于其他下游合作方服务来完成对用户有益的功能。

不管在哪种复杂系统中,故障都是不可避免的。具体到每个微服务,它们都会因为各种各样的原因而出现故障。这其中可能是代码引入了漏洞缺陷,也可能是部署不稳定导致的。此外,底层基础设施也有可能导致系统出现问题,比如资源会由于负载太高而达到饱和状态,下层服务结点会出现异常,甚至于整个数据中心都可能出现故障。

彻底消除微服务应用中的故障是不可能的——与之对应的投入将是一个无底洞!反之,重点应该放在设计出能够容忍依赖项出现故障的微服务,让这些微服务能够优雅地从故障中恢复正常或者能够减轻这些故障对其功能的影响。

什么是可靠性?微服务有哪些常见故障清单?

如何度量一个微服务的可靠性

每个服务的可用性都会对整个应用的可用性的产生影响。

微服务常见故障清单

连锁故障:也是一种常见故障类型

大部分故障发生在4个领域:硬件、通信、依赖项和内部。正反馈导致的连锁故障是微服务应用中一种很常见的故障形式。通常,大部分是连锁故障由服务过载所导致的。

重点看通信和依赖项这两大类故障。

如何设计微服务的可靠通信,以减少依赖性

1. 同步通信的7种解决方案

设计可靠通信之如何优雅重试

设计可靠通信之4种后备方案:优雅降级、缓存、功能冗余和桩数据

设计可靠通信之设置合理的超时时间

设计可靠通信之设置合理的断路器(熔断器)

2. 异步通信的解决方案

设计可靠通信之使用消息队列进行异步交互

如何设计微服务的服务可靠,以减少依赖性

设计高可靠性服务之健康检查

设计可靠服务之合理的限流策略

跨服务标准通信

跨服务通信标准的两种方案:框架和服务网格

摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》

上一篇 下一篇

猜你喜欢

热点阅读