springboot + zookeeper 的搭建

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

《springboot + zookeeper 的搭建》 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的节点中

《springboot + zookeeper 的搭建》 image.png

    原文作者:employeeeee
    原文地址: https://www.jianshu.com/p/47f0c0f77421
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞