Spring Cloud:Consul理论知识

Spring Cloud:Consul理论知识


前言

今天博主开始更新SpringCloud构建微服务架构系列,有兴趣的可以持续关注,欢迎讨论!《陈永佳的博客》


概述:

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目。


Consul 是什么

Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,采用 Go 语言开发。

Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对。Consul 采用 Raft 一致性协议算法,来保证服务的高可用;使用 GOSSIP 协议管理成员和广播消息,并且支持 ACL 访问控制。


Consul 的使用场景

  • Docker 实例的注册与配置共享
  • 与 Consul template 服务集成,动态生成 Nginx 和 HAProxy 等配置文件
  • Spring-Cloud-Consul 服务发现和配置文件存储Consul 的使用场景

Consul 的优势

  • 使用 Raft 算法来保证一致性, 比 ZooKeeper 的 Paxos 算法更简单直接。
  • 支持多数据中心,内外网的服务采用不同的端口进行监听。 ZooKeeper 和 etcd 均不提供多数据中心功能的支持。
  • 支持健康检查,etcd 不提供此功能。
  • 支持 http 和 dns 协议接口。ZooKeeper 的集成较为复杂,etcd 只支持 http 协议。
  • 官方提供 web 管理界面,etcd 无此功能。
  • Consul 1.2 新增 Service Mesh 解决方案。

Consul、ZooKeeper、etcd、Eureka 比较

在这里插入图片描述

Consul官方网站:https://www.consul.io

Consul官方下载地址:https://www.consul.io/downloads.html


启动–在Windows环境下安装Consul(博主的历史文章)

Consul 安装包解压完成之后就是一个可执行程序,直接运行即可。

Consul 默认启动为 dev 模式,重启后丢失数据,启动参数详解请见附录部分。


Spring Cloud Consul

Spring Cloud Consul 项目是 Spring Cloud 针对 Consul 服务治理的实现。

提供了服务发现(可替代Eureka)和配置管理(可替代Spring Cloud Config)的功能。


相较于 Eureka,Consul 有着更少的资源占用能支撑更大的规模集群。

相较于 Spring Cloud Config 配置中心,使用起来没有 Git 存储的配置管理版本追溯方便,需要自己采用用数据库管理配置并同步到 Consul 的方式。

但是 Spring Cloud Consul 的配置更新方式更加简单高效。


附录

Consul 启动参数说明

启动参数说明
-advertise通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址
-bootstrap用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader
-bootstrap-expect在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用
-bind该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
-clientconsul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1
-config-file明确的指定要加载哪个配置文件
-config-dir配置文件目录,里面所有以.json结尾的文件都会被加载
-data-dir提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在
-dc该标记控制agent允许的datacenter的名称,默认是dc1
-encrypt指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key
-join加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。
-retry-join和join类似,但是允许你在第一次失败后进行尝试
-retry-interval两次join之间的时间间隔,默认是30s
-retry-max尝试重复join的次数,默认是0,也就是无限次尝试
-log-levelconsul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err
-node节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
-protocolconsul使用的协议版本
-rejoin使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中
-server定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个
-syslog开启系统日志功能,只在linux/osx上生效
-ui使用自带的ui
-ui-dir提供存放web ui资源的路径,该目录必须是可读的
-pid-file提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent

Spring Cloud Consul 配置

核心参数

配置项默认值
spring.cloud.consul.enabledtrue
spring.cloud.consul.hostlocalhost
spring.cloud.consul.port8500

服务发现参数

配置项默认值
spring.cloud.consul.discovery.acl-token
spring.cloud.consul.discovery.catalog-services-watch-delay10
spring.cloud.consul.discovery.catalog-services-watch-timeout2
spring.cloud.consul.discovery.datacenters
spring.cloud.consul.discovery.default-query-tag
spring.cloud.consul.discovery.default-zone-metadata-name zone
spring.cloud.consul.discovery.deregistertrue
spring.cloud.consul.discovery.enabledtrue
spring.cloud.consul.discovery.fail-fasttrue
spring.cloud.consul.discovery.health-check-critical-timeout
spring.cloud.consul.discovery.health-check-interval10s
spring.cloud.consul.discovery.health-check-path/actuator/health
spring.cloud.consul.discovery.health-check-timeout
spring.cloud.consul.discovery.health-check-tls-skip-verify
spring.cloud.consul.discovery.health-check-url
spring.cloud.consul.discovery.heartbeat.enabledfalse
spring.cloud.consul.discovery.heartbeat.interval-ratio
spring.cloud.consul.discovery.heartbeat.ttl-units
spring.cloud.consul.discovery.heartbeat.ttl-value30
spring.cloud.consul.discovery.hostname
spring.cloud.consul.discovery.instance-group
spring.cloud.consul.discovery.instance-id默认为服务名+环境+端口号
spring.cloud.consul.discovery.instance-zone
spring.cloud.consul.discovery.ip-address
spring.cloud.consul.discovery.lifecycle.enabledtrue
spring.cloud.consul.discovery.management-port
spring.cloud.consul.discovery.management-suffixmanagement
spring.cloud.consul.discovery.management-tags
spring.cloud.consul.discovery.port
spring.cloud.consul.discovery.prefer-agent-addressfalse
spring.cloud.consul.discovery.prefer-ip-addressfalse
spring.cloud.consul.discovery.query-passingfalse
spring.cloud.consul.discovery.registertrue
spring.cloud.consul.discovery.register-health-checktrue
spring.cloud.consul.discovery.schemehttp
spring.cloud.consul.discovery.server-list-query-tags
spring.cloud.consul.discovery.service-name
spring.cloud.consul.discovery.tags

配置服务参数

配置项默认值
spring.cloud.consul.config.enabledtrue
spring.cloud.consul.config.prefixconfig
spring.cloud.consul.config.default-contextapplication
spring.cloud.consul.config.profile-separator,
spring.cloud.consul.config.data-keydata
spring.cloud.consul.config.formatKEY_VALUE, PROPERTIES, YAML, FILES
spring.cloud.consul.config.name${spring.application.name}
spring.cloud.consul.config.acl-token
spring.cloud.consul.config.fail-fastfalse
spring.cloud.consul.config.watch.enabledtrue
spring.cloud.consul.config.watch.wait-time55
spring.cloud.consul.config.watch.delay1000

最后

  • 一个强有力的团队必定有一个强有力的,有逻辑的,有榜样力量的管理者!打造一流团队,博主在路上ing。。。。

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈永佳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值