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

news2025/4/16 6:53:21

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

之前就写过一篇文章,介绍配置中心,但是也只是简单描述了下配置中心的设计点。本篇从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.coloradmin.cn/o/1346730.html

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

相关文章

vscode软件安装步骤

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

常用设计模式全面总结版(JavaKotlin)

这篇文章主要是针对之前博客的下列文章的总结版本: 《设计模式系列学习笔记》《Kotlin核心编程》笔记:设计模式【Android知识笔记】FrameWork中的设计模式主要为了在学习了 Kotlin 之后,将 Java 的设计模式实现与 Kotin 的实现放在一起做一个对比。 一、创建型模式 单例模…

2023 AI开发者生态报告

随着人工智能技术的飞速发展,全球IT市场对AI的投入持续增长,预计到2027年将达到4236亿美元。中国作为AI领域的重要参与者,其投资规模预计将占全球的9%。在这样的背景下,2023年的《AI开发者生态报告》为我们揭示了人工智能时代的技…

12.30_黑马数据结构与算法笔记Java

目录 320 全排列无重复 Leetcode47 321 组合 Leetcode77 分析 322 组合 Leetcode77 实现 323 组合 Leetcode77 剪枝 324 组合之和 Leetcode 39 325 组合之和 Leetcode 40 326 组合之和 Leetcode 216 327 N皇后 Leetcode51-1 328 N皇后 Leetcode51-2 329 解数独 Leetco…

喜迎元旦 | 愿新年,胜旧年,百华鞋业祝您元旦快乐,万事胜意!

一年复始岁序开,万象更新启新华 2023年我们聚力同行,相融共生, 凝心携手,奋进前行。 2024年我们挟着未知,带着期待, 继续携手砥砺前行 踏上新征程,向着新的奋斗目标再出发。 元旦&#xff…

C语言之整型提升

文章目录 1 有可能出现的问题2 产生以上问题的原因&#xff08;整型提升&#xff09;3 整型提升的过程4 整型提升示例5 总结 1 有可能出现的问题 代码如下 #include <stdio.h>int main () {int a -1;unsigned int b 1;if (a < b) {printf("a < b");}…

使用内网穿透轻松实现在外远程访问本地威联通QNAP NAS

文章目录 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 前言 购入威联通NAS后&#xff0c;很多用户对于如何在外在公网环境下的远程访问威联通NAS…

Python:日期和时间类型学习

背景 在非开发环境经常需要做一下日期计算&#xff0c;就准备使用Python&#xff0c;顺便记下来学习的痕迹。 代码 1 1 # coding utf-82 2 3 3 from datetime import *4 4 5 5 ########################## 日期 ##########################6 6 date_now date.today()…

wsl中的Ubuntu安装远程桌面

wsl Ubuntu默认只能打开命令行&#xff0c;看不到图形化界面&#xff0c;有些操作不方便。这里介绍两种方法来远程连接到wsl里 VNC 因为win10的wsl不支持systemd&#xff0c; 所以这种方式只能是Windows11的系统&#xff0c;Window10只能用xrdp 1、禁用WSLg 在c:\users\用户…

完全适配各类中小医院专科医院和诊所的云HIS系统源码【前端:Angular+Nginx ,后台:SpringBoot】

云HIS系统采用SaaS软件应用服务模式&#xff0c;提供软件应用服务多租户机制&#xff0c;实现一中心部署多机构使用。相对传统HIS单机构应用模式&#xff0c;它可灵活应对区域医疗、医疗集团、医联体、连锁诊所、单体医院等应用场景&#xff0c;并提升区域内应用的标准化与规范…

浅谈冯诺依曼体系和操作系统

&#x1f30e;冯诺依曼体系结构 文章目录 冯诺依曼体系结构 认识冯诺依曼体系结构       硬件分类       各个硬件的简单认识         输入输出设备         中央处理器         存储器 关于内存 对冯诺依曼体系的理解 操作系统 操作系统…

为什么深度学习神经网络可以学习任何东西

下图你所看到的&#xff0c;是著名的曼德尔布罗特集&#xff0c;我们可以见证这个集合呈现出的复杂形态&#xff1a; 要理解神经网络如何学习曼德尔布罗特集&#xff0c;我们首先需要从最基础的数学概念讲起&#xff1a;什么是函数&#xff1f;函数本质上是一个将输入转化为输出…

测试用例设计方法:正交试验冲锋

1 引言 上篇讲了因果图和判定表法&#xff0c;而这两种方法在变量值很多、排列组合数量极大的场景下&#xff0c;会生成非常庞大且冗余的测试用例&#xff0c;此时我们很难对所有组合场景进行全量测试用例覆盖&#xff0c;基于此短板&#xff0c;正交试验法应运而生。 2 概念及…

CSP CCF 201409-2 画图 C++满分题解

解题思路&#xff1a; 1.使用二维数组标记每一个方块是否被涂色。 2.注意坐标代表的是点&#xff0c;不是方块&#xff0c;交界处的坐标只能算一个方块。 3.可以看成&#xff1a;每一个坐标都对应它左上角的一个小方块&#xff0c;这样可以避免重复计算方块数 #include<i…

每日一题合集1

1038 从二叉搜索树到更大和树 1038. 从二叉搜索树到更大和树 - 力扣&#xff08;LeetCode&#xff09; 二叉树的中序遍历逆向思维 给定一个二叉搜索树 root (BST)&#xff0c;请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下&#xff0c; …

轻量封装WebGPU渲染系统示例<55>- 顶点数据更新

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/VertexUpdateTest.ts 当前示例运行效果: ​​​​​​​ 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: export class VertexUpdateTest {pr…

全新ui自动化测试框架教学——Cypress

前言 在现阶段自动化测试领域大规模普及的是selenium及appium等常规自动化测试工具&#xff0c;但在其中会有遇到很多影响因素导致测试结果不理想和不准确的情况发生。在经过Darren洋对自动化测试工具调研后&#xff0c;发现了Cypress这一款针对端到端的自动化测试工具&#xf…

从2023看2024前端发展趋势

前言 流光溯影&#xff0c;纵观2023全年&#xff0c;整个前端业界呈现出百业凋零之状&#xff0c;更不乏有“前端已死”等论调甚嚣尘上。从全局视角看IT行业&#xff0c;除了AI领域的大语言模型爆发外&#xff0c;整体都鲜有特别亮眼及突出的技术展现。故而&#xff0c;作为IT…

Linux下使用Wireshark抓包教程

在实际开发中&#xff0c;涉及网络传输的环节是非常多的。在这些过程中&#xff0c;我们经常有查看被传输的数据信息的需求&#xff0c;因此&#xff0c;抓包工具应运而生。Wireshark便是一款非常有名的抓包及分析软件&#xff0c;具有强大的协议解析能力。本文将介绍如何在Lin…

用通俗易懂的方式讲解大模型:ChatGLM3-6B 功能原理解析

上次我们介绍了 ChatGLM3-6B 的部署&#xff0c;虽然我们的大语言模型&#xff08;LLM&#xff09;部署起来了&#xff0c;新功能也试用了&#xff0c;但问题很多的小明就要问了&#xff0c;这其中的实现原理是什么呢&#xff1f;到底是怎么实现的呢&#xff1f; 那今天我们就…