美文网首页
springboot + zookeeper 的搭建

springboot + zookeeper 的搭建

作者: employeeeee | 来源:发表于2019-01-18 15:25 被阅读0次

    后台管理系统进行到了bgm上传的功能 大概是这样的


    image.png

    但是在我后台管理系统的服务器中上传之后,我的项目如何也下载我上传的背景音乐呢,就是一个同步的功能,
    可以写一个接口,然后传递一个id的参数.
    可以用zookeeper.

    这里我使用的就是zookeeper.
    我个人觉得zookeeper的好处是后台如果挂了 zookeeper还在,
    而且可以搭建多个zookeeper的服务,
    这样就算有一个zookeeper倒下了 还有千千万万个zookeeper.

    首先在pom文件中 引入zookeeper的依赖

    <!-- 引入zookeeper -->
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-framework</artifactId>
                <version>4.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>3.4.11</version>
            </dependency>
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-recipes</artifactId>
                <version>4.0.0</version>
            </dependency>
    
    

    zookeeper在springboot中的配置和ssm是不一样的 因为不需要配置xml文件,所有的配置都是在java类中进行的.

    @Component
    public class ZKCustor {
        /**
         * @author employeeeee
         * @Description:  zookeeper 客户端
         * @date 2019/1/18 14:01
         * @params  * @param null
         */
        private CuratorFramework client = null;
    
        final static Logger log = LoggerFactory.getLogger(ZKCustor.class);
    
        public static final  String ZOOKEEPER_SERVER = "192.168.1.123:2181";
    
        public void init(){
            if (client!=null){
                return;
            }
    
            //创建重试策略
            RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,5);
    
            //创建zookeeper客户端
            client = CuratorFrameworkFactory.builder().connectString(ZOOKEEPER_SERVER)
                    .sessionTimeoutMs(10000)
                    .retryPolicy(retryPolicy)
                    .namespace("admin")
                    .build();
    
            client.start();
    
            try {
                if (client.checkExists().forPath("/bgm")==null){
                    /**
                     * @author employeeeee
                     * @Description: zk有两种节点
                     * @date 2019/1/18 14:07
                     * @params  * @param 持久节点,创建之后 节点会永远存在 除非你手动删除
                     *                   临时节点 会话断开 自动删除
                     */
                    client.create().creatingParentContainersIfNeeded()
                            .withMode(CreateMode.PERSISTENT)
                            .withACL(ZooDefs.Ids.OPEN_ACL_UNSAFE)
                            .forPath("/bgm");
                    log.info("zookeeper初始化成功");
    
                }
            } catch (Exception e) {
                log.error("zookeeper初始化失败");
                e.printStackTrace();
            }
    
        }
    

    具体对应的属性 server就是你的zookeeper部署的server
    namespace 是你建立的节点 都存放的目录下,这里写的是admin

    然后需要在WebMvcService.java中 加入init()
    就是初始化的一个方法.

      @Bean(initMethod = "init")
        public ZKCustor zkCustor(){
            return new ZKCustor();
        }
    
    

    加入这一段就可以了,WebMvcService.java这个文件就是你用来配置静态资源啊 拦截器啊 需要建的类,要跟你的application在同级目录下,

    然后可以测试一下 ,直接运行,可以发现在你的zookeeper的节点中


    image.png

    相关文章

      网友评论

          本文标题:springboot + zookeeper 的搭建

          本文链接:https://www.haomeiwen.com/subject/ikredqtx.html