一种服务注册及订阅方法、装置及设备制造方法及图纸

技术编号:35778908 阅读:9 留言:0更新日期:2022-12-01 14:23
本申请公开了一种服务注册及订阅方法、装置及设备,该方法通过服务端代理执行:接收注册请求及订阅请求;确定集群服务器正常时,与所述集群服务器通信以更新对应服务名的服务端IP端口列表,及生成订阅服务的订阅事件;监听集群服务器发布的不同订阅服务的订阅事件,以此为基准生成不同订阅服务的副本同步队列ISR;确定所述集群服务器异常时,感知服务端的上线及下线信息并更新不同订阅服务的ISR;基于所述不同订阅服务的ISR,下发集群服务器状态及客户端订阅服务的服务端IP端口列表。以此解决当前微服务高可用性依赖于zk集群健壮性,在zk主节点选举期间或者zk集群宕机时、无法动态感知最新服务端上线和下线信息的问题。态感知最新服务端上线和下线信息的问题。态感知最新服务端上线和下线信息的问题。

【技术实现步骤摘要】
一种服务注册及订阅方法、装置及设备


[0001]本专利技术涉及微服务
,特别涉及一种服务注册及订阅方法、装置及设备。

技术介绍

[0002]目前微服务开发体系中,很多项目基于分布式框架Dubbo+集群zookeeper(简称zk)微服务模式,通过zk实现服务注册发现。但是zk实现分布式系统CAP(一致性C+可用性A+分区容忍性P)中CP原则,在主节点master选举期间会对于Avaliable(容忍原则)实现一定程度弱化。当zk master挂掉后,zk其余节点虽然最快能在几百毫秒中选出新的master节点对外提供服务,但是在zk选举期间或者集群宕机导致zk集群不可用。Dubbo服务虽然通过客户端缓存的服务端IP端口列表轮询访问服务端,但是服务端最新下线和上线无法感知,缓存的IP端口可用性无法保障,轮询访问降低访问性能以及可能导致客户端调用故障现象。对于服务要求严格的项目替换zk重构会带来项目不稳定性。

技术实现思路

[0003]本申请的目的是提供一种服务注册及订阅方法、装置及设备。用于解决现有在zk选举期间或者集群宕机导致zk集群不可用时,服务端最新下线和上线无法感知,缓存的IP端口可用性无法保障,轮询访问降低访问性能以及可能导致客户端调用故障现象的问题。
[0004]第一方面,本申请实施例提供了一种服务注册及订阅方法,应用于与集群服务器、服务端及客户端通信的服务端代理,所述方法包括:
[0005]接收服务端发送携带服务名的注册请求,及接收客户端发送的订阅服务的订阅请求;/>[0006]确定集群服务器正常时,与所述集群服务器通信以使所述集群服务器更新对应服务名的服务端IP端口列表,及生成所述订阅服务的订阅事件;
[0007]监听集群服务器发布的不同订阅服务的订阅事件,以所述不同订阅服务的订阅事件为基准生成不同订阅服务的副本同步队列ISR;
[0008]确定所述集群服务器异常时,感知服务端的上线及下线信息并更新不同订阅服务的副本同步队列ISR;
[0009]基于所述不同订阅服务的副本同步队列ISR,下发集群服务器状态及客户端订阅服务的服务端IP端口列表。
[0010]作为一种可能的实施方式,采用如下方式监听集群服务器正常或异常:
[0011]根据订阅服务的订阅事件发布频率,监听集群服务器发布的不同订阅服务的订阅事件;
[0012]连续设定次数未监听到不同订阅服务的订阅事件时,确定所述集群服务器异常,否则,确定所述集群服务器正常。
[0013]作为一种可能的实施方式,感知服务端的上线及下线信息并更新不同订阅服务的副本同步队列ISR,包括:
[0014]通过心跳机制检测不同订阅服务的ISR中不同服务端是否在线;
[0015]将不在线的服务端对应的IP端口从对应的ISR中删除;
[0016]将集群服务器异常发送注册请求的服务端的IP端口,增到对应订阅服务的副本同步队列ISR。
[0017]作为一种可能的实施方式,所述服务端代理为多个且为无状态服务端代理,每次生成或更新副本同步队列ISR时,还包括:
[0018]生成与所述副本同步队列ISR绑定的全局唯一递增的标识ID,并在集群服务器异常时,将所述副本同步队列ISR及ID广播到其他服务端代理,以使其他服务端代理根据所述ID确定是否更新本地的副本同步队列ISR。
[0019]作为一种可能的实施方式,基于所述不同订阅服务的副本同步队列ISR,下发客户端订阅服务的服务端IP端口列表,包括:
[0020]确定所述集群服务器异常时,基于所述不同订阅服务的副本同步队列ISR,将订阅服务的服务端IP端口按照注册时间从晚到早的顺序排列后,下发给对应的客户端。
[0021]作为一种可能的实施方式,接收客户端发送的订阅服务的订阅请求之后,还包括:
[0022]确定之前是否针对所述订阅服务向集群服务器发起过订阅,若没有则向集群服务器发送所述订阅请求,以对该订阅服务进行服务端IP端口列表生成;
[0023]确定是否产生对该客户端代理的订阅,若没有则在所述订阅服务的订阅事件的接收者中增加所述客户端。
[0024]第二方面,本申请实施例提供一种服务注册及订阅方法,应用于客户端,包括:
[0025]通过客户端代理向服务端代理发送订阅服务的订阅请求;
[0026]通过客户端代理,接收所述服务端代理发送的集群服务器状态及所述订阅服务的服务端IP端口列表;
[0027]通过客户端代理,根据所述集群服务器状态,采用对应策略轮询所述服务端IP端口列表中的服务器IP端口至正常访问。
[0028]作为一种可能的实施方式,根据所述集群服务器状态,采用对应策略轮询所述服务端IP端口列表中的服务器IP端口,包括:
[0029]确定集群服务器状态正常时,根据所述订阅服务的服务端IP端口列表中按照访问次数确定的服务端IP端口优先级进行轮询访问,其中,访问次数越少优先级越高;
[0030]确定对服务端IP端口访问成功时,将访问成功的服务端IP端口的访问次数加1。
[0031]作为一种可能的实施方式,根据所述集群服务器状态,采用对应策略轮询所述服务端IP端口列表中的服务器IP端口,包括:
[0032]确定集群服务器状态异常时,根据所述订阅服务的服务端IP端口列表中按照注册时间确定的服务端IP端口优先级进行轮询访问,其中,注册时间越晚优先级越高;
[0033]确定对服务端IP端口访问成功时,将访问成功的服务端IP端口的访问次数加1。
[0034]第三方面,本申请实施例提供一种服务注册及订阅装置,所述装置包括:
[0035]请求接收模块,用于接收服务端发送携带服务名的注册请求,及接收客户端发送的订阅服务的订阅请求;
[0036]订阅更新模块,用于确定集群服务器正常时,与所述集群服务器通信以使所述集群服务器更新对应服务名的服务端IP端口列表,及生成所述订阅服务的订阅事件;
[0037]副本生成模块,用于监听集群服务器发布的不同订阅服务的订阅事件,以所述不同订阅服务的订阅事件为基准生成不同订阅服务的副本同步队列ISR;
[0038]副本更新模块,用于确定所述集群服务器异常时,感知服务端的上线及下线信息并更新不同订阅服务的副本同步队列ISR;
[0039]副本同步模块,用于基于所述不同订阅服务的副本同步队列ISR,下发集群服务器状态及客户端订阅服务的服务端IP端口列表。
[0040]第四方面,本申请实施例提供一种服务注册及订阅装置,所述装置包括:
[0041]请求接收模块,用于通过客户端代理向服务端代理发送订阅服务的订阅请求;
[0042]端口确定模块,用于通过客户端代理,接收所述服务端代理发送的集群服务器状态及所述订阅服务的服务端IP端口列表;
[0043]端口访问模块,用于通过客户端代理,根据所述集群服务器状态,采用对应策略轮询所述服务端I本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种服务注册及订阅方法,应用于与集群服务器、服务端及客户端通信的服务端代理,其特征在于,所述方法包括:接收服务端发送携带服务名的注册请求,及接收客户端发送的订阅服务的订阅请求;确定集群服务器正常时,与所述集群服务器通信以使所述集群服务器更新对应服务名的服务端IP端口列表,及生成所述订阅服务的订阅事件;监听集群服务器发布的不同订阅服务的订阅事件,以所述不同订阅服务的订阅事件为基准生成不同订阅服务的副本同步队列ISR;确定所述集群服务器异常时,感知服务端的上线及下线信息并更新不同订阅服务的副本同步队列ISR;基于所述不同订阅服务的副本同步队列ISR,下发集群服务器状态及客户端订阅服务的服务端IP端口列表。2.根据权利要求1所述的方法,其特征在于,采用如下方式监听集群服务器正常或异常:根据订阅服务的订阅事件发布频率,监听集群服务器发布的不同订阅服务的订阅事件;连续设定次数未监听到不同订阅服务的订阅事件时,确定所述集群服务器异常,否则,确定所述集群服务器正常。3.根据权利要求1所述的方法,其特征在于,感知服务端的上线及下线信息并更新不同订阅服务的副本同步队列ISR,包括:通过心跳机制检测不同订阅服务的ISR中不同服务端是否在线;将不在线的服务端对应的IP端口从对应的ISR中删除;将集群服务器异常发送注册请求的服务端的IP端口,增到对应订阅服务的副本同步队列ISR。4.根据权利要求1所述的方法,其特征在于,所述服务端代理为多个且为无状态服务端代理,每次生成或更新副本同步队列ISR时,还包括:生成与所述副本同步队列ISR绑定的全局唯一递增的标识ID,并在集群服务器异常时,将所述副本同步队列ISR及ID广播到其他服务端代理,以使其他服务端代理根据所述ID确定是否更新本地的副本同步队列ISR。5.根据权利要求1所述的方法,其特征在于,基于所述不同订阅服务的副本同步队列ISR,下发客户端订阅服务的服务端IP端口列表,包括:确定所述集群服务器异常时,基于所述不同订阅服务的副本同步队列ISR,将订阅服务的服务端IP端口按照注册时间从晚到早的顺序排列后,下发给对应的客户端。6.根据权利要求1~5任一所述的方法,其特征在于,接收客户端发送的订阅服务的订阅请求之后,还包括:确定之前是否针对所述订阅服务向集群服务器发起过订阅,若没有则向集群服务器发送所述订阅请求,以对该订阅服务进行服务端IP端口列表生成;确定是否产生对该客户端代理的订阅,若没有则在所述订阅服务的订阅事件的接收者中增加所述客户端。7.一种服务注册及订阅方法,应用于客户端,其特征在于,包括:
通过客户端代理向服务端代理发送订阅服务的订阅请求;通过客户端代理,接收所述服务...

【专利技术属性】
技术研发人员:周林
申请(专利权)人:天翼安全科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1