Consul注册中心入门案例及配置

Consul注册中心

  Consul官网:https://www.consul.io/docs/intro

   Consul中文文档:https://www.springcloud.cc/spring-cloud-consul.html

(摘要官网)

  Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。

    

领事的主要特点是:

  • 服务发现:Consul的客户端可以注册服务,例如 apimysql,其他客户端可以使用Consul来发现给定服务的提供者。使用DNS或HTTP,应用程序可以轻松找到它们依赖的服务。

  • 运行状况检查:领事客户端可以提供任何数量的运行状况检查,这些检查可以与给定服务(“ Web服务器是否返回200 OK”)或与本地节点(“内存利用率低于90%”)相关联。操作员可以使用此信息来监视群集的运行状况,服务发现组件可以使用此信息将流量路由到运行状况不佳的主机之外。

  • KV商店:应用程序可以将Consul的分层键/值存储用于多种目的,包括动态配置,功能标记,协调,领导者选举等。简单的HTTP API使其易于使用。

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

  • 多数据中心:Consul开箱即用地支持多个数据中心。这意味着Consul的用户不必担心会构建其他抽象层以扩展到多个区域。

 

 

1.https://www.consul.io/downloads下载Consul (本人使用Windows1.6.1版本:https://releases.hashicorp.com/consul/1.6.1/)

  官网安装说明:https://learn.hashicorp.com/consul/getting-started/install.html

 

 

 2.下载完成后只有一个consul.exe文件,硬盘路径下双击运行,查看版本号信息

consul --version

  

 

   2.1 使用开发模式启动 

consul agent -dev

  

 

  运行完成,在通过地址可以访问Consul的首页:http://localhost:8500  默认端口为8500

 

3. 新建两个springboot工程进行测试,消费方&&提供方(过程略过) 主要过程完成注册进consul

 第一个提供方:

  3.1 添加pom

<dependencies>
        <!--SpringCloud consul-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置 devtools热部署可以不加 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

  3.2 yml 配置文件

server:
  port: 8006
spring:
  application:
    name: consul-provider-payment
  ####consul注册中心地址
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        #hostname: 127.0.0.1
        service-name: ${spring.application.name}

  3.3 主启动类 

@EnableDiscoveryClient

  spring cloud中discovery service有许多种实现(eureka、consul、zookeeper等等),其实用更简单的话来说,

  就是如果选用的注册中心是eureka,那么就推荐@EnableEurekaClient,如果是其他的注册中心,那么推荐使用@EnableDiscoveryClient。

  

   3.4  定义controller测试

    

 

   完成,启动看是否成功注册,成功后进行测试

 提供方测试完成

-------------------------------------------------------------------

 

消费方:

  1.同上步骤 pom、yml、主启动类

    

 

  2.本测试使用RestTemplate来远程调用 创建配置类

   

@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced //给予RestTemplate负载均衡的能力
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

  3.创建controller来调用提供方

  

 

完成 ,提供方和消费方启动测试

  消费方调用提供方效果如下 完成测试

 

----------------三个注册中心异同点(Eureka、zookeeper、Consul)-----------------

   这三个的使用方式大同小异,会一个其它的上手都很快

                

                                                      

CAP:C:Consistency(强一致性)

   A:Availability(可用性)

   P:Partition tolerance(分区容错性)

  AP架构

    当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。结论:违背了一致性C的要求,只满足可用性和分区容错,即AP

 

 

 

                              

  CP架构

    当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性结论:违背了可用性A的要求,只满足一致性和分区容错,即CP

       

 

posted @ 2021-04-26 20:50  UsualMind  阅读(678)  评论(0)    收藏  举报