系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。
前面章节的内容主要涉及的是:服务化、数据库、缓存。用好了这三样技术,架构基本就不会有什么问题了,但是随着业务不断地复杂化,架构不断地演进,达到亿级流量,解耦 就会成为复杂架构中的重点内容,本章的第一个部分就是关于架构中需要重点关注解耦的地方。
问题引入
架构到后期会是多个站点调用多个服务,服务之间也会有相互调用。如上图所示,为了确保user-service的高可用,它会进行集群部署,ip1、ip2、ip3都向上游提供服务,任何一个节点宕机不会影响整体的可用性。
那么调用方如何维护下游集群的配置,当集群增减时,调用方是否会有感知呢?
这里面有两个核心痛点,上下游都有:
- 上游痛:扩容的是下游,改配置重启的是上游(耦合,典型的反向依赖)
- 下游痛:不知道谁依赖于自己(难以实施服务治理)
关于上游维护下游集群的配置通常有三种策略,分别是:配置私藏、全局配置文件、配置中心,它们是逐步演进和优化的,其中配置中心也是最复杂的。