数据一致性
负载均衡
健康检查
性能与容量
易用性
集群扩展性
用户扩展性
七、配置中心
在微服务架构中,服务的数量以及配置信息的日益增多,比如各种服务器参数配置、各种数据库访问参数配置、各种环境下配置信息的不同、配置信息修改之后实时生效等等,传统的配置文件方式或者将配置信息存放于数据库中的方式已无法满足开发人员对配置管理的要求,如:
安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏 。
时效性:修改配置,需要重启服务才能生效 。
局限性:无法支持动态调整:例如日志开关、功能开关 。
在微服务架构中,使用配置中心之前,上述的问题或麻烦,你肯定也会遇到过,所以,是否引入配置中心,取决于你是否有下面的需求:
配置集中化统一管理
配置实时生效
一般完善的配置中心,都会从以下两个方面设计出发,以发挥配置中心的作用 。
1)配置实时生效
传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化 。轮询频率低感知配置变化的延时就长,轮询频率高,感知配置变化的延时就短,但比较损耗性能,需要在实时性和性能之间做折中 。配置中心专门针对这个业务场景,兼顾实时性和一致性来管理动态配置 。
2)配置管理流程
配置的权限管控、灰度发布、版本管理、格式检验和安全配置等一系列的配置管理相关的特性也是配置中心不可获取的一部分 。(这也算是配置中心的高级特性作用)
1.Spring Cloud Config
Spring Cloud Config 作为 Spring Cloud 中的一个组件,其功能开放,可开发性强,常是各类配置中心自我研发的基石 。
从 Spring Cloud Config 的源码 (spring-cloud-config-server) 中,可以看出目前支持本地存储、Git 仓库存储、SVN 仓库存储、数据库存储方式,其他存储方式可参考源码自行实现即可 。
文章插图
以 Git 存储方式为例说明,Spring Cloud Config 包含 config-server、Git 和 Spring Cloud Bus 三大组件:
config-server 提供给客户端获取配置 。
Git 用于存储和修改配置 。
Spring Cloud Bus 通知客户端配置变更 。
本地测试模式下,Spring Cloud Bus 和 config-server 需要部署一个节点,Git 使用 GitHub 就可以 。在生产环境中,Spring Cloud Config,config-server 需要部署至少两个节点 。Spring Cloud Bus 如果使用 RabbitMQ,普通集群模式至少需要两个节点 。
Git 服务如果使用 GitHub 就不用考虑高可用问题,如果考虑到安全性要自建 Git 私有仓库,整体的成本比较高 。Web 服务可以部署多节点支持高可用,由于 Git 有数据的一致性问题,可以通过以下的方式来支持高可用:
Git+Keepalived 冷备模式,当主 Git 挂了可以马上切到备 Git 。
Git 多节点部署,存储使用网络文件系统或者通过 DRBD 实现多个 Git 节点的数据同步 。
2.Apollo
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景 。
Apollo 分为 MySQL,Config Service,Admin Service,Portal 四个模块:
MySQL:存储 Apollo 元数据和用户配置数据 。
Config Service:提供配置的读取、推送等功能,客户端请求都是落到 Config Service 上 。
Admin Service:提供配置的修改、发布等功能,Portal 操作的服务就是 Admin Service 。
Portal:提供给用户配置管理界面 。
本地测试 Config Service,Admin Service,Portal 三个模块可以合并一起部署,MySQL 单独安装并创建需要的表结构 。在生产环境使用 Apollo,Portal 可以两个节点单独部署,稳定性要求没那么高的话,Config Service 和 Admin Service 可以部署在一起,数据库支持主备容灾 。
文章插图
3.Nacos
Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台 。这正是 Nacos 官方给出的定义:
【微服务架构下该如何技术选型呢?】an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native Applications.
核心功能:
动态配置服务:
动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置 。动态配置消除了配置变更时重新部署应用和服务的需要 。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易 。
推荐阅读
- 在Netty服务被N次攻击之后,终于抓到现行了
- 白茶属于轻微发酵茶类,白茶属于什么茶系
- 中国礼品网服务特色简介
- |不寄哀愁寄春情
- 微商运营技巧,改变思路,玩转营销,私域流量“井喷”而出
- 微信公众号渠道二维码怎么做,微信渠道二维码添加步骤
- 如何提高企业微信权重?提升企业微信活跃度的方法有哪些?
- 成本高、获客难,餐饮企业如何在微信生态中乘风破浪?
- 全球13台根服务器,中国没有任何一台,一旦断网中国网络会瘫痪吗
- 白茶属于哪个茶类,白茶属于轻微发酵茶类