Apollo入门与工作原理&Apollo与Nacos的区别
📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级工程师。
? ? ? ??
📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样的认知和成长。
? ? ? ??
🏆 2022博客之星TOP3 | CSDN博客专家 | 后端领域优质创作者 | CSDN内容合伙人
🏆 InfoQ(极客邦)签约作者、阿里云专家 | 签约博主、51CTO专家 | TOP红人、华为云享专家
????????
🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~?
🍅 文末获取联系 🍅??👇🏻 精彩专栏推荐订阅收藏 👇🏻
专栏系列(点击解锁)
学习路线(点击解锁)
知识定位
全面讲解MySQL知识与企业级MySQL实战 🔥计算机底层原理🔥
本文目录
本文导读
本文主要讲解Apollo入门和执行流程,深入浅出通俗易懂的说明Apollo工作原理和总体设计,最后辅以Apollo常见面试题。
一、Apollo简介
Apollo(阿波罗)是分布式配置中心,能够集中化管理应用的不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
Apollo包括服务端和客户端两部分:服务端基于Spring Boot 和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。
二、Apollo执行流程
1、在Apollo配置中心修改配置
2、应用程序通过Apollo客户端从配置中心拉取配置信息
用户通过Apollo配置中心修改或发布配置后,会有两种机制来保证应用程序来获取最新配置:一种是Apollo配置中心会向客户端推送最新的配置;另外一种是Apollo客户端会定时从Apollo配置中心拉取最新的配置,通过以上两种机制共同来保证应用程序能及时获取到配置。
三、Apollo工作原理?
1、Apollo的总体设计
Config Service 提供配置的读取、推送等功能,服务对象是 Apollo Client客户端
Admin Service 提供配置的修改、发布等功能,服务对象是 Apollo Portal(管理界面)
Eureka 提供服务注册和发现,为了简单起见,目前 Eureka 在部署时和 Config Service 是在一个JVM进程中的
Config Service和Admin Service?都是多实例、无状态部署,所以需要将自己注册到 Eureka 中并保持心跳
在Eureka之上架了一层 Meta Server 用于封装Eureka的服务发现接口
Apollo Client 通过域名访问 Meta Server 获取Config Service 服务列表(IP+Port),而后直接通过 IP+Port 访问服务,同时在 Client 侧会做 load balance、错误重试
Apollo?Portal 通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试。
2、Apollo执行原理
1. Apollo启动后,Config/Admin Service?会自动注册到Eureka服务注册中心,并定期发送保活心跳。
2. Apollo Client和Portal管理端通过配置的 Meta Server 的域名地址经由Software Load Balancer(软件负载均衡器)进行负载均衡后分配到某一个 Meta Server
3. Meta Server 从Eureka获取 Config Service 和 Admin Service 的服务信息,相当于是一个 Eureka Client
4. Meta Server获取Config Service和Admin Service(IP+Port)失败后会进行重试
5. 获取到正确的 Config Service和Admin Service 的服务信息后,Apollo Client通过Config Service为应用提供配置获取、实时更新等功能;Apollo Portal管理端通过Admin Service提供配置新增、修改、发布等功能。
四、Apollo和Nacos比较
Apollo | Nacos | |
配置实时推送 | http长轮询1s | http长轮询1s |
版本管理 | 支持 | 支持 |
配置回滚 | 支持 | 支持 |
灰度发布 | 支持 | 不支持 |
权限管理 | 支持 | 不支持 |
集群 | 支持 | 支持 |
环境 | 支持 | 支持 |
监听 | 支持 | 支持 |
多语言 | 支持 | 支持 |
配置格式校验 | 支持 | 支持 |
单机读qps | 9k | 15k |
单机写qps | 1.1k | 8k |
Apollo(https://github.com/ctripcorp/apollo)携程开源配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
Nacos(https://github.com/alibaba/nacos),阿里开源的配置中心,也可以做DNS和RPC的服务发现。
Apollo相对于Nacos在配置管理做的更加全面,Nacos则使用起来相对比较简洁,在对性能要求比较高的大规模场景更适合。
总结
本文主要讲解Apollo入门和执行流程,深入浅出通俗易懂的说明Apollo工作原理和总体设计,最后辅以Apollo常见面试题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!