品牌网站建设h5,程序员一般找哪种女人,WordPress手机号验证登录,hao123网址之家官网我们知道 Eureka 2.X 遇到困难停止开发了#xff0c;所以我们需要寻找其他的替代技术替代Eureka#xff0c;这一小 节我们就讲解一个新的组件Consul。
一、Consul介绍 Consul 是 HashiCorp 公司推出的开源工具#xff0c;用于实现分布式系统的服务发现与配置。与其它分布式… 我们知道 Eureka 2.X 遇到困难停止开发了所以我们需要寻找其他的替代技术替代Eureka这一小 节我们就讲解一个新的组件Consul。
一、Consul介绍 Consul 是 HashiCorp 公司推出的开源工具用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案Consul 的方案更“一站式”内置了服务注册与发现框 架、分布一致性协议实 现、健康检查、Key/Value 存储、多数据中心方案不再需要依赖其它工具比如 ZooKeeper 等。 使用起来也较 为简单。Consul 使用 Go 语言编写因此具有天然可移植性(支持Linux、windows和 Mac OS X)安装包仅包含一个可执行文件方便部署与 Docker 等轻量级容器可无缝配合。 我们来对比下当前服务注册与发现的主流技术 对比项 euerka Consul zookeeper etcd 服务健康检查 可配支持 服务状态内 存硬盘等 (弱)长连接 keepalive 连接心跳 多数据中心 — 支持 — — kv 存储服务 — 支持 支持 支持 一致性 — raft paxos raft cap ap cp cp cp 使用接口(多语 言能力) http 支持 http 和 dns 客户端 http/grpc watch 支持 支持 long polling/ 大部分增量 全量/支持long polling 支持 支持 long polling 自身监控 metrics metrics — metrics 安全 — acl /https acl https 支持 弱 spring cloud 集成 已支持 已支持 已支持 已支持
1.1 consul特性
服务发现健康检查key-value存储多数据中心社区活跃
1.2consul的优势 使用 Raft算法来保证一致性比复杂的 Paxos算法更直接.相比较而言zookeeper采用的是 Paxos, 而 etcd 使用的则是 Raft。 支持多数据中心内外网的服务采用不同的端口进行监听。多数据中心集群可以避免单数据中心 的单点故障而其部署则需要考虑网络延迟分片等情况等。 zookeeper和 etcd 均不提供多数据中 心功能的支持。 支持健康检查。 etcd 不提供此功能 支持http和 dns协议接口。 zookeeper的集成较为复杂etcd 只支持 http协议。 官方提供 web 管理界面etcd 无此功能。 综合比较Consul作为服务注册和配置管理的新星比较值得关注和研究。
1.3 consul的角色
client 客户端无状态将 HTTP和 DNS 接口请求转发给局域网内的服务端集群。 server: 服务端保存配置信息高可用集群在局域网内与本地客户端通讯通过广域网与其它数据中心通讯。每个数据中心的 server数量推荐为3个或是5个。
二、Consul工作原理 Consul在项目中发挥服务注册与发现的功能我们讲解下它的工作原理
1.当Producer启动的时候会向Consu1发送一个post请求并向Consu1传输自己的IP和Port。
2.Consul接收到Producer的注册后每隔10s(默认)会向Producer发送一个健康检查的请求检验 Producer是否健康。
3.当Consumer以Http的方式向Producer发起请求会先从Consu1中拿到一个存储服务IP和Port的临时表从表中拿到Producer的IP和Port后再发送请求。
4.该临时表每隔10s会更新只包含有通过了健康检查的Producer。 2.1 consul的安装 Consul 不同于Eureka需要单独安装访问Consul 官网下载 Consul 的最新版本当前最新版本是 1.9.0,我们使用consu] 1.9.0 windows amd64 版本。 下载地址Install | Consul | HashiCorp Developer 历史下载版本 Consul Versions | HashiCorp Releases 下载后的文件是consul1_1.9.0_windows_amd64.zip, 我们解压这个文件里面有个文件 consul.exe, 我们将该文件所在目录添加到环境变量path 中。 启动consul :dos 命令行执行如下命令
consul agent -dev 控制台访问 http://localhost:8500/ Services: 服务信息。 Nodes: 节点信息 Consul 支持集群。 Key/Value: 存储的动态配置信息。 ACL:权限信息。 Intentions ; 通过命令的方式对consul进行管理。 三、在项目中使用consul 项目中要想使用Consul作为服务注册中心只需要引入如下依赖包在启动类上添加
EnableDiscoveryclient 注解并在application.yml 中添加Consul 服务地址即可
3.1添加依赖 在项目中添加依赖包
!--consul--
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-consul-discovery/artifactIdversion2.2.1.RELEASE/version
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactIdversion2.2.10.RELEASE/version
/dependency 3.2在启动类中添加 EnableDiscoveryclient 注解 3.3在applacation.yaml中添加consul的配置信息 配置如下
spring:cloud:#Consul配置consul:host: 127.0.0.1port: 8500discovery:#注册到Consul中的服务名字service-name: ${spring.application.name}prefer-ip-address: true 项目启动后consul服务数据如下