Zookeeper如何實(shí)現(xiàn)分布式服務(wù)配置中心詳解
1 Linux安裝并啟動(dòng)Zookeeper
1.1 安裝
下載鏈接:https://archive.apache.org/dist/zookeeper/
1.1.1 安裝
[root@iZ1608aqb7ntn9Z tmp]# ls apache-zookeeper-3.5.7-bin.tar.gz hsperfdata_root [root@iZ1608aqb7ntn9Z tmp]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz apache-zookeeper-3.5.7-bin/docs/ apache-zookeeper-3.5.7-bin/docs/skin/ apache-zookeeper-3.5.7-bin/docs/images/ ...... [root@iZ1608aqb7ntn9Z tmp]# mv apache-zookeeper-3.5.7-bin /usr/local/zookeeper [root@iZ1608aqb7ntn9Z tmp]# cd /usr/local/zookeeper [root@iZ1608aqb7ntn9Z zookeeper]# cd conf/ [root@iZ1608aqb7ntn9Z conf]# ls configuration.xsl log4j.properties zoo_sample.cfg [root@iZ1608aqb7ntn9Z conf]# cp zoo_sample.cfg zoo.cfg [root@iZ1608aqb7ntn9Z conf]# ls configuration.xsl log4j.properties zoo.cfg zoo_sample.cfg [root@iZ1608aqb7ntn9Z conf]# vim zoo.cfg # 修改zoo.cfg配置文件 內(nèi)容為: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper/data clientPort=2181 # 保存退出 [root@iZ1608aqb7ntn9Z conf]# cd .. [root@iZ1608aqb7ntn9Z zookeeper]# mkdir data [root@iZ1608aqb7ntn9Z zookeeper]# ls bin conf data docs lib LICENSE.txt NOTICE.txt README.md README_packaging.txt
1.2 啟動(dòng)
[root@iZ1608aqb7ntn9Z zookeeper]# cd bin/ [root@iZ1608aqb7ntn9Z bin]# ./zkServer start ...... [root@iZ1608aqb7ntn9Z bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Error contacting service. It is probably not running.
在上邊我們發(fā)現(xiàn)了啟動(dòng)錯(cuò)誤,查看日志,發(fā)現(xiàn)8080端口被占用,通過(guò)查閱Zookeeper3.5的官方文檔,發(fā)現(xiàn)這是Zookeeper3.5的新特性:
所以我們需要再次修改配置文件,修改啟動(dòng)端口:
在配置文件中加入admin.serverPort=8888
然后再次啟動(dòng),查看狀態(tài):
[root@iZ1608aqb7ntn9Z bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper3.5.7/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: standalone
發(fā)現(xiàn)啟動(dòng)成功,接下來(lái)我們用客戶端鏈接:
[root@iZ1608aqb7ntn9Z bin]# ./zkCli.sh Connecting to localhost:2181 ...... WatchedEvent state:SyncConnected type:None path:null [zk: localhost:2181(CONNECTING) 0] ls / [zookeeper]
1.3 阿里云安全組放開2181端口
(略)
2 zookeeper配置
[zk: localhost:2181(CONNECTING) 0] ls / [zookeeper] [zk: localhost:2181(CONNECTED) 4] create /config Created /config [zk: localhost:2181(CONNECTED) 6] create /config/hello # config后的名稱要與spring.name的名稱對(duì)應(yīng) Created /config/hello [zk: localhost:2181(CONNECTED) 7] create /config/hello/student.name zs Created /config/hello/student.name [zk: localhost:2181(CONNECTED) 8] get /config/hello/student.name zs
3 Spring Boot配置
3.1 依賴
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <version>2.1.4.RELEASE</version> <type>pom</type> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-config</artifactId> <version>2.1.4.RELEASE</version> <type>pom</type> <scope>runtime</scope> </dependency> </dependencies>
注意:一定要注意Spring Boot和Spring Cloud的版本對(duì)應(yīng)!
3.2 配置文件
application.yml
server: port: 0 # 表示隨機(jī)端口 student: name: 1
bootstrap.yml
spring: cloud: zookeeper: connect-string: 8.131.57.161:2181 # zk服務(wù)端地址 enabled: true # 啟動(dòng)遠(yuǎn)程配置 application: name: hello
3.3 項(xiàng)目代碼
/** * @desc: 控制器 * @author: YanMingXin * @create: 2021/8/20-16:31 **/ @RestController public class HelloController { @Value("${student.name}") private String name; @RequestMapping("/hello") public String getName() { return name; } }
3.4 啟動(dòng)測(cè)試
下面我們來(lái)修改下遠(yuǎn)程配置,看下是不是真的使用了zookeeper的配置文件:
[zk: localhost:2181(CONNECTED) 9] delete /config/hello/student.name [zk: localhost:2181(CONNECTED) 10] get /config/hello/student.name org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /config/hello/student.name [zk: localhost:2181(CONNECTED) 11] create /config/hello/student.name ls Created /config/hello/student.name [zk: localhost:2181(CONNECTED) 12] get /config/hello/student.name ls
重新啟動(dòng)項(xiàng)目:
總結(jié)
到此這篇關(guān)于Zookeeper如何實(shí)現(xiàn)分布式服務(wù)配置中心的文章就介紹到這了,更多相關(guān)Zookeeper分布式服務(wù)配置中心內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何利用java中String類的substring()字符串截取最后一個(gè)字符
Java中的String是不可變的類型,因此substring()方法并不會(huì)改變?cè)址?而是返回了一個(gè)新的字符串,這篇文章主要介紹了如何利用java中String類的substring()字符串截取最后一個(gè)字符,需要的朋友可以參考下2023-11-11mybatis?<foreach>標(biāo)簽動(dòng)態(tài)增刪改查方式
這篇文章主要介紹了mybatis?<foreach>標(biāo)簽動(dòng)態(tài)增刪改查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Java實(shí)現(xiàn)飛機(jī)大戰(zhàn)-II游戲詳解
《飛機(jī)大戰(zhàn)-II》是一款融合了街機(jī)、競(jìng)技等多種元素的經(jīng)典射擊手游。游戲是用java語(yǔ)言實(shí)現(xiàn),采用了swing技術(shù)進(jìn)行了界面化處理,感興趣的可以了解一下2022-02-02SpringBoot定制三種錯(cuò)誤頁(yè)面及錯(cuò)誤數(shù)據(jù)方法示例
Spring Boot提供的默認(rèn)異常處理機(jī)制通常并不一定適合我們實(shí)際的業(yè)務(wù)場(chǎng)景,因此,我們通常會(huì)根據(jù)自身的需要對(duì)Spring Boot全局異常進(jìn)行統(tǒng)一定制,例如定制錯(cuò)誤頁(yè)面,定制錯(cuò)誤數(shù)據(jù)等。本文主要介紹了SpringBoot三種自定義錯(cuò)誤頁(yè)面的實(shí)現(xiàn),快來(lái)學(xué)習(xí)吧2021-12-12Java矩陣連乘問題(動(dòng)態(tài)規(guī)劃)算法實(shí)例分析
這篇文章主要介紹了Java矩陣連乘問題(動(dòng)態(tài)規(guī)劃)算法,結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)矩陣連乘的算法原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-11-11SpringBoot中的static靜態(tài)資源訪問、參數(shù)配置、代碼自定義訪問規(guī)則詳解
這篇文章主要介紹了SpringBoot的static靜態(tài)資源訪問、參數(shù)配置、代碼自定義訪問規(guī)則,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07spring boot 防止重復(fù)提交實(shí)現(xiàn)方法詳解
這篇文章主要介紹了spring boot 防止重復(fù)提交實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了spring boot 防止重復(fù)提交具體配置、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2019-11-11SpringBoot去除參數(shù)前后空格和XSS過(guò)濾
本文主要介紹了SpringBoot去除參數(shù)前后空格和XSS過(guò)濾,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09