【分布式配置中心】聊聊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.hqwc.cn/news/309913.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.15 构建onnx结构模型-Max

前言 构建onnx方式通常有两种: 1、通过代码转换成onnx结构,比如pytorch —> onnx 2、通过onnx 自定义结点,图,生成onnx结构 本文主要是简单学习和使用两种不同onnx结构, 下面以 Max 结点进行分析 方式 方法一&am…

前端 js 基础(1)

js 结果输出 &#xff08;点击按钮修改文字 &#xff09; <!DOCTYPE html> <html> <head></head><body><h2>Head 中的 JavaScript</h2><p id"demo">一个段落。</p><button type"button" onclic…

mxxWechatBot微信机器人V2版本文档说明

大家伙&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 先看这里 一、前言二、mxxWechatBot流程图三、怎么使用&#xff1f; 一、前言 经过不断地探索与研究&#xff0c;mxxWechatBot正式上线&#xff0c;届时全面开放使用。 mxxWechatBot&am…

《网络是怎样连接的》2.1节图表(自用)

图3.1&#xff1a;协议栈的组成 图3.2&#xff1a;netstat命令查看套接字 上图中每一行就是一个套接字 图3.3&#xff1a;协议栈在浏览器访问DNS服务器与web服务器时的具体工作流程 套接字由协议栈创建 应用程序通过Socket库中的程序组件与协议栈交互

linux文件夹介绍

在linux内核文件夹下面存在着许多文件夹&#xff0c;那么那些文件夹是什么用处呢&#xff0c;下面将为你介绍。 (1)documentation 这个文件夹下没有内核代码&#xff0c;仅仅有一套实用的文档&#xff0c;但这些文档的质量不一。比如内核文档的文件系统&#xff0c;在该文件夹下…

【华为机试】2023年真题B卷(python)-解密犯罪时间

一、题目 题目描述&#xff1a; 警察在侦破一个案件时&#xff0c;得到了线人给出的可能犯罪时间&#xff0c;形如 “HH:MM” 表示的时刻。 根据警察和线人的约定&#xff0c;为了隐蔽&#xff0c;该时间是修改过的&#xff0c;解密规则为&#xff1a; 利用当前出现过的数字&am…

线程数据共享和安全 -ThreadLocal

什么是 ThreadLocal ThreadLocal 的作用&#xff0c;可以实现在同一个线程数据共享, 从而解决多线程数据安全问题. 2. ThreadLocal 可以给当前线程关联一个数据(普通变量、对象、数组)set 方法 [源码!]ThreadLocal 可以像 Map 一样存取数据&#xff0c;key 为当前线程, get 方…

【23.12.30高可用篇】什么是SLA?

什么是SLA&#xff1f; ✔️简述✔️拓展知识✔️4个9、5个9 ✔️简述 SLA是Service Level Agreement的缩写&#xff0c;意为服务等级协议。它是指供应商和客户之间达成的一份正式协议&#xff0c;规定了供应商应该向客户提供的服务水平、质量、可靠性和响应时间等指标。 SLA通…

分布式技术之分布式数据存储系统

文章目录 什么是分布式数据存储系统&#xff1f;分布式数据存储系统三要素顾客&#xff1a;生产和消费数据导购&#xff1a;确定数据位置货架&#xff1a;存储数据 CAP 理论指出&#xff0c;在分布式系统中&#xff0c;不能同时满足一致性、可用性和分区容错性&#xff0c;指导…

Windows系统下如何运行.sh脚本文件

前言&#xff1a; .sh文件是一种命令脚本文件&#xff0c;在Windows系统下可以通过命令行工具打开运行。通常可以使用Git工具来打开运行.sh脚本文件。不过很多第一次使用Git的人&#xff0c;可能对Git工具不熟悉。.sh文件在命令行运行时是有固定写法的&#xff0c;下面介绍详细…

HDMI2.1输入转4Port MIPI/LVDS输出,嵌入式SPI闪存固件存储,VR和AR应用首选国产芯片方案-LT6911GXC

描述 LT6911GXC是一款高性能的HDMI2.1到MIPI或LVDS芯片&#xff0c;用于VR/显示应用。 HDCP RX作为HDCP中继器的上游&#xff0c;可配合其他芯片的HDCPTX实现中继器功能。 对于HDMI2.1输入&#xff0c;LT6911GXC可以配置为3/4通道。自适应均衡使其适合于长电缆应用&#xff0c;…

基于OpenAI的Whisper构建的高效语音识别模型:faster-whisper

1 faster-whisper介绍 faster-whisper是基于OpenAI的Whisper模型的高效实现&#xff0c;它利用CTranslate2&#xff0c;一个专为Transformer模型设计的快速推理引擎。这种实现不仅提高了语音识别的速度&#xff0c;还优化了内存使用效率。faster-whisper的核心优势在于其能够在…