分布式配置中心 Apollo

这篇具有很好参考价值的文章主要介绍了分布式配置中心 Apollo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


类似Lion

一、Apollo客户端实现原理

分布式配置中心 Apollo,java高级,分布式

1、客户端和服务端会保持一个长连接,从而第一时间获取配置更新的推送。
2、客户端还会定时从Apollo配置中心服务端拉取应用的最新配置,而且客户端定时拉取会上报给本地版本,默认每隔5分钟拉取一次,也可以通过运行时指定apollo.refreshInterval来覆盖,单位为分钟。
3、客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存。
4、客户端会把从服务端拉取到的配置在本地文件系统缓存一份,保证在遇到服务不可用或网路故障时,依赖能从本地恢复配置,也实现了一定的高可用性。应用程序从客户端获取到罪行的配置、订阅配置更新通知。

二、配置更新实现

前面提到了Apollo客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。
长连接实际上我们是通过Http Long Polling实现的,具体而言:

    客户端发起一个Http请求到服务端


    服务端会保持住这个连接30秒


    如果在30秒内有客户端关心的配置变化,被保持住的客户端请求会立即返回,并告知客户端有配置变化的namespace信息,客户端会据此拉取对应namespace的最新配置


    如果在30秒内没有客户端关心的配置变化,那么会返回Http状态码304给客户端


    客户端在服务端请求返回后会自动重连

考虑到会有数万客户端向服务端发起长连,在服务端我们使用了async servlet(Spring DeferredResult)来服务HttpLong Polling请求。

三、架构

整体架构:

分布式配置中心 Apollo,java高级,分布式

四大板块 :

  1. ConfigService

    提供配置获取接口
    提供配置推送接口
    服务于Apollo客户端

  2. AdminService

    提供配置管理接口
    提供配置修改发布接口
    服务于管理界面Portal

  3. Client

    为应用获取配置,支持实时更新
    通过MetaServer获取ConfigService的服务列表
    使用客户端软负载SLB方式调用ConfigService

  4. Portal

    配置管理界面
    通过MetaServer获取AdminService的服务列表
    使用客户端软负载SLB方式调用AdminService

三个辅助服务发现模块

  1. Eureka

    用于服务发现和注册
    Config/AdminService注册实例并定期报心跳
    和ConfigService住在一起部署

  2. MetaServer

    Portal通过域名访问MetaServer获取AdminService的地址列表
    Client通过域名访问MetaServer获取ConfigService的地址列表
    相当于一个Eureka Proxy
    逻辑角色,和ConfigService住在一起部署

  3. NginxLB

    和域名系统配合,协助Portal访问MetaServer获取AdminService地址列表
    和域名系统配合,协助Client访问MetaServer获取ConfigService地址列表
    和域名系统配合,协助用户访问Portal进行配置管理

Why Eureka

为什么我们采用Eureka作为服务注册中心,而不是使用传统的zk、etcd呢?我大致总结了一下,有以下几方面的原因:

    它提供了完整的Service Registry和Service Discovery实现

首先是提供了完整的实现,并且也经受住了Netflix自己的生产环境考验,相对使用起来会比较省心。

    和Spring Cloud无缝集成

1)我们的项目本身就使用了Spring Cloud和Spring Boot,同时Spring Cloud还有一套非常完善的开源代码来整合Eureka,所以使用起来非常方便。
2)另外,Eureka还支持在我们应用自身的容器中启动,也就是说我们的应用启动完之后,既充当了Eureka的角色,同时也是服务的提供者。这样就极大的提高了服务的可用性。
3)这一点是我们选择Eureka而不是zk、etcd等的主要原因,为了提高配置中心的可用性和降低部署复杂度,我们需要尽可能地减少外部依赖。

    Open Source

最后一点是开源,由于代码是开源的,所以非常便于我们了解它的实现原理和排查问题。文章来源地址https://www.toymoban.com/news/detail-694053.html

到了这里,关于分布式配置中心 Apollo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud分布式配置中心——Config

    本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 由于微服务越来越多,项目越来越庞大,每一个项目都至少有两三个不同环境的application.properties文件,不易管理,假设我们数据库迁移,那么所有配置文件中有关数据库的地址都需要更改,不

    2023年04月22日
    浏览(37)
  • 【SpringCloud框架之Config分布式配置中心】

    本笔记内容为尚硅谷SpringCloud框架开发Config配置中心部分 目录 一、概述 1、是什么 2、作用 二、Config服务端配置与测试 1、建仓库并克隆 2、新建项目 1.新建Module 2.POM 3.YML 4.主启动类 5.windows下修改hosts文件,增加映射 6.测试通过Config微服务是否可以从GitHub上获取配置内容  7.配

    2023年04月15日
    浏览(46)
  • config: 分布式配置中心 & bus: 消息总线

    每一个应用程序在运行时都需要相应的yml配置,分布式架构下多个服务器和应用服务面临着多个配置文件,在修改和发布上难度较大,需要有一个管理中心来统一管理,优雅的解决了配置的动态变更、持久化、运维成本等问题 流程: 分布式配置中心去远程仓库将创建好的yml文件

    2023年04月23日
    浏览(47)
  • 微服务架构学习与思考(13):分布式配置中心

    微服务架构系列文章集合:https://www.cnblogs.com/jiujuan/p/17307285.html 用编程语言编写应用项目时,一般都会有项目的配置文件。比如用 java 编写项目,有一个 properties 的配置文件,会把一些配置信息写入到该文本文件中,例如数据库相关的配置信息。 这也体现了软件设计的一个原

    2024年02月06日
    浏览(51)
  • 理解 Spring Cloud 分布式配置中心Eureka

    作者:禅与计算机程序设计艺术 在 Spring Cloud 的世界里,分布式系统经历了开发、测试、运维三个阶段。而在开发阶段,通常采用集中式配置方式,将所有配置文件统一管理在一台服务器上。随着业务系统的不断扩张,各个微服务模块都需要配置自己的属性值。因此,需要一

    2024年02月08日
    浏览(55)
  • 基于分布式系统结构下Nacos配置中心的应用

    在上一篇nacos初始中,已经描述过Nacos的基本知识,在这篇博客里记录的是Nacos配置中心的使用。 集中化配置管理 :Nacos配置中心支持将应用程序的配置信息集中管理,包括常规的属性配置、文本配置、JSON配置等。你可以通过Nacos的控制台或API进行配置的创建、更新、删除和查

    2024年02月09日
    浏览(43)
  • .net使用nacos配置,手把手教你分布式配置中心

    Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 这么优秀的分布式服务管理平台,怎么能不接入呢? nacos的安装和使用这里就不细说了,可以参考网上教程和官方文档。https://nacos.io/zh-cn/docs/quick-start.html 我们以创建一个webapi项目为例手把手教你

    2023年04月24日
    浏览(51)
  • 【SpringCloud config分布式配置中心】—— 每天一点小知识

    ·                                                                         💧 S p r i n g C l o u d c o n f i g 分布式配置中心 color{#FF1493}{SpringCloud config分布式配置中心} Sp r in g Cl o u d co n f i g 分布式配置中心 💧           🌷 仰望天空,妳

    2024年02月11日
    浏览(38)
  • SpringCloud Alibaba 之 Config配置中心,Redis分布式锁详解

    目录 1.服务配置中心 1.1 服务配置中心介绍  1.2 Nacos Config 实践 1.2.1 Nacos config 入门案例  1.2.2  Nacos 配置动态刷新 1.2.3 配置共享 1.2.4 nacos 几个概念   2.分布式锁 2.1 分布式锁介绍  2.2 Redisson  2.2.1 Redisson 实践  2.2.2 Redisson 原理   首先我们来看一下,微服务架构下关于配置文件

    2024年02月04日
    浏览(43)
  • RPC分布式网络通信框架(三)—— 服务配置中心Zookeeper模块

    分布式系统存在的问题: 为了支持高并发,每个客户端都保存了一份服务提供者的 列表 。但是如果 列表 有更新,想要得到最新的URL列表(rpc服务的ip和端口号),必须要手动更新配置文件,很不方便。 如图所示,实例3挂掉了,但是 列表 并没有得到更新。 故需要动态的更

    2024年02月15日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包