首页 > 其他分享 >ShardingSphere的配置中心

ShardingSphere的配置中心

时间:2022-10-20 16:34:22浏览次数:53  
标签:配置 中心 ShardingSphere Zookeeper configuration Apollo 方法

ShardingSphere的配置中心

本篇文章源码基于4.0.1版本

使用配置中心来管理配置文件非常方便灵活,实现配置信息的动态加载,ShardingSphere支持很多配置中心,包括Apollo、Zookeeper、Nacos、Etcd等等。

sharding-orchestration-config模块是ShardingSphere配置中心的源码内存,有子模块sharding-orchestration-config-api、sharding-orchestration-config-zookeeper-curator、sharding-orchestration-config-apollo,分别是配置中心api提供的一些接口,Zookeeper配置中心的集成和Apollo配置中心的集成,下面就分别看一下这三个模块

配置中心API

这个模块中的类ConfigCenter、ConfigCenterConfiguration、监听事件接口DataChangedEventListener和数据改变事件DataChangedEvent,下面这个图是它们之间的关系:

ConfigCenter是配置中心的接口,它继承了TypeBasedSPI接口,底层使用了JDK的SPI机制,具体的实现由具体的配置中心来实现

DataChangedEventListener是数据改变事件的监听类,只有一个onChange()方法,DataChangedEvent这个类中定义了监听的数据改变的事件类型:更新、删除和忽略

public final class DataChangedEvent {
    
    private final String key;
    
    private final String value;
    
    private final ChangedType changedType;
    
    public enum ChangedType {
        
        UPDATED, DELETED, IGNORED
    }
}

Zookeeper模块

我们一般不使用Zookeeper的原生Api,而是使用集成框架Curator

使用Zookeeper配置中心

    private static ConfigCenter curatorZookeeperConfigCenter = new CuratorZookeeperConfigCenter();
    public static void init() {
        EmbedTestingServer.start();
        ConfigCenterConfiguration configuration = new ConfigCenterConfiguration(curatorZookeeperConfigCenter.getType(), new Properties());
        configuration.setServerLists("127.0.0.1:3181");
        curatorZookeeperConfigCenter.init(configuration);
    }

使用起来也比较简单,

加载curatorZookeeperConfigCenter实现类,

先启动Zookeeper服务器,创建配置中心配置类对象,设置服务列表,调用CuratorZookeeperConfigCenter的init()方法进行加载

持久化数据直接调用CuratorZookeeperConfigCenter的persist()方法即可

curatorZookeeperConfigCenter.persist("/test", "xpp");

获取数据:

curatorZookeeperConfigCenter.get("/test");

源码分析

sharding-orchestration-config-zookeeper-curator模块的内容也比较简单,一个ConfigCenter接口的实现类CuratorZookeeperConfigCenter

初始化

CuratorZookeeperConfigCenter的init()方法就是初始化配置中心的方法,这个方法中先构建Curator客户端,然后启动客户端

增删改查

还有对数据节点增删改查的方法都是调用了CuratorFramework这个客户端的增删改查方法

监听

watch()方法监视配置服务器的key或路径,这个方法中会获取Zookeeper的监听事件的属性,构造DataChangedEvent对象来转化为ShardingSphere自身的事件,绑定监听器,当数据发生变化的时候会触发数据改变事件的监听类DataChangedEventListener的onChange()方法

Apollo模块

使用Apollo配置中心

使用Apollo配置中心和Zookeeper配置中心的使用差不多,先构造ApolloConfigCenter实例,然后调用它的初始化方法进行初始化

    private static ConfigCenter configCenter = new ApolloConfigCenter();
    
    @BeforeClass
    public static void init() {
        ConfigCenterConfiguration configuration = new ConfigCenterConfiguration(configCenter.getType(), new Properties());
        configuration.setServerLists("http://config-service-url");
        configuration.setNamespace("orchestration");
        configCenter.init(configuration);
    }

获取数据:configCenter.get("key1"),调用ApolloConfigCenter的get()方法即可

初始化

初始化方法中从配置对象中获取配置信息,然后设置到系统属性中,接着根据配置对象构建Config对象

增删改查

Apollo只有获取和判断key是否存在的方法,基于初始化构造的Config对象来使用的,获取key下的子节点、持久化等方法都会抛出异常

监听

监听方法和Zookeeper的逻辑类似,同样是转化为数据改变的事件实例DataChangedEvent

这样我们可以实现自己的配置中心通过SPI机制进行加载使用

总结

这篇文章主要讲了ShardingSphere与配置中心集成的模块,包括Curator的集成和Apollo的集成,大致流程都是一样,先进行客户端的初始化,然后调用相关的API即可。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞

    标签:配置,中心,ShardingSphere,Zookeeper,configuration,Apollo,方法
    From: https://blog.51cto.com/u_15460453/5780267

相关文章

  • ShardingSphere的注册中心
    ShardingSphere的注册中心本篇文章源码基于4.0.1版本注册中心在ShardingSphere的作用就是用来管理各种数据源,在使用的时候,所有数据源通过向注册中心的指定目录下创建节......
  • ShardingSphere与链路追踪
    ShardingSphere与链路追踪本篇文章源码基于4.0.1版本ShardingSphere的功能非常强大,它不仅与注册中心、配置中心相结合的很好,它还支持链路追踪,了解过链路追踪技术的肯定......
  • vue项目中给路由添加缓存配置
    <template><divid="app"><keep-alive:include="include"><router-viewv-if="$route.meta.keepAlive"/></keep-alive><router-viewv-if="!$......
  • nuxt 低版本浏览器兼容babel编译配置
    场景:有个nuxt开发的老项目,需要在(Firefox52.7.2)低版本浏览上显示,低版本浏览器打开报错(SyntaxError:invalidpropertyid),然后各种尝试网速搜到的兼容方法依旧没解决,最后......
  • 初识区块链 如何在去中心化网络中形成共识
    本文将从日常生活如何形成共识,类比到在每个人都可以伪装自己的身份的网络上如何构建共识。再以此谈谈区块链网络中是如何做的,以及这种共识是怎么构成区块链的基石的。最后......
  • 防火墙基础之总部与总部之间OSPF路由配置​
    防火墙基础之总部与总部之间OSPF路由配置​原理概述:​防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一......
  • nginx配置通过域名访问WGCLOUD
    nginx配置如下这样就可以通过域名或IP直接访问WGCLOUD页面了,不用再加后面的/wgcloud了注意把localhost改为自己的实际server主机IPserver{listen80;......
  • java spring boot 项目启动配置由.properties改为.yml。failed to configure a dataso
    因为yml的文件结构可以少打字,就想着把.properties的配置文件改为.yml的,结果发现坑还不少,在此记录一下。1、安装相应的plugins    2、添加相应的文件名 3、设......
  • nginx配置访问WGCLOUD页面URL地址不加后缀/wgcloud
    nginx配置如下这样就可以通过域名或IP直接访问WGCLOUD页面了,不用再加后面的/wgcloud了注意把localhost改为自己的实际server主机IPserver{listen......
  • 达梦DM8数据库ODBC的安装/配置/错误解决
    1、安装unixODBC-2.3.0.tar.gz[root@localopt]tar-zxvfunixODBC-2.3.0.tar.gz[root@localopt]cdunixODBC-2.3.0/[[email protected]]./configure[roo......