zookeeper 服务注册中心实战

1.linux服务器安装zookeeper

具体安装见之前的博客:zookeeper入门

2.启动zookeeper

image-20200805175920406

我们以一个订单服务调用支付服务为例

3.创建支付服务

pom

<dependencies>

        <!-- SpringBoot整合zookeeper客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--先排除自带的zookeeper3.5.3-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.4.9版本-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>top.xkuna</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>


        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

此时我们需要注意的是zookeeper的依赖版本要大于等于服务器的zookeeper版本,所以我们将spring-cloud-starter-zookeeper-discovery依赖中的zookeeper排除,然后导入大于等于服务器的zookeeper版本的依赖

建议看完下面的步骤 在服务启动前 再看踩坑点

———————踩坑点——————————

关于slf4j-log4j12的冲突

spring-boot-starter-web依赖中含有log4j及其他相关的jar包

image-20200805181226309

与zookeeper依赖(不是starter的zookeeper,是后来单独引入的zookeeper)自带的slf4j-log4j12jar包冲突

image-20200805181253353

那么我们不处理的情况下,启动会报错

image-20200805181413903

解决的办法有两个:

1.将zookeeper的slf4j-log4j12排除

image-20200805181540057

修改后启动成功 无其他的报错

image-20200805181718343

2.修改zookeeper和 web 依赖的顺序,先导入 web的依赖,再导入zookeeper的依赖

image-20200805182108325

此时 ,会报绑定错误,但是不影响服务的启动

image-20200805182206843

yml

image-20200805183011655

创建主启动类

image-20200805183041585

注意需要在主启动类 打上 @EnableDiscoveryClient注解

创建controller

image-20200805183119372

启动服务

如果出现报错先看上面写的pom方面及踩坑点

image-20200805183249632

启动成功查看zookeeper

image-20200805183324441

查看根节点 发现多了 /service节点

/service节点是我们的服务节点

image-20200805183450309

service节点下便是我们注册进的cloud-provider-payment服务节点

image-20200805183632849

继续查看

image-20200805183710042

看到的则是我们的支付服务注册进的正在运行的一个子服务,如果我们注册的支付服务是服务集群 此时在cloud-provider-payment服务节点下有多个子服务节点

我们获取该子服务的信息

image-20200805184102349

我们复制查看json,发现json中含有该子服务的信息

image-20200805184248472

​ 我们试想该服务节点是临时节点还是持久节点

我们关掉服务查看发现支付服务列表为空 说明服务节点为临时节点

image-20200805184715821

4.创建订单服务

pom

 <dependencies>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- SpringBoot整合zookeeper客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--先排除自带的zookeeper-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.4.9版本-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

yml

image-20200805184918660

创建主启动类

image-20200805184944328

创建restTempalte配置类

image-20200805185121195

创建controller 调用支付服务

image-20200805185329578

启动订单服务

image-20200805185431007

启动成功后查看zookeeper是否注册了该服务

image-20200805185538559

使用postman测试订单服务调用支付服务

image-20200805185712550

5.结束语

此时zookeeper服务注册中心 简单的服务之间调用就实现了

是不是很简单呢~~ 😄😄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值