当前位置: 首页 > 后端技术 > PHP

第1部分:consul简介及服务注册与发现

时间:2023-03-29 21:03:22 PHP

什么是consul?Consul是一个分布式高可用系统,主要用于微服务架构的服务发现和服务注册。它具有以下特点:1)服务发现:用于注册服务和发现服务。比如注册一个商品服务。客户端通过网关(gateway)获取并调用服务,获取商品列表。2)健康检查:consul可以定期检查注册的服务是否可用。当然你也可以在调用服务时主动检测。3)Key/value存储:consul可以将注册的服务存储在key/value结构中。4)多数据中心:支持多数据中心。如何使用领事?启动方式:以代理方式启动。1)consulagent-dev//开发模式2)consulagent-server-bootstrap-expect1-data-dir/tmp/consul/-node=ali_1-ui-client0.0.0.0-bindintranetip-joinintranet详解ip参数的:-server:作用是server,用来存放数据。-bootstrap-expect1:启动前等待多少个节点,1,表示可以从一个启动。-data-dir:数据存放目录。-node:节点名称。-ui:启动默认的ui界面。-client:表示注册或查询等一系列客户端操作的IP。如果未指定此IP,则默认为127.0.0.1。-join:开始加入集群-bind:绑定内网ip有人想问server,client参数是什么意思?这就是领事的作用。consul一共有三个角色。client角色:是client模式,是consul节点的一种模式。该模式只接受服务注册,不保存信息。注册的服务信息会转发给服务器本身,不会持久化。Serverrole:表示consul的server模式,表示这个consul是一个server。该模式下,功能与客户端相同。但是它会将信息持久化到本地,也可以参与服务器的leader选举。server-leader角色:表示该服务器是集群的领导者。与其他服务器不同的是,leader需要负责将注册信息同步到其他服务器,同时负责各个节点的健康检查。consul对外提供的端口,不同端口的不同功能,了解就好。tcp/83008300端口用于server节点,客户端在该端口通过rpc协议调用server节点。服务器节点相互调用。tcp/udp/83018301端口用于单个数据中心内所有节点之间的相互通信,集群内节点的数据同步,使整个数据中心自动发现服务器地址,分布式检测节点故障,事件广播(比如leader选举)8500http协议访问查看代理成员curl-XGEThttp://localhost:8500/v1/agent/members?pretty如何注册服务。可以通过http协议注册服务。curl-XPUThttp://localhost:8500/v1/agent/service/register-d"{"ID":"user",//服务id"Name":"username",//服务名称"Tags":["primary","v1"],"Address":"127.0.0.1",//服务ip"Port":8000,//服务端口"EnableTagOverride":false,"Check":{//健康检查部分"DeregisterCriticalServiceAfter":"90m","HTTP":"127.0.0.1/rpc/health.php",//指定健康检查的URL,调用后只要返回20X,consul就认为是健康的"区间":"10s"//健康检查间隔,每10s调用一次上面的url}}"未注册的服务:curl-XPUThttp://localhost:8500/v1/agent/service/deregister/user{ID}如何发现服务:按名称查找curl-XGEThttp://127.0.0.1:8500/v1/catalog/service/username{Name}获取本地健康服务curl-XGEThttp://127.0.0.1:8500/v1/health/service/username{Name}查询服务列表curlhttp://127.0.0.1:8500/v1/agent/services?pretty