从 0 开始学微服务
胡忠想
微博技术专家
64643 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
开篇词 (1讲)
结束语 (1讲)
从 0 开始学微服务
15
15
1.0x
00:00/00:00
登录|注册

22 | 如何管理服务配置?

分组流量切换
业务动态降级
资源服务化
配置变更订阅
配置查看
配置反注册
配置注册
配置抽离到单独的配置文件
配置定义在代码里
Zookeeper、Consul、etcd作为服务的注册中心,能否作为配置中心?为什么?
选择配置中心要根据业务复杂度和需求
根据实际情况决定是否需要配置中心
Apollo
Disconf
Spring Cloud Config
应用场景
功能
配置变更时自动从配置中心拉取最新的配置信息
服务启动时自动从配置中心中拉取所需的配置
集中管理服务的各种配置
需要重新走一遍代码或者配置的发布流程来修改配置
配置存在应用程序的本地
思考题
总结
开源配置中心与选型
配置中心
拆分为微服务架构后,每个系统都有自己的配置
如何管理服务配置?

该思维导图由 AI 生成,仅供参考

在拆分为微服务架构前,曾经的单体应用只需要管理一套配置;而拆分为微服务后,每一个系统都有自己的配置,并且都各不相同,而且因为服务治理的需要,有些配置还需要能够动态改变,以达到动态降级、切流量、扩缩容等目的,这也是今天我要与你探讨的,在微服务架构下服务配置如何管理的问题。

本地配置

服务配置管理最简单的方案就是把配置当作代码同等看待,随着应用程序代码一起发布。比如下面这段代码用到了开源熔断框架 Hystrix,并且在代码里定义了几个配置,一个是线程的超时时间是 3000ms,一个是熔断器触发的错误比率是 60%。
@HystrixCommand(fallbackMethod = "getDefaultProductInventoryByCode",
commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "3000"),
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value="60")
}
)
public Optional<ProductInventoryResponse> getProductInventoryByCode(String productCode)
{
....
}
还有一种方案就是把配置都抽离到单独的配置文件当中,使配置与代码分离,比如下面这段代码。
@HystrixCommand(commandKey = "inventory-by-productcode", fallbackMethod = "getDefaultProductInventoryByCode")
public Optional<ProductInventoryResponse> getProductInventoryByCode(String productCode)
{
...
}
相应的配置可以抽离到配置文件中,配置文件的内容如下:
hystrix.command.inventory-by-productcode.execution.isolation.thread.timeoutInMilliseconds=2000
hystrix.command.inventory-by-productcode.circuitBreaker.errorThresholdPercentage=60
无论是把配置定义在代码里,还是把配置从代码中抽离出来,都相当于把配置存在了应用程序的本地。这样做的话,如果需要修改配置,就需要重新走一遍代码或者配置的发布流程,在实际的线上业务当中,这是一个很重的操作,往往相当于一次上线发布过程,甚至更繁琐,需要更谨慎。
这时你自然会想,如果能有一个集中管理配置的地方,如果需要修改配置,只需要在这个地方修改一下,线上服务就自动从这个地方同步过去,不需要走代码或者配置的发布流程,不就简单多了吗?没错,这就是下面要讲的配置中心。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

在微服务架构下,服务配置管理变得更加复杂,每个系统都有自己的配置,有些配置需要动态改变以实现动态降级、切流量、扩缩容等目的。本文探讨了服务配置管理的问题,并介绍了两种管理配置的方式:本地配置和配置中心。本地配置将配置与代码绑定,需要重新发布代码或配置,而配置中心则提供了集中管理配置的功能,实现了配置的动态更新。文章详细介绍了配置中心的功能,包括配置存储结构、配置注册、反注册、查看和变更订阅。此外,还列举了配置中心的典型应用场景,如资源服务化、业务动态降级和分组流量切换。最后,文章介绍了三种开源配置中心的选型建议,包括Spring Cloud Config、Disconf和Apollo。总的来说,本文通过对服务配置管理的问题和解决方案的介绍,为读者提供了在微服务架构下管理服务配置的思路和方法,以及开源配置中心的选型建议。 在微服务架构下,服务配置管理变得更加复杂,每个系统都有自己的配置,有些配置需要动态改变以实现动态降级、切流量、扩缩容等目的。本文探讨了服务配置管理的问题,并介绍了两种管理配置的方式:本地配置和配置中心。本地配置将配置与代码绑定,需要重新发布代码或配置,而配置中心则提供了集中管理配置的功能,实现了配置的动态更新。文章详细介绍了配置中心的功能,包括配置存储结构、配置注册、反注册、查看和变更订阅。此外,还列举了配置中心的典型应用场景,如资源服务化、业务动态降级和分组流量切换。最后,文章介绍了三种开源配置中心的选型建议,包括Spring Cloud Config、Disconf和Apollo。总的来说,本文通过对服务配置管理的问题和解决方案的介绍,为读者提供了在微服务架构下管理服务配置的思路和方法,以及开源配置中心的选型建议。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(26)

  • 最新
  • 精选
  • 老巫
    刚开始搭建玩玩,我觉得consul可以,它首页的KV模块就是做配置的吧。 大力推荐携程的配置中心,好用简单!

    作者回复: 是的

    2018-10-11
    12
  • batman
    你好,怎么定义中小团队?

    作者回复: 没有专门的架构开发团队吧

    2018-10-18
    4
  • Douglas
    胡老师,注册中心配置修改后,应用需要重新加载的吧,比去数据库线程池,一般在应用启动后就会创建好指定数量的线程,如果通过配置中心,降低了数量,多余的线程该如何处理呢?

    作者回复: 这种配置不建议动态修改

    2018-10-11
    4
  • 楼下小黑哥
    在前面我讲到 Zookeeper、Consul、etcd 作为服务的注册中心时,可以提供强一致性的服务发现功能,那么它们能够作为配置中心吗?为什么 Zookeeper 等服务中心,可以作为配置中心,实现基本配置注册,配置订阅等功能,但是性能较弱,具有局限性。 就拿携程实现 Apollo 来说,作为配置中心,我们需要实现配置中心是弱依赖,即使配置中心宕机,应用正常运行,客户端需要实现缓存配置数据。其次需要做好备份,且有后台可以方便修改配置项。再次,修改完配置项,可以及时通知客户端修改。 而上述功能 Zookeeper 等注册中心不能提供或者说需要基于Zookeeper二次开发,所以 Zookeeper 等注册中心不适宜当配置中心。
    2018-10-22
    12
  • Zerone
    比如调用下面的接口请求就会返回配置项 global.property 中 Key 为 reload.locations 的配置值。 curl "http://ip:port/config/service?action=getSign&group=global.property" 不是返回配置值,是返回sign 值吧
    2019-03-28
    4
  • Liam
    consul就可以作为配置中心,不过配置要分成启动时依赖和非启动依赖,前者是不可动态修改的
    2018-10-23
    3
  • 菠萝吹雪—Code
    我的理解:Zookeeper、Consul、etcd 这三个应该是 强一致性的,属于CP。一个节点不可用,会造成这个集群的不可用,这在系统中是不能接受的
    2021-07-01
    2
  • 熊猫酒仙
    zk直接作为配置中心,各服务端需要比较多的适配吧,毕竟zk的通知变更不能太依赖了,这样一来对业务侵入性大了一点
    2018-10-12
    1
  • XXL
    我司就是用的zk作为配置中心的,不晓得有什么不合适的...
    2018-10-11
    1
  • 王维
    现在是2023年,新的配置中心有nacos了
    2023-03-03归属地:湖南
收起评论
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部