这是我参与8月更文挑战的第23天,活动详情查看:8月更文挑战
- 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
- 📢本文作者:由webmote 原创,首发于 【掘金】
- 📢作者格言: 生活在于折腾,当你不折腾生活时,生活就开始折腾你,让我们一起加油!💪💪💪
1.Apollo简介
Apollo配置是携程框架组开源的一个配置中心,其不依赖于Java Sprint,但对Java Sprint支持度良好,并且也支持.net core,是跨界配置中心的成熟大作。
其具有良好的前端界面,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端程序,具备规范的管理权限、灰度等特性。
2.Apollo特点和优势
Apollo配置中心应用广泛,有大量的用户背书,是较为成熟的一款开箱即用的服务,其具备如下特点和优势。
广告下地址: github。
- 支持不同应用的配置隔离;
- 支持框架和组件的配置,并可以利用命名空间特性实现应用内的配置继承和覆盖;
- 支持不同的环境配置,内置四种环境配置;
- 支持不同的集群或安全区配置;
- 支持用户赋权管理,用户审核功能,以及日志活动记录;
- 支持编辑配置和发布配置分离,避免误操作;
- 支持java和.net sdk客户端,并实现了缓存、离线缓存、推、拉模式,长连接等;
- 支持分布式部署,以实现高可用;
- 一个前端管理多种环境的配置;
- 支持Kubernetes部署,并支持K8s的原生服务发现;
- 各种大佬背书:广泛用于网易严选、有赞、土巴兔、平安银行、易车、小红书等等等等
3. Apollo 的劣势
非要说劣势,估计只有一点,架构稍显笨重,其依赖于MySQL、Java,有配置服务、管理服务、服务发现(Eureka 或K8s的Api 服务)、元服务、前端等组成。
对于运维来说,稍微有点重量级。
4. Apollo 的架构组成
官网公布的架构图如下:
配置服务和管理服务均通过Eureka进行服务的注册工作,通过注册后,使得 元服务可以通过Eureka找到这些服务的地址。
这样客户端和前端在通过访问配置的负载访问元服务后,获取到配置服务和管理服务的地址,就可以进行配置的读取和编写、发布工作了。
各类配置都会落盘到配置DB,使得配置的编写和发布可以很好的进行分离。
通过数据保存到MysQL,配置服务、管理服务在K8s内就可以部署成无状态的服务了。
客户端在拉取到配置后,会在本地缓存一份文件,这样就可以对配置中心形成弱依赖关系,如果配置中心挂了,还有本地的配置可供读写。
不过这块如果部署到K8s内,有点纠结是否还是无状态的服务,我们当然不希望,使用了配置的客户端后,就把自己搞成有状态的服务,这块我没研究清楚。
5. .net core 客户端访问
客户端的访问如图所示。
代码支持也很简单:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.AddApollo(false)
.ConfigureWebHostDefaults(builder => builder.UseStartup<Startup>());
使用:
var value = context.RequestServices.GetRequiredService<IConfiguration>()[key];
5. 小结
例行小结,理性看待!
结的是啥啊,结的是我想你点赞而不可得的寂寞。😳😳😳
👓都看到这了,还在乎点个赞吗?
👓都点赞了,还在乎一个收藏吗?
👓都收藏了,还在乎一个评论吗?