百度DisConf分布式配置框架源码试读(一)HttpClient 长连接

news/2024/7/2 3:51:37

Spring Cloud Config配置中心

我在学习Spring Cloud Config配置中心时理解了它体系下的配置中心的强大。实现了配置的远程管理、微服务的配置更新。Spring Cloud Config配置中心体系还是有其不足的地方。虽然它实现了配置和服务的分离。但是做不到实时的更新。需要手动触发POST /refresh Api接口(如果使用Spring Cloud Bus的话也是一致,不过它实现了一致更新的优点,但是也是需要手动触发 POST /bus/refresh API才能使微服务配置重新生效),虽然可以使用git的Watcher机制,当我更新新的配置文件时(对,Spring Cloud Config 使用的文件配置格式),会触发git的Watcher然后触发/bus/refresh或者/refresh接口,使得配置能够在微服务中更新。


Spring Cloud Config 不足之处

Spring Cloud Config的不足之处,肯定是和现有的开源框架相比较得出来的结论。但是从管理者的角度来说(可能是从中国人的角度),最好能够可视化,如果不能可视化的话,我也不知道原有的配置是什么,也无法在线对其它相关的服务,程序进行管理,配置上是否冲突。方便开发和运维进行配置(有的公司对于配置可能是归属于运维的职责)。第二,能够实现实时的推送,当然可能需要依赖第三方中间件。至于探究国内开源框架和Spring Cloud Config的优劣,方便公司选型的或者了解的请百度 https://www.colabug.com/4227288.html。



简单的提及一下携程的Apollo,主要是说一下的我的看法。


携程的框架是基于微服务的配置中心,主要的组件ConfigService、AdminService、Eureka Registry Center、Config Client、Config Core、 Web。服务提供者ConfigService和AdminService 提供配置和权限的管理,Eureka Registry Center提供服务之间的联系和心跳查询,防止服务的崩溃,Client主要是外接配置使用者。

上述的架构还是比较成熟,将微服务使用的轻车熟路。但是唯一的不开心的地方就是Config Client组件的开发,Client(Apollo-Client)使用的是Guice作为IOC容器,为了兼容Spring XML配置等,重新开发Spring XML配置类,这可能只是架构选型的问题,可能对于我这种使用Spring熟的人有的不快吧,还有携程对于以前使用的大量遗留框架(大量.NET架构)的兼容,其实使得这个Apollo显得臃肿。


正文 DisConf

Disconf主要的组件有三个:Disconf-core、 Disconf-client、Disconf-web。Disconf-core实现了Http连接、zookeeper的配置和常用的工具类的使用,代码写的是有的薄。对于远程服务的选择策略、以及重试策略,不如Spring Cloud Config Client Rule提供的策略多,默认是轮询策略、3次重试策略。


//TIDO:内容下次更新



http://lihuaxi.xjx100.cn/news/236095.html

相关文章

colly源码学习

colly源码学习 colly是一个golang写的网络爬虫。它使用起来非常顺手。看了一下它的源码,质量也是非常好的。本文就阅读一下它的源码。 使用示例 func main() {c : colly.NewCollector()// Find and visit all linksc.OnHTML("a[href]", func(e *colly.HTM…

CV00-01-CV基础理论

目录 CV的level和CV的方向 CV的level CV研究方向 CV应用方向 CV工程方向 CV的路线 CV比较好的会议 CV的平台、框架 认识几个CV的缩写 CV的level和CV的方向 CV的level Low Level,图像的基本操作;比如,图像的变换、像素操作、色彩等…

flask的客户端服务端

1.首先要进行后端与前端的连接有get 和post请求 get请求是直接在网页上打出已将定义好的网址 if __name__ __main__: app.run(host"localhost",port8800)host也可以写ip地址2.在进行交互前需要提前引入 flask 模块 pip3 install Flask详细代码 1 import json2 #…

java中两个Integer类型的值相比较的问题

转载自: https://www.cnblogs.com/xh0102/p/5280032.html 两个Integer类型整数进行比较时,一定要先用intValue()方法将其转换为int数之后再进行比较,因为直接使用比较两个Integer会出现问题。 总结: 当给Integer直接赋值时&#x…

Python基础13-文件处理

目录 用内置函数open打开文件 以文本方式打开文件 只读模式r 只写模式w 追加模式a 覆盖模式 以二进制方式打开文件 以二进制方式读 以二进制方式写 open函数的newline参数 file object的方法 tell显示当前光标的位置 seek控制光标的移动 truncate切片文件 用内置…

区块链技术特点之去中心化特性

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!! 由于区块链技术去中心化的特性,其在我们生活中的很多重要领域(如金融、管理)等方面具有重要的意义。例如&…

Java8 新特性之流式数据处理

2019独角兽企业重金招聘Python工程师标准>>> 一、流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希…

Python基础14-迭代器与生成器

目录 迭代器 官方文档对迭代器的解释 迭代器协议 基于迭代器协议的统一的for循环机制 生成器 官方文档对生成器的解释 生成器函数 生成器表达式 生成器用法举例 利用生成器用单线程实现生产者消费者问题模型 生成器只能遍历一次 迭代器 官方文档对迭代器的解释 Thi…