大数据开发--zookeeper实现简易配置中心(代码片段)

Hoult-吴邪 Hoult-吴邪     2023-02-13     480

关键词:

大数据开发——Zookeeper实现简易配置中心

为什么使用Zookeeper

Zookeeper是一个分布式的,开放源码的分布式协调服务,常在Ha架构,比如Hadoop、Hbase中使用,它是一个分布式应用提供一致性服务的软件,提供的功能有:配置维护,域名服务,分布式同步,注册中心等,作为配置中心,需要的就是一个稳定的全局一致的配置化中心,而Zk本身提供的原语正好可以满足需求。

1.实现思路

1.创建要给Web项目,将数据库连接池信息交给Zookeeper配置中心来管理,即把配置参数放到Zk的节点信息中.

2.在项目启动时候,从Zookeeper中拉取Mysql的信息参数、

3.当Zk中的数据库连接池信息修改后,自动感知,正确释放之前的连接池,创建新的连接池。

2.实现过程

2.1 启动springboot项目,并从zk中拉取配置

     /**
     * 1. 启动 web 容器
     * 2. 初始化 zookeeper
     * 3. 配置数据库连接池
     **/
    public static void main(String[] args) 

        SpringApplication.run(Application.class, args);

        initZk();

        configHikariSource();
    

   //初始化zk
    private static void initZk() 

        zkClient = new ZkClient("centos:8521");

        zkClient.setZkSerializer(new ZkStrSerializer());

        zkClient.subscribeDataChanges("/jdbc", new IZkDataListener() 

            public void handleDataChange(String path, Object data) 

                System.out.println(path + " data is changed, new data " + data);

                hikariDataSource.close();

                configHikariSource();
            

            public void handleDataDeleted(String path) 

                System.out.println(path + " is deleted!!");

                hikariDataSource.close();
            
        );
    

2.2 获取数据库连接池信息进行访问mysql

序列化zk中的数据,将其转为字符串,使用HiKari工具建立连接,操作数据库

/**
     * 配置数据库连接池
     *
     * 1. 从 zookeeper 中获取配置信息
     * 2. 更新 hikari 配置
     * 3. 执行测试 sql
     */
    private static void configHikariSource()

        JDBCConfig myConfig = getJDBCConfig();

        updateHikariConfig(myConfig);

        try 

            executeTestSQL();
         catch (SQLException e) 
            e.printStackTrace();
        
    

2.3 监听zk,改变节点数据,释放并创建新的数据库连接

//更新数据库信息
    private static void updateHikariConfig(JDBCConfig myConfig) 

        HikariConfig config = new HikariConfig();
        config.setJdbcUrl(myConfig.getUrl());
        config.setUsername(myConfig.getUsername());
        config.setPassword(myConfig.getPassword());
        config.addDataSourceProperty( "driverClassName" , myConfig.getDriver());
        config.addDataSourceProperty( "cachePrepStmts" , "true" );
        config.addDataSourceProperty( "prepStmtCacheSize" , "250" );
        config.addDataSourceProperty( "prepStmtCacheSqlLimit" , "2048" );
        hikariDataSource = new HikariDataSource(config);
    

代码相关:https://github.com/hulichao/bigdata-code/blob/master/src/main/java/com/hoult/zk/job/Application.java


吴邪,小三爷,混迹于后台,大数据,人工智能领域的小菜鸟。 更多请关注 ![file](https://img-blog.csdnimg.cn/20210808125817151.png)

大数据开发--zookeeper实现简易配置中心(代码片段)

大数据开发——Zookeeper实现简易配置中心为什么使用ZookeeperZookeeper是一个分布式的,开放源码的分布式协调服务,常在Ha架构,比如Hadoop、Hbase中使用,它是一个分布式应用提供一致性服务的软件,提供的功能... 查看详情

基于zookeeper实现配置中心

在Zookeeper的主要应用场景中,其中之一是作为分布式系统的配置中心。实现原理在Zookeeper建立一个根节点,比如/CONFIG,代表某个配置文件。将配置文件中的信息作为根节点的子节点存储,比如配置项timeout=3000,在Zookeeper中展现... 查看详情

zookeeper实现配置中心的实例(原生api实现)(转)

说明:要实现配置中心的例子,可以选择的SDK有很多,原生自带的SDK也是不错的选择。比如使用I0Itec,SpringBoot集成等。大型应用通常会按业务拆分成一个个业务子系统,这些大大小小的子应用,往往会使用一些公用的资源,比... 查看详情

zookeeper的应用场景

...发布/订阅系统,即配置中心。需要发布者将数据发布到Zookeeper的节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和数据的动态更新(可以把我们知道RPC的注册中心看成是此场景的应... 查看详情

用zookeeper作为springcloud的配置中心(转)

本文转自https://blog.csdn.net/CSDN_Stephen/article/details/78856323SpringCloud配置中心的主流实现方式SpringcloudconfigSpringcloudzookeeperconfig以下是这两者的简介SrpingCloudConfigSpringcloudconfig就是和git(svn)集成来实现配置中心。Springcl 查看详情

zookeeper配置文件共享中心

  最近频繁的系统上线,每次打包都要把配置文件替换为正式环境的配置文件,虽然说就是复制粘贴的事,架不住文件杂乱,而且多。  期初的想法是有没有办法将配置文件与系统隔离开来,这样在更新时候,就只需要更新... 查看详情

zookeeper-应用场景与操作

Zookeeper作为一个分布式协调系统提供了一项基本服务:分布式锁服务,分布式锁是分布式协调技术实现的核心内容。像配置管理、任务分发、组服务、分布式消息队列、分布式通知/协调等,这些应用实际上都是基于这项基础服... 查看详情

zookeeper应用场景(代码片段)

...中心主动触发应用重新加载配置以满足实时修改的要求。zookeeper服务就可以当作配置中心来用-首先将配置信息存放到zookeeper的**持久化znode**中。-同时在这些znode上注册数据变更的watch监听。-各应用中集成zookeeper客户端,这些应... 查看详情

.netcore微服务之:基于consul实现服务治理

...法来保证一致性,比复杂的Paxos算法更直接。相比较而言,zookeeper采用的是Paxos,而etcd使用的则是Raft。支持多数据中心,内外网的服务采用不同的端口进行监听。多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑... 查看详情

基于zookeeper的分布式配置中心

    最近在学习zookeeper,发现zk真的是一个优秀的中间件。在分布式环境下,可以高效解决数据管理问题。在学习的过程中,要深入zk的工作原理,并根据其特性做一些简单的分布式环境下数据管理工具。本文首先对zk的工作... 查看详情

zookeeper架构深入浅出(代码片段)

Zookeeper作为一个分布式协调系统提供了一项基本服务:分布式锁服务,分布式锁是分布式协调技术实现的核心内容。像配置管理、任务分发、组服务、分布式消息队列、分布式通知/协调等,这些应用实际上都是基于这项基础服... 查看详情

大数据技术之zookeeper(代码片段)

文章目录1Zookeeper入门1.1概述1.2Zookeeper特点1.3数据结构1.4应用场景2Zookeeper安装2.1本地模式安装部署2.2配置参数解读3Zookeeper实战(开发重点)3.1分布式安装部署3.2客户端命令行操作3.3API应用3.4监听服务器节点动态上下线案... 查看详情

大数据技术之zookeeper(代码片段)

文章目录1Zookeeper入门1.1概述1.2Zookeeper特点1.3数据结构1.4应用场景2Zookeeper安装2.1本地模式安装部署2.2配置参数解读3Zookeeper实战(开发重点)3.1分布式安装部署3.2客户端命令行操作3.3API应用3.4监听服务器节点动态上下线案... 查看详情

zookeeper

zookeeper是一个开源的分布式协调服务,是由雅虎创建的,基于googlechubby。 zookeeper是什么分布式数据一致性的解决方案 zookeeper能做什么数据的发布/订阅(配置中心:disconf) 、负载均衡(dubbo利用了zookeeper机制实现负载... 查看详情

zookeeper注册中心概述(代码片段)

Zookeeper介绍(配合Dubbox使用)  官方推荐使用zookeeoer注册中心,注册中心负责服务地址的注册和查找,相当于目录服务,提供提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力小.  zookeeper是ApacaheHadoop的子项目,... 查看详情

zookeeper

 Zookeeper介绍:  是一个集群管理中心,树形的目录服务,支持变更推送  可以作为集群的管理工具使用  可以集中管理配置文件  注册中心负责服务地址的注册和查找,相当于目录服务,服务提供者和消费者只在启... 查看详情

关于zookeeper

Zookeeper是分布式协调工具应用场景   命名服务(注册中心)Dubbo注册中心  分布式配置中心(SpringCloudconfig)动态管理配置文件信息  消息中间件事件通知(类似发布订阅)  分布式事务(全局协... 查看详情

springboot集成zookeeper注册中心

ZooKeeper是一个分布式服务框架,是ApacheHadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等ZooKeeper是一个树形结构的目录... 查看详情