微服务架构 | 3.4 HashiCorp Consul 注册中

2022-01-18  本文已影响0人  多氯环己烷

前言

参考资料
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》
《Consul 官网》

Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。它提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之 Consul 提供了一种完整的服务网格解决方案;


1. Consul 基础知识

1.1 Consul 是什么

1.2 Consul 的特点

2. 安装并运行 Consul 服务器

基于 Win10 下的 Consul 服务器安装;

2.1 下载 Consul

Consul 解压.png

2.2 运行 Consul 服务器

使用开发模式启动.png Consul 首页.png

3. 使用 Consul 管理服务提供者

使用 Consul 构建服务提供者大致与 Nacos 和 Zookeeper 相同;Nacos 与 Zookeeper 的构建方式详情请见《3.2 Alibaba Nacos 注册中心》与《3.3 Apache Zookeeper 注册中心》;

3.1 引入 pom.xml 依赖

<!--SpringCloud consul-server -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

3.2 修改 boostrap.yml 配置文件

# consul 服务提供者端口
server:
  port: 8006
spring:
  application:
    name: consul-provider
# consul 注册中心地址
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        #hostname: 127.0.0.1
        service-name: ${spring.application.name}

3.3 在主启动类上添加注解

3.4 编写业务类,并在 controller 层开放接口

这里编写一个简单接口仅作为示例;

@RestController
public class providerController{
    @Value("${server.port}")
    private String serverPort;

    @RequestMapping(value = "/provider/consul")
    public String providerConsul(){
        return "springcloud with consul: "+serverPort+"\t"+ UUID.randomUUID().toString();
    }
}

4. 使用 Consul 管理服务消费者

使用 Consul 构建服务消费者大致与 Nacos 和 Zookeeper 相同;Nacos 与 Zookeeper 的构建方式详情请见《3.2 Alibaba Nacos 注册中心》与《3.3 Apache Zookeeper 注册中心》;

4.1 引入 pom.xml 依赖

<!--SpringCloud consul-server -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

4.2 修改 boostrap.yml 配置文件

# consul 服务消费者端口号
server:
  port: 80
spring:
  application:
    name: consul-consumer
# consul 注册中心地址
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        #hostname: 127.0.0.1
        service-name: ${spring.application.name}

4.3 在主启动类上添加注解

4.4 编写业务类

@Configuration
public class ApplicationContextBean{
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
@RestController
public class ComsumerConsulController{
    public static final String INVOKE_URL = "http://consul-provider";

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/consumer/consul")
    public String paymentInfo(){
        String result = restTemplate.getForObject(INVOKE_URL+"/provider/consul", String.class);
        System.out.println("消费者调用提供者获取服务--->result:" + result);
        return result;
    }
}

最后

\color{blue}{\rm\small{新人制作,如有错误,欢迎指出,感激不尽!}}

\color{blue}{\rm\small{欢迎关注我,并与我交流!}}

\color{blue}{\rm\small{如需转载,请标注出处!}}

上一篇下一篇

猜你喜欢

热点阅读