一种面向微服务治理的数据发布-订阅方法和系统技术方案

技术编号:28326575 阅读:22 留言:0更新日期:2021-05-04 13:08
本发明专利技术涉及软件技术领域,尤其涉及一种面向微服务治理的数据发布‑订阅方法和系统。本发明专利技术的主要内容包括:客户端向某一个主题发布数据时,将待发布数据封装至数据发布请求中,并发送至数据发布服务器集群的任意一个节点,该节点解析出待发布数据并将其转发至数据发布服务器节点;数据发布服务器节点将接收到的数据连同客户端转发地址列表发送至订阅该数据所属主题的某一个客户端;该客户端收到数据及客户端转发地址列表后,将接收到的数据存入本地存储系统并开始协助数据发布服务器节点进行消息转发,转发的目标地址为客户端转发地址列表内的所有地址。本发明专利技术能够解决大规模微服务治理中数据发布订阅的性能问题,并保证数据发布订阅的可靠性。

【技术实现步骤摘要】
一种面向微服务治理的数据发布-订阅方法和系统
本专利技术涉及软件
,尤其涉及一种面向微服务治理的数据发布-订阅方法和系统。
技术介绍
云计算技术已经被广泛应用于支撑大规模微服务系统的部署和管理。当前,借助于虚拟化和容器等基于云计算的技术体系,大型云服务提供商的数据中心集群内的微服务实例规模急剧增长,单个数据中心集群内部署的实例数量已经达到万量级,未来将达到十万甚至百万量级以上的极端规模。微服务的注册发现、配置管理、健康检查等微服务治理的关键需求在面向上述极端规模微服务集群的场景下面临诸多新问题,带来了许多技术挑战。发布-订阅(Publish-Subscribe)模型是应对上述关键需求的一种常见模型,在目前的实际系统中使用较为广泛。例如:在微服务的配置管理需求下,向微服务实例发布该实例订阅的配置数据实现服务运行时动态配置更改;微服务提供者由于业务需要进行扩容或缩容时向微服务调用(订阅)者发布最新的服务列表,从而在运行时动态改变服务调用关系;在使用部分服务实例执行多阶段的灰度测试时,需要发布标签数据从而控制测试范围等等。上述这些微服务治理的典型场景都依赖高效、可靠、可扩展的数据发布-订阅模型及机制,解决发布-订阅系统在极端规模服务实例场景下的性能、可靠性和可扩展性问题也因此成为支撑极端规模微服务实例有效管理的热点问题。以一个典型的极端规模服务实例环境为例,该环境中的典型数据发布-订阅场景如图1所示,大量的数据更新请求首先到达数据发布者集群(图1左侧),集群会将更新数据发布至订阅了这一数据的实例;在服务实例端(图1右侧),应该确保全部或绝大部分实例得到正确且完整的数据。在此场景下,数据发布机制面临发布时延(性能)、发布成功率(可靠性)、数据发布者集群最大可承受负载(可扩展性)等复杂的服务质量需求(Service-LevelAgreement,SLA)挑战,具体如下:1)极端规模场景下的数据发布-订阅依赖于分布式的数据发布系统,系统的扩展性与数据发布时延存在矛盾。数据发布服务器间的通信和数据同步开销随着集群规模的提升而急剧增大,导致数据发布平均时延难以保障。数据发布时延的不稳定性将导致数据发布需求未能有效保障,从而导致系统错误、过载甚至崩溃。同时,服务器间的负载上下限差异过大,任务负载分配不均,导致性能问题难以简单通过增大集群规模解决。当前急需引入一种数据发布服务器集群内的负载均衡机制,保证数据发布的负载在不同的数据发布服务器之间的平衡,避免造成数据发布者集群的扩展性与数据发布时延的矛盾。2)在极端规模场景下,微服务实例失效和数据发布服务器失效问题更为普遍,在提供扩展性保障的前提下,需要及时识别并隔离失效的服务实例和数据发布服务器实例。首先,节点失效或网络不可达这一小概率事件在大规模实例场景下更易发生;其次,多地多数据中心的集群部署方式会由于链路故障而导致网络分区。上述原因导致的实例失效如果在数据发布过程中未能有效识别与隔离,将直接影响数据发布效率,失效实例也将使用不一致、甚至是错误的数据,从而影响整个系统的正确性。例如,特定业务的服务实例订阅的某公共微服务的IP地址发生变化,这一数据更新需要被快速发布至集群中的可达节点,若集群中存在未能检测到的失效节点,数据发布性能可能因为向不可达节点反复重试而降低,失效节点恢复后也难以得到正确数据,用户的访问请求可能会被路由到错误IP而导致超时、甚至返回错误结果。综上分析,高效(低延迟、可扩展)、可靠的发布-订阅系统是配置管理、服务发现等极端规模微服务治理的基本需求,亟需提出一种针对性方法及系统解决大规模微服务实例发布-订阅所面临的新问题。
技术实现思路
针对现有技术的不足,本专利技术提出一种面向微服务治理的高效可靠的数据发布-订阅方法和系统,解决大规模微服务治理中数据发布订阅的性能问题,并保证数据发布订阅的可靠性,可以应对大规模集群中常见的节点失效、网络不可达等问题。主要
技术实现思路
如下:一种高效可靠的数据发布-订阅方法,该方法中主要包含两类参与者:(1)参与数据发布的服务器集群。(2)接收数据的目标节点(以下简称客户端)。方法的主要步骤如下:1)服务器集群初始化,启动数据发布-订阅服务,同时建立集群内部的网络通信连接。2)客户端集群根据其订阅的主题(Key)计算出需要请求的数据发布服务器节点的地址,向其发送数据订阅请求。3)当客户端需要向某一个主题(Key)发布数据时,客户端请求(即数据发布请求)数据发布服务器集群的任意一个节点,将待发布数据封装至数据发布请求中,并将请求发送至该节点。该节点收到从客户端发来的请求后,从请求数据中解析出待发布的数据后,首先通过与步骤2)相同的计算方式计算出承接该发布任务的数据发布服务器节点,并将数据通过步骤1)中建立的集群内网络通信连接转发至该数据发布服务器节点。4)承接数据发布任务的数据发布服务器节点接收到数据后,将数据连同客户端转发地址列表发送至订阅该数据目标主题(Key)的某一个客户端。5)该客户端收到数据及客户端转发地址列表后,将数据存入本地存储系统并开始协助数据发布服务器节点进行消息转发,转发的目标地址即为步骤4)中数据发布服务器向其发送的客户端转发地址列表内的所有地址,如图2所示。进一步地,本方法为面向主题(Key)的发布-订阅方法,所有待发布的数据均需要对应一个全局唯一的主题,发布-订阅操作均是对某一个主题和该主题下数据的操作。进一步地,上述步骤1中集群内部的网络通信连接为持久化的长连接,当且仅当在集群初始化时建立,在集群停止服务时断开。进一步地,上述步骤2和3中的数据发布服务器节点映射方法(即计算出承接发布任务的数据发布服务器节点的方法)基于哈希(散列值)进行。进一步地,为了降低数据发布服务器集群在订阅的服务实例规模很大时的计算负载,本方法需要基于步骤4中的客户端转发方法令客户端协助数据发布服务器进行消息的发布,即步骤5)。该客户端转发地址列表由该承接数据发布任务的节点上订阅该主题的所有客户端地址所组成。进一步地,为了保证数据发布的可靠性,该方法需要额外采取以下步骤(如图3所示):(1)对于服务器直接发送的客户端节点,客户端在成功收到消息后,向服务器上报自身状态,即向服务器发送响应信息(ACK信息);(2)对于经由客户端协助转发后收到消息的客户端节点,成功收到消息后将自身状态上报至这次转发操作的源节点(源客户端节点),源节点在汇总转发操作的发送情况后,将这次转发失败的节点地址列表上报至服务器;(3)当服务器未能成功收到上述步骤(1)中的状态上报请求时,服务器将尝试进行消息重发,当重发达到最大限度后,停止重发并记录日志,通知系统运维人员进行问题排查。(4)当服务器成功收到步骤(1)的上报请求,但收到了步骤(2)中上报的转发失败节点地址列表时,服务器自身直接进行重发,不进行转发操作。一种采用以上方法的高效可靠的数据发布-订阅系统,主要包括:数据发布-订阅主题管理模块,用以管理服本文档来自技高网
...

【技术保护点】
1.一种面向微服务治理的数据发布-订阅方法,其特征在于,包括以下步骤:/n数据发布服务器集群进行初始化,启动数据发布-订阅服务,同时建立集群内部的网络通信连接;/n客户端集群根据其订阅的主题计算出需要请求的数据发布服务器节点的地址,向其发送数据订阅请求;/n客户端需要向某一个主题发布数据时,将待发布数据封装至数据发布请求中,并将该数据发布请求发送至数据发布服务器集群的任意一个节点,该任意一个节点从该数据发布请求中解析出待发布数据并将其转发至数据发布服务器节点;/n数据发布服务器节点将接收到的数据连同客户端转发地址列表发送至订阅该数据所属主题的某一个客户端;/n该某一个客户端收到数据及客户端转发地址列表后,将接收到的数据存入本地存储系统并开始协助数据发布服务器节点进行消息转发,转发的目标地址即为客户端转发地址列表内的所有地址。/n

【技术特征摘要】
1.一种面向微服务治理的数据发布-订阅方法,其特征在于,包括以下步骤:
数据发布服务器集群进行初始化,启动数据发布-订阅服务,同时建立集群内部的网络通信连接;
客户端集群根据其订阅的主题计算出需要请求的数据发布服务器节点的地址,向其发送数据订阅请求;
客户端需要向某一个主题发布数据时,将待发布数据封装至数据发布请求中,并将该数据发布请求发送至数据发布服务器集群的任意一个节点,该任意一个节点从该数据发布请求中解析出待发布数据并将其转发至数据发布服务器节点;
数据发布服务器节点将接收到的数据连同客户端转发地址列表发送至订阅该数据所属主题的某一个客户端;
该某一个客户端收到数据及客户端转发地址列表后,将接收到的数据存入本地存储系统并开始协助数据发布服务器节点进行消息转发,转发的目标地址即为客户端转发地址列表内的所有地址。


2.根据权利要求1所述的方法,其特征在于,所述数据发布服务器集群内部的网络通信连接为持久化的长连接,当且仅当在集群初始化时建立,在集群停止服务时断开。


3.根据权利要求1所述的方法,其特征在于,所述的客户端集群根据其订阅的主题计算出需要请求的数据发布服务器节点的地址,是基于散列值计算出承接发布任务的数据发布服务器节点的地址。


4.根据权利要求1所述的方法,其特征在于,所述客户端转发地址列表由数据发布服务器节点上订阅相同主题的所有客户端地址组成。


5.根据权利要求1所述的方法,其特征在于,采取以下步骤保证数据发布的可靠性:
(1)对于数据发布服务器节点直接发送的客户端,客户端在成功收到消息后,向数据发布服务器节点上报自身状态,即向数据发布服务器节...

【专利技术属性】
技术研发人员:黄涛唐震王伟魏峻李慧张舒扬宋傲
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:北京;11

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

1