1.简介
Consul有多个组件,但总体而言,它是基础架构中的一款服务发现和配置的工具。 它提供了几个关键功能:
(1)服务发现:Consul client 可以提供服务,例如api或mysql,也可以使用Consul client来发现指定服务的提供者。 使用DNS或HTTP,应用程序可以轻松找到他们所依赖的服务。
(2)健康检查:Consul client 可以提供任何数量的健康检查,或者与给定的服务(“Web服务器是否返回200 OK”),或与本地节点(“内存利用率是否低于90%”)相关联。 可以使用此信息来监控集群运行状况,服务发现组件使用此信息将流量从有问题的主机中移除出去。
(3)KV Store:应用程序可以使用Consul的分层键/值存储,包括动态配置,功能标记,协调,leader选举等等。 简单的HTTP API使其易于使用。
(4)多数据中心:Consul支持多个数据中心。 这意味着Consul的用户不必担心构建额外的抽象层以扩展到多个区域。
Consul旨在对DevOps社区和应用程序开发人员友好,使其成为现代化,弹性基础架构的完美选择。
2.优点
consul由GO语言开发,是专门用来做服务发现的,具有服务注册、服务必现、服务检测、UI管理、命令管理、API管理、数据存储等;且spring在此基础上做了封装,优先采用;
3.踩坑点
1)背景:使用springcloud项目久了,就发现了consul作为注册中心的一大缺点,不利于使用,踩了不少坑,注册中心内的服务许手动删除,不然历史注册的已停止服务的错误节点就影响使用,比如如下情况:
开启springboot项目老是有个僵尸在,把所有java程序都关了还存在,可是压根都没起服务,更加没设置过那种端口
还比如现在明明起了一个服务第一个,却有好几个服务在线,都是我的ip
进过深入研究发现 ----注册中心内的服务许手动删除
2)手动删除方法:
删除无效服务:
http://ip:8500/v1/agent/service/deregister/服务名称
sic-user-9003 这种为服务名称
删除无效节点:
http://ip:8500/v1/agent/force-leave/节点名
4b36b27317a0 这种为节点名(也就是容器id)
截图如下:
将不定期更新资源,欢迎持续关注
想获得更多的学习知识请关注微信公众号:西北码农或扫下方二维码