基于Zookeeper手写配置中心

一、原生API 1.Zookeeper API 2.Apache Curator api 3.基于Zookeeper实现配置中心、利用ZNode节点存储数据的功能 二、本地配置 1.基本上所有的配置信息都会存放到Spring生态中的Environment对象中的属性配置源中 (1)解析app.properties文件并且放到env中 作为Spring开发者,在业务代码中肯定随时都要用属性 (2)@Value依赖注入,就可以对字段进行赋值操作,这样就可以后置处理器以及evn关联起来了 (1)使用BeanPostProcessor解析类上的@Value字段 (2)获取到字段上的@Value字段 (3)解析@Value字段的value属性值,比如age (4)从environment中的属性配置源OriginTrackedMapPropertySource中寻找age的key (5)根据key获取到对应的value值 (6)通过field反射的方式设置value值 2.本地配置存在的问题 (1)对于多个重复的配置,发现每个项目中都需要进行维护,比如username passwoord, 如果哪天修改了用户名和密码 (2)Spring Boot项目肯定需要使用该配置信息,项目获取配置内容咯 3.Spring Boot项目启动 4.apache curator:获取数据 1 mobile 6000 业务使用 5.能否将获取到的数据保存到spring的evn的属性配置源中 6.a-Spring Boot源码既然不能修改,那怎么将curator拉取数据的内容,放到Spring Boot的执行流程中呢? 7.Spring生态中的常见扩展机制:就是不修改Spring源码的前提下,把想要的代码 7.1ApplicationContextInitializer 7.2事件监听机制 7.3BeanPostProcessor 7.4BeanFactoryPostProcessor 7.5ApplicationRunner... 7.6初始化器的加载 8.回调 9.@Value只赋值一次,后续的更新没有重新赋值,怎么办? 10.解决方案 (1)让Spring重新执行一次refresh方法,不行 AutowriteAnnoPostProcessor (2)我们来写一个解决方案 11.要给这些字段重新赋值:什么重新赋值呢?当收到watch通知的时候,通知赋值 12.Spring Cloud Zookeeper 13.前提:安装好zk server 14.zk server 单独的中间件 15手写的配置中心:拉取数据 && 动态更新数据 15.1Spring cloud zookeeper:spring cloud团队实现 15.2dubbo + zookeeper: dubbo团队实现 15.3spring cloud alibaba nacos:ali nacos团队实现 (1)拉取数据 (2)数据更新之后的重新赋值的问题 16放到优先级更高的bootstap中,优先级最高 17.PropertySourceBootstrapConfiguration 18.Spring Cloud Zookeeper 19.扩展机制的入口 监听机制 (1)销毁ProductController (2)根据最新的属性创建ProductController
经验分享 程序员 微信小程序 职场和发展