springboot + zookeeper 的搭建

后臺管理系統(tǒng)進(jìn)行到了bgm上傳的功能 大概是這樣的


image.png

但是在我后臺管理系統(tǒng)的服務(wù)器中上傳之后,我的項(xiàng)目如何也下載我上傳的背景音樂呢,就是一個(gè)同步的功能,
可以寫一個(gè)接口,然后傳遞一個(gè)id的參數(shù).
可以用zookeeper.

這里我使用的就是zookeeper.
我個(gè)人覺得zookeeper的好處是后臺如果掛了 zookeeper還在,
而且可以搭建多個(gè)zookeeper的服務(wù),
這樣就算有一個(gè)zookeeper倒下了 還有千千萬萬個(gè)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是不一樣的 因?yàn)椴恍枰渲脁ml文件,所有的配置都是在java類中進(jìn)行的.

@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;
        }

        //創(chuàng)建重試策略
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,5);

        //創(chuàng)建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有兩種節(jié)點(diǎn)
                 * @date 2019/1/18 14:07
                 * @params  * @param 持久節(jié)點(diǎn),創(chuàng)建之后 節(jié)點(diǎn)會永遠(yuǎn)存在 除非你手動(dòng)刪除
                 *                   臨時(shí)節(jié)點(diǎn) 會話斷開 自動(dòng)刪除
                 */
                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();
        }

    }

具體對應(yīng)的屬性 server就是你的zookeeper部署的server
namespace 是你建立的節(jié)點(diǎn) 都存放的目錄下,這里寫的是admin

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

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

加入這一段就可以了,WebMvcService.java這個(gè)文件就是你用來配置靜態(tài)資源啊 攔截器啊 需要建的類,要跟你的application在同級目錄下,

然后可以測試一下 ,直接運(yùn)行,可以發(fā)現(xiàn)在你的zookeeper的節(jié)點(diǎn)中


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容