微服务模式与部署策略
1. 微服务模式
1.1 舱壁模式
通过为每个服务创建连接池,可避免整个系统因某个服务故障而崩溃,仅影响单一功能。例如在足球管理应用中,为每个服务分配专用连接池,并为每个服务使用不同的数据库,展示了微服务和提供异构运行时的PaaS平台下,无需追求工具的同质性。
1.2 断路器模式
此模式源于电子电路领域,目的与舱壁模式相同,但方法不同。当一个服务调用无响应或响应缓慢的服务时,可能会降低整个系统的性能。此外,实现断路器还可避免持续调用已知故障或无法访问的服务。
1.2.1 工作原理
- 打开状态 :假设服务A调用服务B,若服务B宕机,服务A应阻止这种集成,返回超时错误或缓存数据,此时电路处于打开状态,两点间无连接。
- 关闭状态 :断路器应定期轮询服务B的健康状况。当服务B恢复正常时,断路器应重置流程,让服务A再次调用服务B,此时电路处于关闭状态。
1.2.2 常见实现
- Netflix Hystrix:曾是最知名的实现,但已停止积极开发,进入维护模式。
- 替代方案:Resilience4j、Sentinel和Istio等。其中,Istio被Red Hat支持的PaaS平台OpenShift使用。
1.3 Istio
Istio旨在解决开发人员和运维人员在单体应用向分布式微服务架构过渡时面临的挑战。随着微服务架构复杂性的增加,依赖诸如断路