一、什么是服务注册与发现?
服务注册与发现就是一套管理微服务的组件,方便各拆分的服务平滑上线和下线,以及某个服务出现故障自动剔除。其实质就是维护一张记录各在线服务的表。让消费服知道服务在线可以请求。。。。。。
二、服务注册与发现原理图(粗糙草图)
1.服务注册: 当A1服务上线启动时,它需要自动调用服务注册与发现中心将当前服务器的信息注册到服务注册与发现中心, 此时服务注册与发现中心便将A1服务信息记录在表中。
2.服务健康检查:服务注册与发现中心会定时(注册时设定检查间隔以及检查请求的路径)请求服务A1的健康检查接口,以确定A1服务是否可用,如果发现服务不可用,那么就会在表中剔除A1服务。 当然,如果因为某些原因手动杀死A1服务进程,A1服务需要通过检测自动调用反注册接口,自动请求服务注册与发现中心剔除表中的信息。
注意,A1服务、A2服务是相同的服务功能,多个相同服务是用于负载或某个挂掉还有替补。
3.用户发起请求: 当用户向网站发起请求,请求达到消费服,消费服判定用户需要A服务获取数据,那么消费服首先不会直接去请求 A1或A2服务,而是先通过第4步,去服务注册月发现中心 获取A服务列表,第5步,返回A服务的服务列表,返回了A1、A2服务,而A3因为某些原因宕机了,不能使用,那么就可以做到,用户在请求后至少保证至少线上有服务器能处理请求。当然你要说所有的服务都宕机了,那么我也没有可反驳的。
6.请求A服务:因为服务注册与发现中心已经返回了可用的服务列表,那么就可以通过算法取一个服务进行处理返回结果给客户端。
当然服务注册与发现中心不仅仅只是处理如上这些,比如多个服务它能根据负载均衡算法(轮询、权重轮询、等等)给返回某一个可用的服务、限流、降级、链路日志记录
三、各服务
各个服务除了提供某一类服务处理外需要提供如下功能:
1.服务启动时,向服务注册与发现中心提交注册。
2.提供健康检查接口,用于服务注册与发现中心与服务保持心跳检查,确定服务是可用的。至于检查频率、检查接口路径都是在服务注册时提供 参数给到了 服务注册与发现中心的。
3.服务自身进程被杀死时,需要先调用请求服务注册与发现中心主动剔除表中当前服务信息。