consul提供的功能非常多,这里仅讨论service discover
sd 主要提供2个功能,一直注册服务,二是获取服务。
注册服务的两种模式
注册服务一般都会对服务配置健康检查,这样可以监控服务的状态,最简单的检查方式就是http请求方式,通过向服务的health接口发送一条http请求,检查服务状态。当然还有脚本方式。
获取服务
当把业务拆分成微服务后,某一个微服务可能会部署N份,可能会动态部署或者下线某服务。如果没有sd,就不能做到动态扩容和服务的伸缩。
比如一个order service 订单服务,目前部署3份,用户的手机客户端调用api gateway,api gateway 通过sd获取可用的 order service,调用order service。
假如用户增多请求量变大,需要增加order service,则可以部署一个新的order service,并且注册到sd,这样api gateway,就可以在下次获取可用的order service的时候,获取到新增的order service(其中一种策略,也可以用sd通知api gateway,或者api gateway订阅sd中order service的新增event等等各种策略,超时缓存?)
如果某一个order service 挂掉,sd就会通过health check动态感知service的状态,api gateway后续(策略同上)就不会把请求发送到这个order service。
agent
的方式运行server
保存数据持久化client
作为client把请求发送到serverclient
而不是server
。一共5台机器,A,B上部署我们自己service,比如登录,注册各种服务都在,A,B上跑,同时A,B上启动consul client提供sd的功能。 D,E,F以cluster的方式运行 consul server。
通常client比server数量多很多,client和server都可以动态添加。 server也要保证一定的数量,因为最终数据存储在server,server提供最终的sd服务。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。