SpringCloud Consul 服务注册与发现

Consul 通过 Raft 协议实现强一致性, 通过 Agent 进行分布式健康检查,能够减少服务端的心跳检测压力。

相对 Eureka Server 这种集中式心跳检测机制,和采用 P2P 复制模式,不能保证数据一致性,更具有优势。

Consul 采用 Go 语言编写,需要从Consul 官网 https://www.consul.io/downloads,下载版本。

这里consul版本为1.9.4最新版本,SpringCloud版本为2.4.4,采用多模块工程。

1、解压,切换到consul.exe文件目录,使用命令启动,

consul agent -dev

默认客户端访问接口为8500,浏览器中输入http://localhost:8500打开主界面。

2、编写一个日志服务,向 Consul 注册中心注册,

首先添加maven依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

然后启动类上添加注解:

@EnableDiscoveryClient

配置文件中:

server:
  port: 8801
spring:
  application:
    name: logservice
  cloud:
    consul:
      host: localhost
      discovery:
        service-name: logservice

开发一个API接口:

@RestController
public class LogServiceController {

    @GetMapping("/log")
    public String log() {
        return "logservice";
    }
}

3、启动日志服务

4、同样,开发一个订单服务,启动

5、观察Consul管理页面,http://localhost:8500/ui/dc1/services

6、在订单服务中引人Feign,调用日志服务。

maven添加feignclient依赖

<!--feign-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

启动类增加注解:

@EnableFeignClients

编写FeignClient接口:

@FeignClient("logservice")
public interface LogServiceClient {

    @GetMapping("/log")
    String log();

}

编写API接口,

@RestController
public class OrderController {

    @Resource
    private LogServiceClient logServiceClient;

    @GetMapping("order")
    public String order() {
        return logServiceClient.log();
    }

}

7、测试http://localhost:8802/order,输出logservice字符串。

猜你喜欢

转载自blog.csdn.net/suoyx/article/details/115014194