微服务架构之「 配置中心 」


戳蓝字“CSDN云计算”关注我们哦!

640?wx_fmt=jpeg

作者:奎哥

来源:不止思考  


在微服务架构的系列文章中,前面已经通过文章《微服务架构之「服务网关 」》介绍过了在微服务中服务网关的原理和应用,今天这篇文章我们继续来聊一聊微服务中另外一个重要模块:「 配置中心 」。后面还会继续介绍 服务框架、服务监控、服务治理等。还是那句话,只有将这些基础设施弄清楚了,微服务实践的道路才能走的稳、走的远。


「配置中心」,顾名思义,就是用来统一管理项目中所有配置的系统。虽然听起来很简单,但也不要小瞧了这个模块。如果一个中型互联网项目,不采用配置中心的模式,一大堆的各类配置项,各种不定时的修改需求,一定会让开发同学非常头疼且管理十分混乱。我认为甚至可以直接用 “一个项目中是否有无采用「配置中心」” 这一粗略的条件,来判断一个互联网研发团队是否规范和成熟。


01 为什么需要「配置中心」?


我们先来看看在没有「配置中心」的传统项目中,我们是怎么处理各类配置参数问题的:


  1. 一般是静态化配置。大多数在项目中单独写一个配置文件,例如 "config.conf",然后将各类 参数配置、应用配置、环境配置、安全配置、业务配置 都写到这个文件里。当项目代码逻辑中需要使用配置的时候,就从这个配置文件中读取。这种做法虽然简单,但如果参数需要修改,就非常的不灵活,甚至需要重启运行中的项目才能生效。相信大多数开发同学都深有体会。

  2. 配置文件无法区分环境。由于配置文件是放在项目中的,但是我们项目可能会有多个环境,例如:测试环境、预发布环境、生产环境。每一个环境所使用的配置参数理论上都是不同的,所以我们在配置文件中根据不同环境配置不同的参数,这些都是手动维护,在项目发布的时候,极其容易因开发人员的失误导致出错。

  3. 配置文件过于分散。如果一个项目中存在多个逻辑模块独立部署,每个模块所使用的配置内容又不相同,传统的做法是会在每一个模块中都放一个配置文件,甚至不同模块的配置文件格式还不一样。那么长期的结果就是配置文件过于分散混乱,难以管理。

  4. 配置修改无法追溯。因为采用的静态配置文件方式,所以当配置进行修改之后,不容易形成记录,更无法追溯是谁修改的、修改时间是什么、修改前是什么内容。既然无法追溯,那么当配置出错时,更没办法回滚配置了。


上面只是拿配置文件的形式来举例,有的项目会采用数据库配置,虽然灵活一点,但是依旧不能完全解决上述问题。既然传统的项目配置有这么多弊端,那我们看看「配置中心」的方案是如何解决这些痛点的:


「配置中心」的思路就是把项目中各种配置、各种参数、各种开关,全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。当各个服务需要获取配置的时候,就来「配置中心」的接口拉取。当「配置中心」中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动态更新。


那么,按照上述思路,我们理想中的「配置中心」应该具备如下特点:


  • 配置集中管理、统一标准

  • 配置与应用分离

  • 实时更新

  • 高可用


具有上述特性的「配置中心」是如何解决上面传统配置所面临的问题的呢?


  1. 采用“配置集中管理”,可以很好的解决传统的“配置文件过于分散”的问题。所有的配置都集中在配置中心这一个地方管理,不需要每一个项目都自带一个,这样极大的减轻了开发成本。

  2. 采用“配置与应用分离”,可以很好的解决传统的“配置文件无法区分环境”的问题,配置并不跟着环境走,当不同环境有不同需求的时候,就到配置中心获取即可,极大的减轻了运维部署成本。

  3. 具备“实时更新”的功能,就是用来解决传统的“静态化配置”的问题。线上系统需要调整参数的时候,只需要在配置中心动态修改即可。

  4. 既然配置都统一管理了,那配置中心在整个系统中的地位就非常重要了,一旦配置中心不能正常提供服务,就可能会导致项目整体故障,因此“高可用”就是配置中心又一个很关键的指标了。

02 「配置中心」的原理与应用?


通过上面的介绍,其实就可以了解到「 配置中心 」的原理不是很复杂。其核心功能也不多,主要是:


  1. 实现配置的记录

  2. 实现配置的读取、更新、取消

  3. 实现配置的查看


但是围绕着这几个核心功能,我们还需要保障高可行、要实现实时更新、要能方便的使用,还希望有权限管理的功能、操作审计的功能等等,加上这些周边辅助功能之后,一个完善的「 配置中心 也就不那么简单了。


我们再来看一下在实际项目中如何去选型和应用:


虽然配置中心的核心原理并不复杂,我们可以根据原理自己去实现一个配置中心,但是如果没有特殊需求,还是不建议重复造轮子了,毕竟业内已经有很多成熟的开源方案可以直接选用了。下面就列举几个比较热门的配置中心开源组件给大家参考:


  • Apollo

    Apollo是由携程开源的分布式配置中心。

    Apollo的特点有很多,比如:配置更新之后可以实时生效,还可以支持灰度发布功能。并且能对所有的配置进行版本管理、操作审计等功能,提供开放平台API。另外由于Apollo使用的人很多,所以网上的资料也非常的丰富,并且github上资料也写的很详细。


640?wx_fmt=jpeg

  • 上面即是Apollo的基础模型,看结构很简单。但是其功能很多,之前说过配置中心对高可用的要求很高。下面可以继续看一下Apollo的架构:

    640?wx_fmt=jpeg更多的Apollo资料可以直接去github上查看,可以说官方文档是非常体贴的。

  • Spring Cloud Config

    看名字就知道,这是Spring Cloud中带的配置中心组件。也正是这个原因,所以它和Spring是无缝集成,使用起来非常方便。并且它的配置存储支持Git,不过它没有可视化的操作界面,配置的生效也不是实时的,需要重启或去刷新。所以比较适用于小型项目快速上手。

    640?wx_fmt=pngSpring Cloud Config包含了Config Client和Config Server两部分,Config Server 实现配置文件的存储,对外以接口的形式提供获取配置文件,然后Config  Client通过这些接口获取数据。

  • Disconf

    Disconf是由百度开源的分布式配置中心。其实很多一线大厂都有开源自己的配置中心组件,这里挑出百度的Disconf也是因为网上比较火热,易用性也还不错,项目也是托管在github上很容易找到。它是基于Zookeeper来实现配置变更后实时通知和生效的。

    640?wx_fmt=jpeg


以上,就是对微服务架构中「 配置中心」的一些思考。


640?wx_fmt=png


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:

  • 屡试不爽的互联网架构三大马车!

  • 2019年技术盘点容器篇(四):来自京东云的技术问答 | 程序员硬核评测

  • 《长安十二时辰》科技梗揭秘!唐朝就能看到 5G 踪影?

  • 天才程序员: "开发 CryptoKitties 难不难? 只需掌握这3点..."

  • 教你如何用Python实现文本摘要模型(附教程)

  • 微软 CTO 韦青:5G 与亚里士多德

  • 什么限制了GNN的能力?首篇探究GNN普适性与局限性的论文出炉!


    真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

助力APP尽情“撒币”!阿里云正式上线移动直播问答解决方案

摘要: 2018年伊始,互联网圈就刮起了一阵“大佬狂撒币,网友喜答题”的热潮,为了助力企业紧握风口,阿里云推出一站式移动直播问答解决方案。通过稳定高性能的计算基础设施和可扩展的直播问答系统架构,实现技术…

阿里云云数据库开了一个未来大会,谈了谈2038年的数据库趋势

摘要: “未来的某一天,量子数据库是我们改造其他星球的关键技术之一。” 1月17日,在北京举行的阿里云2018云数据库智能未来大会上,阿里云高级产品专家王义成如是说。 除了阿里云的全新一代NoSQL向NewSQL融合,NewSQL产品…

《游戏行业DDoS攻击解决方案》重磅发布

摘要: 游戏行业一直是竞争、攻击最为复杂的一个江湖。曾经多少充满激情的创业团队、玩法极具特色的游戏产品,被互联网攻击的问题扼杀在摇篮里;又有多少运营出色的游戏产品,因为遭受DDoS攻击,而一蹶不振。游戏行业在防御…

红帽:将开源进行到底

戳蓝字“CSDN云计算”关注我们哦!2019年7月9日,IBM史上最大的一笔收购案终于尘埃落定,IBM以每股现金190.0美元,完成对红帽所有已发行和流通在外普通股的收购交易,总股本价值约340亿美元。至此,红帽这家全球…

第7篇:Flowable-Modeler集成之Flowable源码编译

接上一篇: 第6篇:Flowable-Modeler详述之常见问题Table act_ge_property doesn’t exist https://blog.csdn.net/weixin_40816738/article/details/102899408 文章目录一、背景二、Flowable源码下载2.1. 参考文章:2.2. Flowable完整源码编译2…

众安每秒3.2万张保单的背后,阿里云输出了什么能力?

摘要: 当传统保险公司还在将“开门红”作为重中之重提前几个月做准备的时候,互联网保险公司关注的则是“双十一”和“双十二”。2017年双十一当日,刚刚在香港上市的众安保险的保单量突破3亿,比2014年增长超过200%。 点此查看原文&…

第8篇:Flowable-Modeler集成之Flowable-modeler源码编译

接上一篇: 第7篇:Flowable-Modeler集成之Flowable源码编译 https://blog.csdn.net/weixin_40816738/article/details/102899693 文章目录一、背景二、源码下载三、思路分析与目标3.1. 分析modeler3.2. Modeler模块编译,启动3.2.1. POM修改3.2…

iOS unrecognized selector crash 自修复技术实现与原理解析

摘要: 在开发中 unrecognized selector sent to instance XXXXX 是非常常见的 crash 类型。这篇博文主要介绍如何在客户端自修复该问题,并进行原理解析。 作者介绍:阿里云-移动云-大前端团队。 点此查看原文:http://click.aliyun.…

阿里测试环境运维及研发效率提升之道

摘要: 生产环境最关注的就是稳定,测试环境更关注的是研发效率,如何从一行代码最快的保证质量发到线上去,这个是我们测试环境最关注的。在全球运维大会上,阿里巴巴研发效能事业部运维中台技术专家——刘湘疆&#xff08…

首批8款5G手机获3C认证:华为占4款;IBM获AT&T“几十亿美元”云计算合同;马库斯:未来薪酬将以Libra发放...

戳蓝字“CSDN云计算”关注我们哦!嗨,大家好,重磅君带来的【云重磅】特别栏目,如期而至,每周五第一时间为大家带来重磅新闻。把握技术风向标,了解行业应用与实践,就交给我重磅君吧!重…

第9篇:Flowable-Modeler集成以及集成代码下载

接上一篇: 第8篇:Flowable-Modeler集成之Flowable-modeler源码编译 https://blog.csdn.net/weixin_40816738/article/details/102901026 文章目录一、背景二、代码修改,去除认证2.1. 修改拦截请求2.2. 修改用户查询信息2.3. 账号查询请求修改…

如何保障研发质量不踩坑?阿里技术专家教你几招

摘要: 面对自动化测试成本高、测试不稳定、测试无法严控发布质量等常见研发过程中的测试问题时,企业如何避免?如何保障研发质量?阿里巴巴研发效能事业部-研发协同平台高级技术专家李帅(花名焦霸)&#xff0…

保障了罗振宇跨年演讲的PTS铂金版正式上线,产品体验全新升级

摘要: 虽然2018年的跨年已经过去,但是对于今年各种新颖的跨年形式,不少人仍然意犹未尽。比如,罗振宇在深圳卫视和优酷直播的跨年演讲《时间的朋友》。据悉,当天现场参与人数近万,观看直播的观众多达百万。而…

第10篇:Flowable-BPMN操作流程部署、启动

接上一篇: 第9篇:Flowable-Modeler集成以及集成代码下载 https://blog.csdn.net/weixin_40816738/article/details/102901208 文章目录一、背景二、方案设计2.1. 流程部署2.2. 模型的转换2.3. 启动流程三、BPMN业务流程文件3.1. 启动flowable-idm3.2. 启…

那些年我们用过神级的代码注释

戳蓝字“CSDN云计算”关注我们哦!来自:Blankj | 责编:乐乐链接:http://github.com/Blankj/awesome-comment正文 写在前面的话:一时兴起就收集了以下神注释,希望能为广大ITer带来快乐,缓解你们工…

AliOS Things 组件系统(uCube)

摘要: AliOS Things 是阿里巴巴提供的物联网操作系统,可以在不同的设备上运行不同的功能,甚至相同的设备运行不同的功能,AliOS Things 基于组件管理: 1、 组件功能单一,复用组件提供的功能,比如…

第11篇:Flowable-BPMN部署常见问题没有对ACT_RE_PROCDEF表进行插入操作

上一篇: 第10篇:Flowable-BPMN操作流程部署、启动 https://blog.csdn.net/weixin_40816738/article/details/102902348 文章目录一、问题描述二、问题定位三、解决方案四、验证结果一、问题描述 流程在部署的时候调用服务RepositoryService,…

AliOS Things lorawanapp应用介绍

摘要: 文本旨介绍AliOS Things的lorawanapp的示例,完成一个LoRaWAN网络的构建和数据传输,并通过该示例让大家对AliOS Things有一个初步的了解。 点此查看原文:http://click.aliyun.com/m/40591/ AliOS Things 是 AliOS 家族旗下的…

漫画:什么是最小生成树?

戳蓝字“CSDN云计算”关注我们哦!作者 | 小灰来源 | 程序员小灰————— 第二天 —————————————————首先看看第一个例子,有下面这样一个带权图:它的最小生成树是什么样子呢?下图绿色加粗的边可以把所有顶点连…

一种基于AliOS Things的uData感知设备软件框架

摘要:   uData框架设计之初的思想是基于传统sensorhub概念基础之上的,结合IoT的业务场景和AliOS Things物联网操作系统的特点设计而成的一个面对IoT的感知设备处理框架。 点此查看原文:http://click.aliyun.com/m/40592/ uData诞生背景uDat…