• 基于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

  • 相关阅读:
    数据湖建设解决方案 2022
    Hadoop总结——Hadoop基础
    JAVA计算机毕业设计制药企业人力资源管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
    设计模式之桥接模式
    打点初级技巧
    Maven进阶-属性与资源文件
    多表数据增量导入详细文档
    luffy-(7)
    Linux操作系统 实现一个进程管理子系统
    MySQL基础篇
  • 原文地址:https://blog.csdn.net/qq_33816292/article/details/126452183