目录
  • 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 安装

              [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 启动

              [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的新特性:

              Zookeeper如何实现分布式服务配置中心详解

              所以我们需要再次修改配置文件,修改启动端口:

              在配置文件中加入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
              

              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的版本对应!

              3.2 配置文件

              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
              

              3.3 项目代码

              /**
               * @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如何实现分布式服务配置中心详解

              下面我们来修改下远程配置,看下是不是真的使用了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如何实现分布式服务配置中心详解

              总结

              声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。