当前位置 : 首页 » 文章分类 :  开发  »  Consul

Consul

Consul 相关笔记

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

Consul 简介和快速入门
https://book-consul-guide.vnzmi.com/


Consul内部的选举实现/CAP保证

Consensus Protocol
https://www.consul.io/docs/architecture/consensus

通过consul的session实现leader选举

Application Leader Election with Sessions
https://learn.hashicorp.com/tutorials/consul/application-leader-elections


consul分布式锁

基于Consul的分布式锁主要利用Key/Value存储API中的acquire和release操作来实现。acquire和release操作是类似Check-And-Set的操作:

acquire操作只有当锁不存在持有者时才会返回true,并且set设置的Value值,同时执行操作的session会持有对该Key的锁,否则就返回false
release操作则是使用指定的session来释放某个Key的锁,如果指定的session无效,那么会返回false,否则就会set设置Value值,并返回true

基于Consul的分布式锁实现
http://blog.didispace.com/spring-cloud-consul-lock-and-semphore/


Spring Cloud Consul

Spring Cloud Consul 具有如下特性:
支持服务治理:Consul 作为注册中心时,微服务中的应用可以向 Consul 注册自己,并且可以从 Consul 获取其他应用信息;
支持客户端负责均衡:包括 Ribbon 和 Spring Cloud LoadBalancer;
支持 Zuul:当 Zuul 作为网关时,可以从 Consul 中注册和发现应用;
支持分布式配置管理:Consul 作为配置中心时,使用键值对来存储配置信息;
支持控制总线:可以在整个微服务系统中通过 Control Bus 分发事件消息。


SpringBoot 配置 Consul 注册中心

maven添加依赖

spring-cloud-starter-consul-discovery 的版本信息在 spring-cloud-dependencies -> spring-cloud-consul-dependencies 中被 Managed ,如果引入了 spring-cloud-dependencies 就不需要单独配置版本信息。

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

consul 配置中心配置

如果要使用 consul 的配置中心,要添加 bootstrap 配置文件 bootstrap.yml ,因为要在其他配置之前获取配置中心的配置项
所以这里主要是 consul 配置中心的配置项
spring.cloud.consul.host 配置 consul 地址,默认是 localhost
spring.cloud.consul.port 配置 consul 端口,默认是 8500
spring.cloud.consul.config.enabled 是否启用 consul 的配置中心功能
spring.cloud.consul.config.prefix 设置配置所在目录,默认值 config
spring.cloud.consul.config.format 配置值的格式 YAML、FILES、PROPERTIES、默认 KEY-VALUE
spring.cloud.consul.config.data-key 表示 consul 上面的 KEY 值(或者说文件的名字),默认是 data

consul 服务注册配置

之后在应用配置 application.yml 或 application.properties 中增加 spring cloud consul 相关配置
spring.cloud.consul.discovery.enabled 启用服务发现
spring.cloud.consul.discovery.register 启用服务注册
spring.cloud.consul.discovery.deregister 服务停止时取消注册

spring.cloud.consul.discovery.prefer-ip-address 表示注册时使用IP而不是hostname
spring.cloud.consul.discovery.health-check-interval 健康检查频率
spring.cloud.consul.discovery.health-check-path 健康检查路径
spring.cloud.consul.discovery.health-check-critical-timeout 健康检查失败多长时间后,取消注册
spring.cloud.consul.discovery.instance-id 服务注册标识

如果只用做注册中心,下面配置即可

spring.application.name=my-app
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.enabled=true
spring.cloud.consul.discovery.register=true
spring.cloud.consul.discovery.service-name=${spring.application.name}

不加 @EnableDiscoveryClient 也能将自己注册到 consul


Mac brew 安装 consul

安装
brew install consul
默认安装目录 /usr/local/Cellar/consul/1.8.0
验证安装

$ consul -v
Consul v1.8.0
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

后台启动 consul brew services start consul
重启 consul brew services restart consul

前台启动
consul agent -dev

访问 consul web 界面
http://localhost:8500/

https://learn.hashicorp.com/consul/getting-started/install


上一篇 Spring-AOP

下一篇 Chrome使用笔记

阅读
评论
989
阅读预计4分钟
创建日期 2019-06-07
修改日期 2020-10-12
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论