后臺管理系統(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