Zookeeper如何实现分布式服务配置中心详解
Zookeeper在实际使用场景很多,比如配置中心,分布式锁,注册中心等,下面这篇文章主要给大家介绍了关于Zookeeper如何实现分布式服务配置中心的相关资料,需要的朋友可以参考下
目录
1 Linux安装并启动Zookeeper
1.1 安装
1.1.1 安装
1.2 启动
3 Spring Boot配置
3.1 依赖
3.2 配置文件
3.3 项目代码
3.4 启动测试
总结
1 Linux安装并启动Zookeeper
1.1 安装
下载链接:https://archive.apache.org/dist/zookeeper/
1.1.1 安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | [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配置文件 内容为: 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 启动
1 2 3 4 5 6 7 8 | [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. |
在上边我们发现了启动错误,查看日志,发现8080端口被占用,通过查阅Zookeeper3.5的官方文档,发现这是Zookeeper3.5的新特性:
所以我们需要再次修改配置文件,修改启动端口:
在配置文件中加入admin.serverPort=8888
然后再次启动,查看状态:
1 2 3 4 5 | [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 |
发现启动成功,接下来我们用客户端链接:
1 2 3 4 5 6 | [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配置
1 2 3 4 5 6 7 8 9 10 | [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的名称对应 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 依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <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的版本对应!
3.2 配置文件
application.yml
1 2 3 4 | server: port: 0 # 表示随机端口 student: name: 1 |
bootstrap.yml
1 2 3 4 5 6 7 | spring: cloud: zookeeper: connect-string: 8.131.57.161:2181 # zk服务端地址 enabled: true # 启动远程配置 application: name: hello |
3.3 项目代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /** * @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 启动测试
下面我们来修改下远程配置,看下是不是真的使用了zookeeper的配置文件:
1 2 3 4 5 6 7 | [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 |
重新启动项目:
总结
到此这篇关于Zookeeper如何实现分布式服务配置中心的文章就介绍到这了
原文链接:https://blog.csdn.net/Mr_YanMingXin/article/details/119848651