• 「SpringCloud」03 Consul服务注册与发现


    SpringCloud—Consul服务注册与发现

    笔记整理自【尚硅谷】周阳SpringCloud框架开发教程

    consul
    image-20220801123922304

    1. Consul简介

    Consul官网

    Ⅰ. 什么是Consul

    image-20220803123248194

    Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司 用 Go 语言开发。

    提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。

    它具有很多优点。包括: 基于 raft 协议,比较简洁; 支持健康检查, 同时支持 HTTP 和 DNS 协议 支持跨数据中心的 WAN 集群 提供图形界面 跨平台,支持 Linux、Mac、Windows。

    Ⅱ. Consul可以做什么

    • 服务发现Service Discovery:提供HTTP和DNS两种发现方式。
    • 健康监测Health Checking:支持多张方式,HTTP、TCP、Docker、Shell脚本定制化
    • KV存储:Key、Value的存储方式
    • 多数据中心:Consul支持多数据中心
    • 可视化Web界面

    2. 安装并运行Consul

    官网下载Windows的64位版本Consul后,下载的是zip压缩包,将压缩包解压后,里面只有一个consul.exe文件,如图:

    image-20220803205039962

    双击.exe文件即可安装运行Consul,使用cmd查看版本号信息,为了跟老师的版本一致我也下了v1.6.1:

    consul --version
    
    • 1

    image-20220803205407264

    • 使用开发模式启动

      consul agent -dev
      
      • 1

      image-20220803205437343

    • 通过以下地址可以访问Consul的首页:http://localhost:8500

    • 结果页面,和Eureka一样,有一个前端可视化Web界面:

      image-20220803205844908

    3. 服务提供者

    • 建Module

      cloud-providerconsul-payment8006

    • 改POM

      <dependency>
          <groupId>org.springframework.cloudgroupId>
          <artifactId>spring-cloud-starter-consul-discoveryartifactId>
      dependency>
      
      • 1
      • 2
      • 3
      • 4

      image-20220803211242845

    • 写YML

      image-20220803211552195

    • 主启动

      image-20220803211702552

    • 业务类

      image-20220803212048197

    • 测试

      image-20220803212629805

      image-20220803213211780

      http://localhost:8006/payment/consul

      image-20220803212649295

    4. 服务消费者

    • 建Module

      cloud-consumerconsul-order80

    • 改POM

      与提供者一样

      <dependency>
          <groupId>org.springframework.cloudgroupId>
          <artifactId>spring-cloud-starter-consul-discoveryartifactId>
      dependency>
      
      • 1
      • 2
      • 3
      • 4

      image-20220803213520448

    • 写YML

      image-20220803213644697

    • 主启动

      image-20220803213843305

    • 配置Bean

      image-20220803213900650

    • 业务类

      image-20220803214525978

    • 测试

      image-20220803214728620

      http://localhost/consumer/payment/consul

      image-20220803214743025

    5. 三个注册中心异同点

    组件名语言CAP服务健康检查对外暴露接口SpringCloud集成
    EurekaJavaAP可配支持HTTP已集成
    ConsulGoCP支持HTTP/DNS已集成
    ZooKeeperJavaCP支持客户端已集成

    6. CAP

    • C:Consistency(强一致性)
    • A:Availability(可用性)
    • P:Partition tolerance(分区容错性)
    • CAP理论关注粒度是数据,而不是整体系统设计的策略

    所谓CAP原则又称CAP定理,指的是在一个分布式系统中,一致性、可用性、分区容错性。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。在分布式架构中,P永远要求被保证,所以当前的分布式架构只有AP和CP两种。因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:

    • CA:单点集群,满足一致性、可用性的系统,通长在可扩展性上不太强大。
    • CP:满足一致性、分许容错性的系统,通常性能不是特别高。
    • AP:满足可用性、分区容错性的系统,通常可能对一致性要求低一些。

    经典CAP图

    image-20220803215153627

    Ⅰ. AP (Eureka)

    AP架构

    • 当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。

    • 结论:违背了一致性C的要求,只满足可用性和分区容错,即AP

    image-20220803215447892

    Ⅱ. CP (ZooKeeper / Consul)

    CP架构

    • 当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性

    • 结论:违背了可用性A的要求,只满足一致性和分区容错,即CP

    image-20220803215516126

  • 相关阅读:
    通过HTTP发送大量数据的三种方法
    阿里低代码Low Code Engine快速上手
    MeterSphere 任意文件读取漏洞(CVE-2023-25814)
    CSS的两种渐变
    来自北大算法课的Leetcode题解:69. x的平方根
    应用链的崛起将带来哪些风险与机遇?
    二刷力扣--哈希表
    【启动npm run serve 奇怪的报错】
    【无标题】
    [go学习笔记.第十一章.项目案例] 1.家庭收支记账软件项目
  • 原文地址:https://blog.csdn.net/weixin_53407527/article/details/126174862