[SpringCloud教程]4. Zookeeper服务注册中心集成

介绍基于Zookeeper的SpringCloud服务注册中心搭建,此种注册中心实现方式,实际使用不多,这里只作为备忘参考

关于本篇文章所属父项目前文已经介绍,这里不再赘述

  • 上篇文章地址:https://www.jianshu.com/p/d5a56dbeddd3
  • SpringCloud教程合集
  • 案例项目地址: https://gitee.com/spzmmd/spring-cloud-demo

安装Zookeeper服务

Vmware安装CentOS7

建议zookeeper安装到Linux系统,本地可使用虚拟机代替,虚拟机安装CentOS7可于此文查看: VMware 安装 CentOS 7,安装好虚拟机后,假设虚拟机ip为192.168.115.50(宿主机可以ping通虚拟机),且建立了用户app。

CentOS7里安装Zookeeper3.4.9(需要Java环境)

  • 下载地址
  • 下载后上传到CentOS7,解压到/home/app/soft目录下
  • 进入目录/home/app/soft/zookeeper-3.4.9/conf
  • 将zoo_sample.cfg文件复制一份并重命名为zoo.cfg
  • 进入目录/home/app/soft/zookeeper-3.4.9/bin,执行下方命令来启动zookeeper服务
# 启动服务 2181端口
sh zkServer.sh start

# 检查是否启动成功
sh zkServer.sh status
  • 至此,宿主机应该可以在192.168.115.50:2181访问到zookeeper

集群

关于zookeeper集群,网上有很多教程,这里不赘述

服务提供者模块(ms-provider-zookeeper)

模块搭建

基于Zookeeper的服务提供者模块搭建方法与基于Eureka客户端的搭建方法类似,区别是基于Eureka客户端服务提供者需要在启动类声明@EnableEurekaClient,基于zookeeper的不需要;并且两者依赖有些不同

  • 在根项目pom.xml的modules标签下加入模块 ms-provider-zookeeper
  • 在项目根目录建立 ms-provider-zookeeper 目录,并在ms-provider-zookeeper目录下建立pom.xml文件


    4.0.0
    
        com.spz.demo
        spring-cloud-demo
        1.0-SNAPSHOT
    
    ms-provider-zookeeper
    jar

    服务提供者模块 - 使用zookeeper注册中心

    

        
        
            org.springframework.cloud
            spring-cloud-starter-zookeeper-discovery
            
                
                    org.apache.zookeeper
                    zookeeper
                
            
        
        
        
            org.apache.zookeeper
            zookeeper
            3.4.9
            
                
                    org.slf4j
                    slf4j-log4j12
                
            
        

        
        
            org.springframework.cloud
            spring-cloud-starter-zipkin
        

        
            org.springframework.boot
            spring-boot-starter-actuator
        

        
            com.spz.demo
            api-common
            ${project.version}
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.projectlombok
            lombok
            true
        

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
        
        
            
                src/main/resources
                true
            
        
    



  • 建立src/main/java和src/main/resources目录
  • 在src/main/java目录下建立包com.spz.demo.scloud.provider.zk
  • 在zk包下建立SpringBoot启动类 ProviderZookeeperApp.java
package com.spz.demo.scloud.provider.zk;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 启动类
 * @author spzmmd
 * @createTime 2021/04/08
 */
@EnableDiscoveryClient
@SpringBootApplication
public class ProviderZookeeperApp {
    public static void main(String[] args) {
        SpringApplication.run(ProviderZookeeperApp.class, args);
    }
}
  • AppServiceImpl类和IndexController类与前文基于Eureka客户端的服务提供者相关代码相同,请查看前文,不同的是com.spz.demo.scloud.provider.zk.service.AppServiceImpl#instanceNameAndPort方法返回值里可以添加一句": (基于Zookeeper注册中心)"来便于测试
  • 在src/main/resources目录下建立application.properties文件
server.port=8001
spring.application.name=MS-PROVIDER-ZOOKEEPER

spring.cloud.zookeeper.connect-string=192.168.115.50:2181

集群部署

与前文基于Eureka客户端的服务提供者部署方法一致,修改idea启动配置,设置vm options,加入下列配置即可

-Dserver.port=8001

服务消费者模块(ms-consumer-zookeeper)

消费者模块搭建方法与前文类似,这里不再赘述,请参考案例项目里的ms-consumer-zookeeper模块,启动ms-provider-zookeeper多节点以及ms-consumer-zookeeper单节点,不断访问下方链接:

http://localhost:7001/discovery/zookeeper/appService/projectInfo

将交替出现8001、8002两个服务提供者端口,证明服务均已成功注册进zookeeper

{
"code": 2000,
"message": "MS-PROVIDER-ZOOKEEPER:8002: (基于Zookeeper注册中心)",
"data": null
}

{
"code": 2000,
"message": "MS-PROVIDER-ZOOKEEPER:8001: (基于Zookeeper注册中心)",
"data": null
}

原创不易,转载请在开头著名文章来源和作者。如果我的文章对您有帮助,请点赞/收藏/关注鼓励支持一下吧❤❤❤❤❤❤

你可能感兴趣的:([SpringCloud教程]4. Zookeeper服务注册中心集成)