微服务架构学习与思考(13):分布式配置中心

这篇具有很好参考价值的文章主要介绍了微服务架构学习与思考(13):分布式配置中心。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微服务架构系列文章集合:https://www.cnblogs.com/jiujuan/p/17307285.html

一、配置中心的诞生

用编程语言编写应用项目时,一般都会有项目的配置文件。比如用 java 编写项目,有一个 properties 的配置文件,会把一些配置信息写入到该文本文件中,例如数据库相关的配置信息。

这也体现了软件设计的一个原则:关注点分离。把代码和配置信息相分离。

微服务架构学习与思考(13):分布式配置中心

​ (单体应用项目配置文件)

在单体应用项目中,这个配置文件一般都是静态的文本文件。项目比较小时,配置信息不是很多、变动也少,这时使用静态配置文件足矣。修改了配置后,重启一下应用就可以了。

随着项目的发展壮大,业务增多,用户增多,功能增多,原来的大单体应用项目会慢慢的拆分为多个独立的应用项目,然后向着微服务架构发展演变。

微服务架构学习与思考(13):分布式配置中心

​ (大单体应用拆为为各个独立应用)

这样,随着大单体项目拆分为一个一个独立应用项目时,配置文件也会跟着项目迁移,每个项目都有自己的配置文件,配置文件变得分散。

假如业务要增加一个功能,而实现这个功能需要协调多个项目开发,并修改各自配置时,就需要到一个一个项目上去修改配置,然后重启应用以使配置生效。

这样做是可行的,但是有没有可以改进的地方?让配置修改更加高效,而不需要一个文件一个文件去修改,这样太低效了。

如何从系统架构角度出发,构建灵活、易扩展的系统,快速应对配置需求的变化。

能不能独立出一个存储配置的系统?能不能把这些配置信息集中存储在一个地方,修改时只需在一个地方修改,然后动态分发给相应的应用项目?当然可以,这就是配置中心

微服务架构学习与思考(13):分布式配置中心

随着多个项目向着微服务架构的进化,应用项目分拆为更多的小服务,由各种服务来给应用项目提供功能,服务越多,配置信息也越多,配置中心也需要更多功能才能满足需求,配置中心也会向着分布式配置管理中心进化。

二、静态配置文件的问题

在业务量比较小的单体应用中,静态文本配置文件使用是没有大的问题。但是随着业务逐渐发展壮大,对大单体拆分为多个应用,就会产生一些问题:

  • 配置文件分散,修改起来比较麻烦
  • 配置生效不及时,修改后需要重启应用以使配置生效
  • 多环境配置,无法区分多个配置环境,比如开发的环境,测试的环境,预发布的环境,生产的环境
  • 各种配置信息多,难以管理,比如分布式限流的配置信息,各种监控的配置信息等等配置
  • 配置信息无法回滚,没有类似版本控制功能的话,就无法进行回滚

等等各种问题。

三、配置中心功能

上面是静态配置文件最初出现的问题,后面随着应用的拆分、随着业务功能越来越多,对配置的功能要求也逐渐变多:

  • 版本管理功能,配置的发布有版本功能可支持回滚,也进行信息回溯
  • 配置信息回滚
  • 灰度发布功能,支持功能灰度发布
  • 集中统一管理,对多环境配置信息管理,比如开发、测试、生产等各种环境的配置信息
  • 实时生效,修改完后及时下发给对应的应用,应用可以进行热更新配置,不用重启应用
  • 推送配置信息的轨迹
  • 集群功能,有集群功能,能扩容,能容灾,高可用
  • 客户端配置更新状态跟踪
  • 权限的管理,变更配置信息的审计
  • UI界面管理

等等功能。

配置中心的这些功能,解决了静态配置文件出现的问题,而且还新增了很多额外的功能。

四、开源配置中心

有很多开源的软件可以作为配置中心使用,比如下面这些:

  • Apollo
  • Nacos
  • ETCD
  • Consul
  • k8s ConfigMap

当然还有很多其他的,比如 Spring Cloud Config,Disconf,Zookeeper 等。

下面介绍下 Apollo 分布式配置中心。

五、Apollo分布式配置中心

Apollo(阿波罗)介绍

微服务架构学习与思考(13):分布式配置中心

​ (来源:https://github.com/apolloconfig/apollo/ apollo github)

Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

背景:

随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……

对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……

在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。Apollo配置中心应运而生!

--- 来自 Apollo 官网

Apollo 功能特性

  • 统一管理不同环境、不同集群的配置
  • 配置修改实时生效(热发布)
  • 版本发布管理
  • 灰度发布
  • 权限管理、发布审核、操作审计
  • 客户端配置信息监控
  • 多种客户端,并提供Java和.Net原生客户端
  • 提供开放平台API
  • UI 界面管理

更多信息请查看文档:https://www.apolloconfig.com/#/zh/design/apollo-introduction

架构设计

Apollo基础模型

  1. 用户在配置中心对配置进行修改并发布
  2. 配置中心通知Apollo客户端有配置更新
  3. Apollo客户端从配置中心拉取最新的配置、更新本地配置并通知到应用

微服务架构学习与思考(13):分布式配置中心

架构模块

五个主要核心模块:

  • Config Service

    • 提供配置的读取、推送等功能
    • 服务对象是Apollo客户端
  • Admin Service

    • 提供配置的修改、发布等功能
    • 服务对象是Apollo Portal(管理界面)
  • Meta Server

    • Meta Server用于封装Eureka的服务发现接口
  • Client

    • 实时获取配置信息
    • 通过访问 Meta Server 获取 Config Service 服务列表
    • 在Client侧会做load balance、错误重试
  • Portal

    • 配置管理界面 UI
    • 通过 Meta Server 获取 Admin Service 服务列表
    • 在 Portal侧会做 load balance、错误重试

微服务架构学习与思考(13):分布式配置中心

以上信息和图片来源:https://www.apolloconfig.com/#/zh/design/apollo-design

Apollo部署

这部分请查看部署文档:https://www.apolloconfig.com/#/zh/deployment/quick-start

Apollo文档

开源地址和文档:

  • https://www.apolloconfig.com/#/zh/README 中文文档
  • https://github.com/apolloconfig/apollo/ 开源地址

欢迎大家留言讨论和点推荐鼓励


也可以到我的公众号:九卷技术录:微服务架构学习与思考(13):分布式配置中心 继续讨论文章来源地址https://www.toymoban.com/news/detail-462476.html

六、参考

  • https://github.com/apolloconfig/apollo/
  • https://www.apolloconfig.com/#/zh/
  • https://github.com/alibaba/nacos
  • https://github.com/etcd-io/etcd
  • https://github.com/hashicorp/consul
  • https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/

到了这里,关于微服务架构学习与思考(13):分布式配置中心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 9.4. 分布式与微服务架构

    在本章节中,我们将介绍分布式系统和微服务架构的基本概念。分布式系统解决了单体应用面临的可扩展性、高可用性等问题,而微服务架构进一步提升了系统的可维护性和灵活性。 9.4.1. 分布式系统基本概念 分布式系统是由多个独立的计算节点组成的系统,这些节点通过网

    2024年02月08日
    浏览(53)
  • 微服务【分布式架构&认识微服务&SpringCloud】第1章

    目录 1,认识微服务 1.1,单体架构 1.2,分布式架构 1.3,微服务 1.4,SpringCloud 1.5,总结 💂 个人主页:  爱吃豆的土豆 🤟 版权:  本文由【爱吃豆的土豆】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、 欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 🏆 人

    2023年04月08日
    浏览(56)
  • 聊聊分布式架构08——SpringBoot开启微服务时代

    目录 微服务架构时代 快速入门 入门详解 SpringBoot的自动配置 石器时代:XML配置bean 青铜时代:SpringConfig 铁器时代:AutoConfigurationImportSelector 手写简单Starter SpringApplication启动原理 微服务架构时代 Spring Boot的出现与微服务架构有关,它是Spring Framework的一部分,旨在简化开发独

    2024年02月06日
    浏览(49)
  • 分布式、服务化的ERP系统架构设计

    ERP 之痛        曾几何时,我混迹于电商、珠宝行业4年多,为这两个行业开发过两套大型业务系统(ERP)。作为一个ERP系统,系统主要功能模块无非是订单管理、商品管理、生产采购、仓库管理、物流管理、财务管理等等。作为一个管理系统,大家的一般开发习惯就是使用

    2024年02月11日
    浏览(56)
  • 分布式软件架构——服务端缓存的三种属性

    在透明多级分流系统中,我们以流量从客户端中发出开始,以流量到达服务器集群中真正处理业务的节点结束。一起探索了在这个过程中与业务无关的一些通用组件,包括DNS、CDN、客户端缓存,等等。 实际上,服务端缓存也是一种通用的技术组件,它主要用于减少多个客户端

    2024年02月07日
    浏览(57)
  • 应用架构——集群、分布式、微服务的概念及异同

    一、什么是集群?         集群是指将多台服务器集中在一起, 每台服务器都实现相同的业务,做相同的事;但是每台服务器并不是缺 一不可,存在的主要作用是缓解并发能力和单点故障转移问题。 集群主要具有以下特征: (1)、 伸缩性         在一些大系统中,

    2024年02月03日
    浏览(50)
  • 微服务架构-服务网关(Gateway)-权限认证(分布式session替代方案)

    前面我们了解了Gateway组件的过滤器,这一节我们就探讨一下Gateway在分布式环境中的一个具体用例-用户鉴权。 从我们开始学JavaEE的时候,就被洗脑式灌输了一种权限验证的标准做法,那就是将用户的登录状态保存到HttpSession中,比如在登录成功后保存一对key-value值到session,

    2024年02月16日
    浏览(45)
  • 下一代服务架构:单体架构-->分布式架构-->微服务(DDD)-->软件定义架构(SDF with GraphEngine)

    参考:自己实现一个SQL解析引擎_曾经的学渣的博客-CSDN博客    

    2024年02月12日
    浏览(58)
  • 四大软件架构:掌握单体、分布式、微服务、Serverless 的精髓

    简介: 如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存、晋升空间。这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面。 单体架构比较初级,典型的三级架构,前端(Web/手机端)+中间业务逻

    2024年01月17日
    浏览(45)
  • Spring Cloud微服务架构:实现分布式系统的无缝协作

    🎉欢迎来到架构设计专栏~Spring Cloud微服务架构:实现分布式系统的无缝协作 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水

    2024年02月08日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包