第四章 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文件

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

server:
  port: 8006
spring:
  application:
    name: consul-provider-payment
  cloud:
    consul:
      discovery:
      #注册中心上的服务名称
        service-name: ${spring.application.name}
      #注册中心上的ip和端口
      host: 192.168.25.153
      port: 8500
  1. 主启动类

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

@RestController
@Slf4j
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;
​
    @RequestMapping(value = "/payment/consul")
    public String paymentConsul(){
        return "spring cloud with consul:"+serverPort+"\t"+ UUID.randomUUID().toString();
    }
}

测试:

上面那个爆红出错是因为去掉了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已集成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我愿为一粒沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值