本篇文章为大家展示了Zookeeper如何实现分布式服务配置中心,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
下载链接:https://archive.apache.org/dist/zookeeper/
[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
[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
然后再次启动,查看状态:
[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
发现启动成功,接下来我们用客户端链接:
[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的名称对应 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
<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的版本对应!
application.yml
server: port: 0 # 表示随机端口 student: name: 1
bootstrap.yml
spring: cloud: zookeeper: connect-string: 8.131.57.161:2181 # zk服务端地址 enabled: true # 启动远程配置 application: name: hello
/** * @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; } }
下面我们来修改下远程配置,看下是不是真的使用了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
重新启动项目:
上述内容就是Zookeeper如何实现分布式服务配置中心,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。