📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级工程师。
📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样的认知和成长。
🏆 2022博客之星TOP3 | CSDN博客专家 | 后端领域优质创作者 | CSDN内容合伙人
🏆 InfoQ(极客邦)签约作者、阿里云专家 | 签约博主、51CTO专家 | TOP红人、华为云享专家
🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~
🍅 文末获取联系 🍅 👇🏻 精彩专栏推荐订阅收藏 👇🏻
专栏系列(点击解锁)
学习路线(点击解锁)
知识定位
🔥Redis从入门到精通与实战🔥
Redis从入门到精通与实战
围绕原理源码讲解Redis面试知识点与实战
🔥MySQL从入门到精通🔥
MySQL从入门到精通
全面讲解MySQL知识与企业级MySQL实战 🔥计算机底层原理🔥
深入理解计算机系统CSAPP
以深入理解计算机系统为基石,构件计算机体系和计算机思维
Linux内核源码解析
围绕Linux内核讲解计算机底层原理与并发
🔥数据结构与企业题库精讲🔥
数据结构与企业题库精讲
结合工作经验深入浅出,适合各层次,笔试面试算法题精讲
🔥互联网架构分析与实战🔥
企业系统架构分析实践与落地
行业最前沿视角,专注于技术架构升级路线、架构实践
互联网企业防资损实践
互联网金融公司的防资损方法论、代码与实践
🔥Java全栈白宝书🔥
精通Java8与函数式编程
本专栏以实战为基础,逐步深入Java8以及未来的编程模式
深入理解JVM
详细介绍内存区域、字节码、方法底层,类加载和GC等知识
深入理解高并发编程
深入Liunx内核、汇编、C++全方位理解并发编程
Spring源码分析
Spring核心七IOC/AOP等源码分析
MyBatis源码分析
MyBatis核心源码分析
Java核心技术
只讲Java核心技术
本文目录
本文导读
一、Apollo简介
二、Apollo执行流程
三、Apollo工作原理
1、Apollo的总体设计
2、Apollo执行原理
四、Apollo和Nacos比较
总结
本文导读
本文主要讲解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常见面试题。