许多现代应用都需要在企业级规模上进行构建,有时甚至需要在互联网规模上进行构建。这些应用都需要满足可扩展性、可用性、安全性、可靠性和弹性需求。
在本文中,我将谈论一些设计模式,这些模式可以帮助你轻松实现上述能力。我将讨论每个模式,他们如何在云原生环境中使用,以及何时使用和何时不使用。
有些模式也并不是什么新发明,但它们在当前互联网规模的云世界中非常有用。
以下是我将在本文中讨论的模式列表。
熔断器
命令和查询责任分离(CQRS)
事件溯源(Event Sourcing)
Sidecar
后端对前端
Strangler
下面进入正文。
熔断器
分布式系统在设计时应考虑到故障问题。目前微服务已经得到了广泛应用,这些服务大多依赖于其他远程服务。远程服务可能会因为网络、应用负载等各种原因而不能及时响应。在大多数情况下,通过重试应该可以解决这些问题。
但也有极端情况,比如服务降级或服务本身完全失效。在这种情况下,继续重试是没有意义的。因此熔断器模式就可以派上用场了。
熔断器
上图展示了熔断器模式的实现,当服务1了解到在调用服务2时有连续的故障/超时时,服务1不再重试,而是跳过调用服务2,