Consul服务注册与发现

一、基本介绍

​ Consul 是一套开源的分布式发现和配置管理系统,由 Hashicorp 公司使用Go语言开发,官网https://www.consul.io,中文文档地址 https://www.springcloud.cc/spring-cloud-consul.html 。提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能可以单独使用,也可以构建全方位的服务网络。

二、下载安装

1、下载

​ 进入官网后,点击Download下载页,也可以直接点击链接 https://www.consul.io/downloads.html 下载。进入下载页后根据自己的系统版本选择下载对应的安装包。

2、将下载的文件解压,解压后只有一个文件 consul.exe 。

3、在解压目录的文件夹下打开命令行窗口,输入 consul --version 便可以查看该版本信息。

4、在命令行可以通过 consul agent -dev 使用开发模式启动,默认端口为 8500,在浏览器地址栏输入http://localhost:8500便可以访问到consul控制界面。

三、服务注册

1、新建一个服务提供者模块,修改pom文件。

<dependencies>
       <!--引入consul server-->
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-consul-discovery</artifactId>
       </dependency>
       <!--引入自己定义的包-->
       <dependency>
           <groupId>com.xhanglog.springcloud</groupId>
           <artifactId>cloud-api-commons</artifactId>
           <version>${project.version}</version>
       </dependency>
       <!--spring 整合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>
       <!--热部署-->
       <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>

2、写application.yml 文件

server:
 # 8006表示注册到consul服务器的支付服务提供者端口号
 port: 8006
spring:
 application:
   # 服务别名---注册consul到注册中心的名称
   name: cloud-provider-payment
 cloud:
   consul:
     host: localhost
     port: 8500
     discovery:
       service-name: ${spring.application.name}

3、在主启动类上加注解 @EnableDiscoveryClient。

4、启动项目,在浏览器输入地址可以发现该服务以及被注册。

5、消费者服务同以上步骤一样。

四、CAP原则

​ CAP原则指的是一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

  • AP架构:当网络分区出现后,为保证可用性,系统B可以返回旧值,保证系统的可用性。Eureka就是一种AP架构。
  • CP架构:当网络分区出现后,为保证一致性,就必须拒绝请求,返回错误信息或提示。Zookeeper和Consul就是一种CP架构,当服务断掉之后,马上把服务中剔除。

猜你喜欢

转载自www.cnblogs.com/Mhang/p/12547567.html