springcloudalreadyJava

微服务-常见配置中心工作原理

2022-11-27  本文已影响0人  互联网高级架构师

1、配置中心基础

1.1 为什么要用配置中心?

1.2 配置中心支持功能

2、常用配置中心

如果只要能作为分布式存储的服务都作为配置中心,那选择途径就太多了, 比如ZookeeperETCD,所以需要提前说明一下。

但是我们选择配置中心时,为什么不优先考虑Zookeeper和ETCD,因为以下两点原因:

所以给大家介绍的配置中心,主要是以下4种,分别为 Disconf、Spring Cloud Config、Apollo 和 Nacos

2.1 Apollo

Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,具备规范的权限、流程治理等特性。

2.1.1 Apollo框架

Apollo的框架有点复杂,如果不考虑分布式微服务架构中的服务发现问题,Apollo的最简架构如下图所示:

这里面包含Apollo框架的4个核心模块:

调用流程:

加上分布式微服务架构中的服务发现,真正的Apollo框架如下:

如果你了解RPC和注册中心,这幅图其实不难理解:

所以搞NginxLB + Meta Server,其实就是为了找Eureka中的机器列表配置,Client和Portal拿到这些机器配置,就可以发起调用了,最后就回到我们前面的简图,是不是So Easy!

2.1.2 Apollo特性

2.2 Spring Cloud Config

2014年9月开源,Spring Cloud 生态组件,可以和Spring Cloud体系无缝整合。

2.2.1 工作原理

应用架构图:

工作流程:

2.2.2 特点

2.3 Nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

2.1 系统架构

2.2 Nacos 主要特点

服务发现和服务健康监测:

Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。

Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。

动态配置服务:

动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。

动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。

配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

动态 DNS 服务:

动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。

Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表。

2.3 小节

Nacos是阿里开源的,支持基于 DNS 和基于 RPC 的服务发现。

Nacos的注册中心支持CP也支持AP,对他来说只是一个命令的切换,随你玩,还支持各种注册中心迁移到Nacos,反正一句话,只要你想要的他就有。

Nacos除了服务的注册发现之外,还支持动态配置服务,一句话概括就是Nacos = Spring Cloud注册中心 + Spring Cloud配置中心

3、配置中心对比和选型

下面对比一下 Spring Cloud Config、Apollo 和 Nacos。

功能特性 重要性 spring-cloud-config Apollo disconf Nacos
静态配置管理 基于file 支持 支持 支持
动态配置管理 支持 支持 支持 支持
统一管理 无,需要github 支持 支持 支持
多环境 无,需要github 支持 支持 支持
本地配置缓存 支持 支持 支持
配置锁 支持 不支持 不支持 不支持
配置校验
配置生效时间 重启生效,或手动refresh生效 实时 实时 实时
配置更新推送 需要手工触发 支持 支持 支持
配置定时拉取 支持 配置更新目前依赖事件驱动, client重启或者server端推送操 支持
用户权限管理 无,需要github 支持 支持 支持
授权、审核、审计 无,需要github 支持 支持
配置版本管理 Git做版本管理 界面上直接提供发布历史和回滚按钮 操作记录有落数据库,但无查询接口 界面操作,支持回滚
配置合规检测 不支持 支持(但还需完善) 支持
实例配置监控 需要结合spring admin 支持 支持,可以查看每个配置在哪些机器上加载 支持
灰度发布 不支持 支持 不支持部分更新 支持
告警通知 不支持 支持,邮件方式告警 支持,邮件方式告警 支持

3.1 配置中心对比

3.2 配置中心选型

作者:hsfxuebao
链接:https://juejin.cn/post/7170484858538426399
来源:稀土掘金

上一篇 下一篇

猜你喜欢

热点阅读