zookeeper和consul作为注册中心

zookeeper作为注册中心

简介:zookeeper是分布式协调工具,利用其特新可作为注册中心。

工具资源下载百度云链接:https://pan.baidu.com/s/1nhOr7zWByK7Poo7ZhuoKeQ   提取码:8hb1 

请下载   客户端工具:ZooInspector.zip    zookeeper:zookeeper-3.3.6.zip

   1. zookeeper-3.3.6.zip下载后解压,启动zookeeper,在bin目录下双击zkServer.cmd,启动后的结果如图:

  2. 解压客户端工具 ZooInspector.zip,启动客户端工具,连接zookeeper,在build目录下双击zookeeper-dev-ZooInspector.jar,  如图:

配置连接信息,如图:

连接成功后:

 3. zookeeper启动成功后,开始写代码。

  3.1  创建 springcloud_zookeeper,导入maven依赖:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.10.RELEASE</version>
    </parent>

    <!-- 管理依赖 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <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>
        </dependency>
    </dependencies>

    <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

  3.2  在上面的项目中创建module:zk_member(会员服务)

   3.2.1 maven依赖导入:

<!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    3.2.2 配置yml文件:

###会员服务的端口号
server:
  port: 8002
###服务别名----服务注册到注册中心名称
spring:
  application:
    name: zk-member
  cloud:
    zookeeper:
      connect-string: 127.0.0.1:2181

   3.2.3 创建启动类

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

@SpringBootApplication
@EnableDiscoveryClient
public class MemberApp {
    public static void main(String[] args) {
        SpringApplication.run(MemberApp.class, args);
    }
}

在eureka中的启动类是使用@EnableEurekaClient,使用zookeeper或consul作为注册中心时要换成@EnableDiscoveryClient

   3.2.4 controller层

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("member")
public class MemberController {
    @RequestMapping("getMember")
    public String getMember() {
        return "Success!";
    }
}

 3.3  在上面的项目中创建module:zk-order(订单服务)

  3.3.1 导入maven依赖

<!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

  3.3.2 配置yml文件

###订单服务的端口号
server:
  port: 8003
###服务别名----服务注册到注册中心名称
spring:
  application:
    name: zk-order
  cloud:
    zookeeper:
      connect-string: 192.168.0.112:2181

  3.3.3 启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class OrderApp {
    public static void main(String[] args) {
        SpringApplication.run(OrderApp.class, args);
    }

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

  3.3.4 controller层

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.List;

@RestController
@RequestMapping("order")
public class OrderController {
    @Autowired
    private DiscoveryClient discoveryClient;

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("getOrder")
    public String getOrder() {
        String serviceUrl = getServiceUrl("zk-member") + "/member/getMember";
        String result = restTemplate.getForObject(serviceUrl, String.class);
        System.out.println("订单服务调用会员服务:" + result);
        return result;
    }


    private String getServiceUrl(String serviceId) {
        List<ServiceInstance> services = discoveryClient.getInstances(serviceId);
        if (!services.isEmpty()) {
            return services.get(0).getUri().toString();
        }
        return null;
    }
}

分别启动订单服务和会员服务,查看zookeeper的节点如图:

用zookeeper作为注册中心时,服务启动后会自动在zk上创建临时节点。

访问订单服务,看是否能调用到会员服务,结果如图:

从以上的2个图中可看出利用zk作为注册中心,远程调用服务成功!

consul作为注册中心

工具资源下载百度云链接:https://pan.baidu.com/s/1nhOr7zWByK7Poo7ZhuoKeQ   提取码:8hb1 

下载consul的windows版本,也可到官网下载。

下载后进行解压,然后使用cmd启动consul,命令为 ./consul.exe agent -dev -ui -node=cy

参数说明  -dev开发服务器模式启动-node结点名为cy-ui可以用界面访问,默认能访问。

启动后如图:

访问默认地址:http://127.0.0.1:8500/

代码我在上面的zk项目中进行修改:

1. 修改maven依赖,将整合consul的依赖替换zk的依赖

        <!-- SpringBoot整合zookeeper -->
        <!--<dependency>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>-->
        <!--</dependency>-->

        <!-- SpringBoot整合consul -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

2. 修改yml文件

###服务别名----服务注册到注册中心名称
#spring:
#  application:
#    name: zk-member
#  cloud:
#    zookeeper:
#      connect-string: 192.168.0.112:2181
###订单服务的端口号
server:
  port: 8002
spring:
  application:
    name: consul-member
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        hostname: 192.168.0.112
###订单服务的端口号
server:
  port: 8003
###服务别名----服务注册到注册中心名称
#spring:
#  application:
#    name: zk-order
#  cloud:
#    zookeeper:
#      connect-string: 192.168.0.112:2181
spring:
  application:
    name: consul-order
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        hostname: 192.168.0.112

注意:订单服务中调用会员服务的serviceid也需根据yml进行修改

3. 启动项目,效果如图:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值