【分布式配置中心】聊聊Apollo的安装与具体配置变更的原理

【管理设计篇】聊聊分布式配置中心

之前就写过一篇文章,介绍配置中心,但是也只是简单描述了下配置中心的设计点。本篇从apollo的安装到部署架构到核心原理进一步解读,大概看了下apollo的原理,感觉没有必要深究,所以就不打算写源码分析的文章了。只要了解明白基本设计思路就可以。

部署

整体上来说就是需要启动三个java项目,然后导入两个数据库。

1.创建ApolloPortalDB

通过各种MySQL客户端导入sql/apolloportaldb.sql即可。

2.创建ApolloConfigDB

通过各种MySQL客户端导入sql/apolloconfigdb.sql即可。

3.下载安装包

官方文章 :https://www.apolloconfig.com/#/zh/deployment/quick-start

其中有三个系统,adminservice、configService、portal 将对应的配置文件的数据库修改成自己的。

解压之后,按照如下方式启动,

configService

nohup java -jar apollo-configservice-2.0.1.jar > configservice.log &

adminservice

nohup java -jar apollo-adminservice-2.0.1.jar > adminservice.log &

portal

nohup java -jar apollo-portal-2.0.1.jar > portal.log &

4.访问就可以了

http://localhost:8070/ u/p apollo/admin

具体可以参考官方文档。

架构

在这里插入图片描述
整体上来说有五个角色,apollo客户端 也就是java程序,两个DB、Eureka集群、portal、config service、Admin service

  • config service提供配置的读取、推送功能,服务对象是apollo客户端
  • admin service 提供配置的修改,发布功能。服务对象是apollo portal界面
  • config service和admin service都是多实例,无状态部署,所以需要将自己注册到eureka中

整体流程是这样的。
1.config service服务启动,将服务注册到eureka中。admin service也将自己的服务注册到eureka中。
2.添加修改配置 portal启动,从eureka获取admin service服务实例,当添加修改配置的时候,portal调用admin serice修改配置 config,对应的数据。数据是保存在DB中的。
3.客户端启动的时候,从enurka集群获取到config service服务实例。获取服务配置。

注意,如果我们要修改配置数据的话,如何将数据实时通知给apollo客户端

配置发布后实时推送设计

在这里插入图片描述
其中主要以来的是admin service服务异步通知config service,config service 通知客户端。

发送ReleaseMessage的实现方式

从上面的流程可以看到其实admin Service通知config service变更的通知场景,就是典型的一发一收的场景,可以使用消息队列来解决,但是apollo设计者可能考虑到引入对于的中间件,所以采用了一种定时查询数据表的方式。大概如下:

在这里插入图片描述
其实就是admin service有数据变更的话,都会在release Message表插入新的记录。而config service有一个定时任务,每秒都查询一次数据是否有新增,有新增的话,就通知客户端进行配置更新。

在这里插入图片描述

Config Service通知客户端的实现方式

其实客户端会发起一个HTTP请求到config service的接口,不会立即马上返回,而是在60S内判断,配置又没有变更,没有变更 就返回http 304状态码给客户端。
如果有配置变更,会传入变更配置的namespace信息,同时该请求会立马返回。

客户端从返回的结果中获取到配置变化的name space后,立刻请求config service获取该namespace最新配置
在这里插入图片描述

客户端设计

客户端这边除了通过长连接的方式会更新配置,还有定时从配置中心拉去配置。并且自己本地内存缓存和本地文件也都会存储一份。

在这里插入图片描述

可用性

在这里插入图片描述

技术选型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

本篇简单从部署以及介绍了apollo的实现原理,可以发现对于配置中心来说其底层以来的是数据库进行数据存储的。并且在一般的配置中 push 、pull 、定时 等方式 也都有一定的优缺点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/824062.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SSM房屋租赁系统----计算机毕业设计

项目介绍 房屋租赁系统,基于 Spring5.x 的实战项目,此项目非Maven项目。 前台系统主要功能包括房源列表展示、房源详细信息展示、根据房源特征进行搜索,包括:房型、小区名;以及房源的预订功能。 后台管理: 用户信息管…

秒杀系统的设计思路(应对高并发,超卖等问题的解决思路)

首先我们先看一下设计秒杀系统时,我们应该考虑的问题。 解决方案: 一.页面静态化结合CDN内容分发 前端把能提前放入cdn服务器的东西都放进去,反正把所有能提升效率的步骤都做一下,减少真正秒杀时候服务器的压力。 秒杀活动的页面…

Halcon利用颜色信息提取背景相似的字符区域

Halcon利用颜色信息提取背景相似的字符区域 文章目录 Halcon利用颜色信息提取背景相似的字符区域 本文以一个例子说明利用颜色信息进行目标提取。如图所示,图(a)为输入的原始图像,目标为提取出字符区域。由图(a)可见&a…

【前端框架】 了不起的 TypeScript 入门教程

前言 想学习 TypeScript 的小伙伴看过来,本文将带你一步步学习 TypeScript 入门相关的十四个知识点,详细的内容大纲请看下图: TypeScript 是什么 TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集&#xff…

【网络安全常用术语解读】SCAP详解

本文主要介绍什么是SCAP,SCAP的产生背景是怎样的,SCAP有什么用途,有哪些组件,各个组件的用途是什么? SCAP产生背景 由于计算机和网络技术的快速发展,越来越多的软件和系统被应用到企业和机构中&#xff0c…

2023十大编程语言及未来展望

2023十大编程语言及未来展望 1. 2023年十大编程语言排行榜2. 十大编程语言未来展望PythonCCJavaC#JavaScriptPHPVisual BasicSQLAssembly language 1. 2023年十大编程语言排行榜 TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎&a…

c++学习笔记-提高篇-STL-函数对象

目录 一、函数对象 二、函数对象使用 三、谓词 1、概念 2、一元谓词 3、二元谓词 插入一条sort函数源码 四、内建函数对象 1.基本概念 2、算数仿函数 3、关系仿函数 4、逻辑仿函数 一、函数对象 函数对象概念 (1)重载函数调用操作符的类&a…

【数据结构】八、查找

一、基本概念 静态查找:只查找,不改变集合内数据元素 动态查找:有则输出元素,无则添加元素 二、静态查找表 2.1顺序查找 在线性表、链表、树中依次查找 2.2折半查找(二分查找) 在有序的线性表中&…

前端八股文(工程化篇)

目录 1.常用的git命令有哪些? 2.git rebase和git merge的区别 3.有哪些常见的Loader和Plugin? 4.webpack的构建流程 5.bundle,chunk,module是什么? 6.如何提高webpack的打包速度 7.vite比webpack快在哪里 8.说一下你对Monorepo的理解 …

组合总和[中等]

一、题目 给你一个 无重复元素 的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates中的 同一个 数字可以 无限制重复被选取 。如果…

再见2023,你好2024(附新年烟花python实现)

亲爱的朋友们: 写点什么呢,我已经停更两个月了。2023年快结束了,时间真的过得好快,总要写点什么留下纪念吧。这一年伴随着许多挑战和机会,给了我无数的成长和体验。坦白说,有时候我觉得自己好像是在时间的…

腾讯云4核8G服务器CVM标准型S5实例 S5.LARGE8性能测评

腾讯云4核8G服务器优惠价格表,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,轻量应用服务器4核8G12M带宽一年446元、529元15个月,阿腾云atengyun.com分享腾讯云4核8G服务器详细配置、优惠价格及限制条件&…

ssm基于java的网上手机销售系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本网上手机销售系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

OLED取模流程

1、Img2Lcd(222.ping->222) 1.1选择xxx.ping文件 1.2设置生成xxx.bmp文件 2、用PCtoLCD2002优化 2.1预显图像 2.2设置输出的字模数据 2.3生成了像素点378*8个 2.4至少需要2970个像素点 2.5像素点为什么是378*83024个?

基于谷歌模型gemini-pro 的开发的QT 对话项目

支持的功能,新建对话框,目前发现相关梯子不支持访问谷歌的api 的可能代理设置的不对, QNetworkAccessManager manager;// Set up your requestQNetworkRequest request;request.setUrl(QUrl("https://generativelanguage.googleapis.com…

使用 exec*库函数、编程练习动态链接库的两种使用方式

blog_week08 编程使用 exec*库函数加载一个可执行文件,编程练习动态链接库的两种使用方式一、 编程使用 exec*库函数加载一个可执行文件二、 编程练习动态链接库的两种使用方式 编程使用 exec*库函数加载一个可执行文件,编程练习动态链接库的两种使用方式…

git基础概念和常用命令(日常开发收藏备用)

目录 ### 常用命令 ### 远程仓库与克隆 ### 分支管理 ### 子模块(Submodule) ### 其他高级操作 ### 交互式暂存(Interactive Staging) ### cherry-pick ### rebase ### reflog与reset ### 子树合并(Subtree …

分类模型评估方法

1.数据集划分 1.1 为什么要划分数据集? 思考:我们有以下场景: 将所有的数据都作为训练数据,训练出一个模型直接上线预测 每当得到一个新的数据,则计算新数据到训练数据的距离,预测得到新数据的类别 存在问题&…

vscode软件安装步骤

目录 一、下载软件安装包 二、运行安装包后 一、下载软件安装包 打开vscode官方网址,找到下载界面 链接如下:Download Visual Studio Code - Mac, Linux, Windows 我是windows电脑,各位小伙伴自己选择合适的版本,点击下载按钮…

LVS负载均衡配置虚拟引起微服务注册混乱

线上小程序突然报错,查看网关日志,访问下游微服务A时大量报错: 1)检查微服务是否未注册。登录eureka页面,发现三个节点均正常注册 三个微服务节点地址分别为:13.9.1.91:8080,13.9.1.92:8080和1…