# 《Seckill秒杀系统》第98章:凌乱的服务配置与解决方案

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:了解配置中心的实现原理,重点掌握配置中心在实际项目中的落地实现方案,并能够灵活将实现方案应用到自身实际项目中。

大家好,我是冰河~~

目前,秒杀系统中各个微服务的配置还是散乱配置在各个微服务内部,每个微服务中都有单独的一份配置文件,但是这些配置文件存在相同的部分,也有不同的部分,如果我们需要修改各个微服务中相同的配置项,则需要在每个微服务中都修改一遍,费时费力,不好维护,有遗漏的风险。

# 一、前言

秒杀系统交易链路上每个微服务中单独存储了一份自己的全量配置文件,配置文件中存在各个微服务相同的配置项,也存在不同的配置项,这就导致如果需要修改各个微服相同的配置项时,每个微服务的配置都要修改一遍。那么,有没有什么方案统一存储这些相同的配置项,只需要修改一处所有微服务都生效呢?

# 二、本章诉求

对比介绍散乱存储配置与统一化存储配置的区别,给出配置中心的解决方案,通过对比多种配置中心,根据实际业务选择最合适的配置中心,随后重点介绍Nacos配置中心。通过本文的介绍,了解配置中心的实现原理,重点掌握配置中心在实际项目中的落地实现方案,并能够灵活将实现方案应用到自身实际项目中。

# 三、群魔乱舞

当我们的项目采用微服务架构后,原本单一的项目会被拆分为一个个小的微服务。原来项目中的配置文件就需要在每个微服务下都要存储一份,这些配置文件中的内容大部分都是相同的,只有个别的配置项不同。就拿数据库配置来说吧,如果每个微服务使用的技术栈都是相同的,则每个微服务中关于数据库的配置几乎都是相同的,有区别的地方可能就是:数据库连接,用户名和密码,如图98-1所示。


当项目采用微服务架构后,原本在单体项目中的配置文件就会散落在各个微服务中,如果不对这些散落的配置文件进行处理,就会造成各种各样的问题。总结起来,这些问题主要体现在如下几个方面。

(1)配置文件散落在各个微服务项目中,随着整体项目的业务越来越复杂,后续会新增更多的微服务项目,微服务项目越来越多,则散落在微服务中的配置文件也会越来越多,后续会变得难以统一维护和管理。

(2)配置文件散落在各个微服务项目中,还有一个非常棘手的问题,那就是修改配置文件非常麻烦。需要我们手动去修改每个微服务下的配置文件,稍有不慎,还会增加微服务项目出错的风险。

(3)一般情况下,企业的项目发布环境包含开发环境、测试环境、预发布环境、生产环境。每个环境都需要对应不同的配置文件,如果不对这些配置文件进行统一管理,则每次发布到不同的环境时,都需要我们手动去修改每个微服务的配置文件,维护起来也是非常繁琐的。

(4)在微服务中,手动修改了配置文件之后,修改后的具体的配置项无法在微服务项目中实时更新。每次修改配置文件后,都需要重新启动微服务项目。不管是从开发角度,还是从运维角度,都是非常不友好的。

# 四、分久必合

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码