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

微服务架构 | 3.4 HashiCorp Consul 注册中心,第1张

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

3.4 HashiCorp Consul 注册中心

前言1. Consul 基础知识

1.1 Consul 是什么1.2 Consul 的特点 2. 安装并运行 Consul 服务器

2.1 下载 Consul2.2 运行 Consul 服务器 3. 使用 Consul 管理服务提供者

3.1 引入 pom.xml 依赖3.2 修改 bootstrap.yml 配置文件3.3 在主启动类上添加注解3.4 编写业务类,并在 controller 层开放接口 4. 使用 Consul 管理服务消费者

4.1 引入 pom.xml 依赖4.2 修改 bootstrap.yml 配置文件4.3 在主启动类上添加注解4.4 编写业务类 最后


前言

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

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


1. Consul 基础知识 1.1 Consul 是什么

Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发;提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之 Consul 提供了一种完整的服务网格解决方案;它具有很多优点。包括:基于 raft 协议,比较简洁; 支持健康检查,同时支持 HTTP 和 DNS 协议支持跨数据中心的 WAN 集群提供图形界面;跨平台,支持 Linux、Mac、Windows 1.2 Consul 的特点

服务发现:提供 HTTP 和 DNS 两种发现方式;健康监测:支持多种方式:HTTP、TCP、Docker、Shell 脚本定制化监控;KV 存储:Key、Value的存储方式;多数据中心:支持多数据中心;可视化 Web 界面;
2. 安装并运行 Consul 服务器

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

2.1 下载 Consul

访问连接:https://www.consul.io/downloads;

下载解压后:

2.2 运行 Consul 服务器

在 consul.exe 程序所在目录下打开 cmd 命令窗口;键入命令 consul ,显示下面说明安装成功;

此时键入命令 consul agent -dev 使用开发模式启动;

访问连接可以进入 Consul 首页:http://localhost:8500;


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

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

3.1 引入 pom.xml 依赖

    org.springframework.cloud
    spring-cloud-starter-consul-discovery

3.2 修改 bootstrap.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 在主启动类上添加注解

@EnableDiscoveryClient:使用其他组件(Nacos、zookeeper、Consul)作为注册中心; 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 依赖

同提供者;


    org.springframework.cloud
    spring-cloud-starter-consul-discovery

4.2 修改 bootstrap.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 在主启动类上添加注解

同提供者;@EnableDiscoveryClient:使用其他组件(Nacos、zookeeper、Consul)作为注册中心; 4.4 编写业务类

由于我们使用 Ribbon + RestTemplate 的负载均衡策略,因此需要在 IoC 容器中添加一个 RestTemplate JavaBean;详情请见《4.1 基于 Ribbon 的负载均衡详解》;该 Bean 可以在主启动类中添加;也可以在主启动类所在包或子包的 config 包中添加,如下:

@Configuration
public class ApplicationContextBean{
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

我们在 controller 层开放接口给客户端,并在该接口里调用提供者的 API;

@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;
    }
}


最后
新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5709402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存