Apollo功能及原理详解

前言

在我们公司,配置中心采用的是携程开源的Apollo。由于我之前只接触过Nacos,因此决定记录下我的学习过程。

Apollo工作原理

apollo_yl

模块介绍

以下是Apollo的架构概览,我们将从底层向上逐层解析:

  • ConfigDB:负责存储配置数据。
  • Config Service:提供配置读取和推送服务,服务于Apollo客户端,支持多实例,需要在Eureka中注册以保持服务心跳。
  • Admin Service:提供配置修改和发布功能,服务于Apollo Portal(管理界面),同样支持多实例,并在Eureka中注册。
  • Eureka:提供服务注册与发现功能,目前为了简化部署,Eureka与Config Service共存于同一JVM进程。
  • Meta Server:封装Eureka的服务发现接口。
  • Client:通过域名访问Meta Server获取Config Service服务列表(IP+Port),然后直接通过IP+Port访问服务,Client端实现负载均衡和错误重试。
  • Portal:通过域名访问Meta Server获取Admin Service服务列表(IP+Port),直接通过IP+Port访问服务,Portal端同样实现负载均衡和错误重试。

执行流程

  1. Apollo启动时,Config/Admin Service会自动向Eureka服务注册中心注册,并定期发送心跳以保持连接。
  2. Apollo Client和Portal通过配置的Meta Server域名,通过软件负载均衡器分配到特定的Meta Server。
  3. Meta Server作为Eureka Client,从Eureka获取Config Service和Admin Service的服务信息。
  4. 若Meta Server获取Config Service和Admin Service(IP+Port)失败,将进行重试。
  5. 成功获取服务信息后,Apollo Client通过Config Service为应用提供配置获取和实时更新功能;Apollo Portal管理端通过Admin Service提供配置的新增、修改和发布功能。

基本概念

  • application (应用)
    实际使用配置的应用,Apollo客户端在运行时需要识别当前应用,以便获取相应的配置。关键标识:appId。
  • environment (环境)
    配置所对应的环境,Apollo客户端在运行时需要识别当前应用所处的环境,以获取正确的配置。关键标识:env。
  • cluster (集群)
    应用下不同实例的分组,例如,可以将上海机房的应用实例分为一个集群,北京机房的应用实例分为另一个集群。关键标识:cluster。
  • namespace (命名空间)
    应用下不同配置的分组,可以将namespace视作文件,不同类型的配置存放于不同的文件中,例如数据库配置文件、RPC配置文件、应用自身的配置文件等。关键标识:namespaces。
  • 关系图如下:
    apollo_gxt

项目管理

部门管理

Apollo默认有两个部门。若需添加新部门,可在系统参数中进行修改。进入系统参数页面,输入key查询现有的部门设置:organizations。
apollo_bumen
修改value值以添加新部门,例如添加一个微服务部门:

[{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"},{"orgId":"micro_service","orgName":"微服务部门"}]

创建项目

  1. 打开Apollo主页,点击“创建应用”:
    apollo_chuangjian
  2. 输入相关信息,包括部门、应用AppId、应用名称和应用负责人:
    apollo_yingyongxinxi
  3. 授予用户管理服务权限,点击“授权”:
    ![apollo_shouquan](https://pic.it1024doc.com/cnblogs/202412/4046acd5a7d01bc73518ea6ca

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4275.html

(0)
LomuLomu
上一篇 2024 年 12 月 24 日
下一篇 2024 年 12 月 24 日

相关推荐

  • Django 3 Web应用开发实战PDF、EPUB免费下载

    适读人群 :适合有一定Python基础的Web开发人员阅读,也可用作培训机构和大中专院校相关专业的教学参考书。 以DjangoWeb项目开发为主线,从源码的角度,深入剖析Django3企业级开发技术。 电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息 作者: 黄永祥出版社: 清华大学出版社出版年: 2021-…

    2025 年 1 月 12 日
    25500
  • Java刷题训练第一期

    个人主页:手握风云 专栏:Java刷题训练营 1. 字符转ASCII码 问题描述:BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,输入一个字符,输出该字符相应的ASCII码。 输入描述:一行,一个字符。 输出描述:一行,输出输入字符对应的ASCII码。 算法分析:在Java当中,没有针对字符的输入…

    2025 年 1 月 11 日
    20100
  • 架构师启示录:知识模型、落地方法与思维模式PDF、EPUB免费下载

    适读人群 :资深程序员、初级架构师 从架构知识模型、架构落地方法、架构思维模式三大维度介绍架构师的能力模型,带你穿越“认知迷雾” 电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息 作者: 灵犀出版社: 机械工业出版社出版年: 2024-3页数: 212装帧: 平装丛书: 架构师书库ISBN: 97871117…

    2025 年 1 月 6 日
    35500
  • 一款基于 Vue + SpringBoot 前后端分离的开源博客系统!

    大家好,我是Java陈序员。 今天,我要向大家展示一款采用Vue和SpringBoot技术栈构建的开源博客系统——拾壹博客! 项目概览 拾壹博客(shiyi-blog)是一款现代化的博客系统,实现了前后端分离架构。它支持本地文件存储以及七牛云存储,同时集成了QQ、微信等第三方登录,并具备即时通讯聊天室的功能。 功能亮点: 采用前后端分离架构,运用前沿技术打造…

    2024 年 12 月 24 日
    46000
  • 【Java】:lambda 表达式

    📃个人主页:island1314 🔥个人专栏:java学习 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 1. 背景 🚀 🔥 Lambda 表达式 是JDK8新增的特性,Lambda 表达式 可以取代大部分匿名内部类,写出更优雅的Java代码,尤其在集合的遍历和其他集合操作中,可以将函数作为一个方法的参数,也就是函数作为参数传递到方法中,极大地优化代…

    2024 年 12 月 30 日
    37300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信