当前位置:   article > 正文

第四章 Consul服务注册与发现

第四章 Consul服务注册与发现

Consul服务注册与发现

gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数据库集群、分布式日志、系统监控链路追踪。

1. Consul简介

Consul是HashiCorp公司推出的开源工具,Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。Consul是分布式的、高可用的、 可横向扩展的用于实现分布式系统的服务发现与配置。

  • 服务发现(Service Discovery):Consul提供了通过DNS或者HTTP接口的方式来注册服务和发现服务。一些外部的服务通过Consul很容易的找到它所依赖的服务。

  • 健康检查(Health Checking):Consul的Client可以提供任意数量的健康检查,既可以与给定的服务相关联(“webserver是否返回200 OK”),也可以与本地节点相关联(“内存利用率是否低于90%”)。操作员可以使用这些信息来监视集群的健康状况,服务发现组件可以使用这些信息将流量从不健康的主机路由出去。

  • Key/Value存储:应用程序可以根据自己的需要使用Consul提供的Key/Value存储。 Consul提供了简单易用的HTTP接口,结合其他工具可以实现动态配置、功能标记、领袖选举等等功能。

  • 安全服务通信:Consul可以为服务生成和分发TLS证书,以建立相互的TLS连接。意图可用于定义允许哪些服务通信。服务分割可以很容易地进行管理,其目的是可以实时更改的,而不是使用复杂的网络拓扑和静态防火墙规则。

  • 多数据中心:Consul支持开箱即用的多数据中心. 这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域。

consul官网:What is Consul? | Consul | HashiCorp Developer,consul有可视化web界面 consul安装于Linux系统。 中文网的consul:Spring Cloud Consul 中文文档 参考手册 中文版

2. Consul安装

官网:Deploy Consul on VMs | Consul | HashiCorp Developer

  1. 下载下来双击consul.exe文件

  2. 使用开发模式启动:

1.consul agent -dev
2.访问http://192.168.25.153:8500

3. 服务提供者

  1. 创建cloud-providerconsul-payment8006项目

  2. pom文件

  1. <dependency>
  2.   <groupId>org.springframework.cloud</groupId>
  3.   <artifactId>spring-cloud-starter-consul-discovery</artifactId>
  4.       </dependency>
  1. application.yaml

  1. server:
  2. port: 8006
  3. spring:
  4. application:
  5.   name: consul-provider-payment
  6. cloud:
  7.   consul:
  8.     discovery:
  9.      #注册中心上的服务名称
  10.       service-name: ${spring.application.name}
  11.      #注册中心上的ip和端口
  12.     host: 192.168.25.153
  13.     port: 8500
  1. 主启动类

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class PaymentMain8006 {
  4.    public static void main(String[] args) {
  5.        SpringApplication.run(PaymentMain8006.class,args);
  6.   }
  7. }
  1. controller层

  1. @RestController
  2. @Slf4j
  3. public class PaymentController {
  4.    @Value("${server.port}")
  5.    private String serverPort;
  6.    @RequestMapping(value = "/payment/consul")
  7.    public String paymentConsul(){
  8.        return "spring cloud with consul:"+serverPort+"\t"+ UUID.randomUUID().toString();
  9.   }
  10. }

测试:

上面那个爆红出错是因为去掉了spring-boot-starter-actuator包,加上测试通过。

4. 服务消费者

  1. 创建服务消费者cloud-consumerconsul-order80

  2. pom文件跟cloud-providerconsul-payment8006一样

  3. yaml文件跟cloud-providersonsul-payment8006一样,除端口

  4. 主启动类也是,除类名,其他一样。

  5. config和controller有cloud-consumerzk-order80基本一样

测试:

5. 三个注册中心异同点

  • Consistency(一致性)

  • Availability(可用性)

  • Partition tolerance(分区容忍性)

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性可用性分区容错性这三个需求,因此,根据CAP理论原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则的三大类:

  • CA:单点集群,满足一致性、可用性的系统,通常在可扩展性上不太强大

  • CP:满足一致性、分区容忍性的系统,通常性能不是特别高

  • AP:满足可用性、分区容忍性的系统,通常对一致性要求低一些

img

组件名语言CAP服务健康检查对外暴露接口SPRING CLOUD集成
EurekaJavaAP可配支持HTTP已集成
ZookeeperJavaCP支持客户端已集成
ConsulGoCP支持HTTP/DNS已集成
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/505796
推荐阅读
相关标签
  

闽ICP备14008679号