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

  • 相关阅读:
    minio文件存储 安装
    2023-09-25 LeetCode每日一题(LFU 缓存)
    1、k8s问题pod从service中剔除
    [modern c++] 函数式编程与 std::ref
    PenTool:一个基于Qt的仿真软件Demo
    part_two:多媒体软硬件平台技术
    猿创征文|【云原生 | 25】Docker运行数据库实战之Redis
    Eclipse/IDEA常用快捷键
    Hive的静态分区与动态分区
    opencv重点知识
  • 原文地址:https://blog.csdn.net/qq_33816292/article/details/126452183