服务依赖管理
在微服务架构下,随着服务数量的增加,整个系统的复杂度也在不断地增加。这主要表现在:
- 每个服务的资源要求不同
- 每个服务的重要程度不同
- 每个服务的依赖关系不同
在服务部署上线之前,必须要梳理清楚服务之间的依赖关系,如果 A 依赖 B,那 B 必须先于 A 部署,否则会导致服务部署启动后无法正常使用的情况。
依赖关系是分布式服务中比较难以管理的部分,需要合理的业务划分和服务拆分,真正做到服务的高内聚、低耦合。
在实际工程中,想要彻底做到服务间无依赖是比较难的,我们只能尽量的减少依赖关系。这其中最重要的就是避免出现依赖环,这是一种极强的耦合,会导致递归问题,使得服务的部署变得异常复杂。像我们在服务内部编写程序时出现依赖循环时,通常可以采用依赖倒置的原则,引入一个第三方抽象层来解决。对于微服务架构,可以通过事件驱动或者新增第三方服务的方式来解决。
除了依靠架构师团队基于架构设计和服务实现来手动梳理出服务关系外,还可以通过技术手段实现,比如链路追踪日志会记录请求在每个服务中的调用关系,基于此可以自动化地生成服务的整体拓扑图,下图是一个示例:
图片来自MegaEase 官网
在有了上述拓扑图后,我们可以清晰的知晓整个系统的全局架构,好比有了一张地图,可以帮助我们更好的进行服务的治理和优化。
总字数:499字