订阅消息的发布方法及装置与流程

文档序号:11594266阅读:760来源:国知局

本发明涉及通信领域,具体而言,涉及一种订阅消息的发布方法及装置。



背景技术:

相关技术中,对于一个大型的分布式软件系统来说,会有很多服务,或由很多功能模块组成。这些服务之间就会存在相互交换信息的需求。通信组件需要完成的就是不同服务之间的信息传递需求。但是如果仅仅完成信息的传递,还远无法达到一个高效可扩展系统的要求。通常会有很多问题需要解决,例如,如何尽可能降低发送者和接收者之间的耦合度、如何做到有效的负荷均衡、如何新增一个服务不影响原先运行的服务。

相关技术中,基于发布/订阅机制的消息队列中间件为以异步方式实现构造的分布式应用提供了一种松耦合方法。它简化应用之间数据的传输,屏蔽底层异构操作系统和网络平台,提供了一致的通信标准和应用开发,确保分布式计算网络环境下可靠的、跨平台的信息传输和数据交换。

同时,相关技术中的消息发布订阅系统都存在如下的问题:

1、标准的c/s架构,所有消息发布方都需要先将消息发往服务器,由服务器再投递给消息的接收方。对于一个有若干消息交互的业务流程,最终体现出时延大的缺点。

2、服务器在投递消息的时候路由关系都是由客户端通知服务器生成的,第三方很难进行修改。某些场景需要修改报文的投递路径时,除非升级客户端程序来重新生成路由关系,否则无所适从,大大限制了用户的使用场景。

3、服务器在进行报文投递时,匹配算法也是简单通过发布方的发布关键字和接收方的接收关键字进行模糊匹配,缺乏更有效的基于业务数据自定义消息投递路径的支撑。

针对相关技术中存在的上述问题,目前尚未发现有效的解决方法。



技术实现要素:

本发明提供了一种订阅消息的发布方法及装置,以至少解决相关技术中在发送订阅消息时使用服务器进行中转而导致时延过大的问题。

根据本发明的一个方面,提供了一种订阅消息的发布方法,包括:接收消息发送方发送的用于发送订阅消息的请求消息;指示所述消息发送方将所述订阅消息直接发布给订阅方。

进一步地,所述指示所述消息发送方将所述订阅消息直接发布给订阅方包括:根据预存订阅信息查找所述订阅消息的订阅方和发送所述订阅消息的路由路径;指示所述消息发送方将所述订阅消息通过所述路由路径直接发布给所述订阅方。

进一步地,在根据预存订阅信息查找所述订阅消息的订阅方和发送所述订阅消息的路由路径之前,所述方法还包括:接收一个或多个所述订阅方发送的订阅信息,其中,所述订阅信息包括以下至少之一:所述订阅方需要接收的订阅消息、所述订阅方接收订阅消息的路由路径;保存所述订阅信息作为所述预存订阅信息。

进一步地,在所述根据预存订阅信息查找所述订阅消息的订阅方和发送所述订阅消息的路由路径之后,所述方法还包括:接收用于修改所述订阅方和/或修改所述路由路径的第一请求消息;根据所述第一请求消息修改所述订阅方得到指定订阅方和/或修改所述路由路径得到指定路由路径。将所述指定订阅方和所述定路由路径确定为所述订阅消息的接收方和/或发布所述订阅消息的路由路径。

进一步地,在所述指示所述消息发送方将所述订阅消息直接发布给订阅方之前,所述方法还包括:接收用于增加订阅所述订阅消息的第二请求消息;根据所述第二请求增加接收所述订阅消息的指定订阅方;指示所述消息发送方将所述订阅消息发布给增加的所述指定订阅方。

进一步地,在所述根据所述第二请求增加接收所述订阅消息的指定订阅方之后,所述方法还包括:判断所述第二请求是否指示对所述订阅消息进行分流后发送给所述订阅方和所述指定订阅方;在判断结果为是时,将所述订阅消息根据所述第二请求指示的权重值信息分流后发布给所述订阅方和所述指定订阅方。

进一步地,接收通过命令行界面cli或web客户端发送的所述第一请求消息和/或所述第二请求消息。

根据本发明的另一方面,提供了一种订阅消息的发布装置,包括:第一接收模块,用于接收消息发送方发送的用于发送订阅消息的请求消息;第一指示模块,用于指示所述消息发送方将所述订阅消息直接发布给订阅方。

进一步地,所述第一指示模块包括:查找单元,用于根据预存订阅信息查找所述订阅消息的订阅方和发送所述订阅消息的路由路径;指示单元,用于指示所述消息发送方将所述订阅消息通过所述路由路径直接发布给所述订阅方。

进一步地,所述第一指示模块还包括:第一接收单元,用于在所述查找单元根据预存订阅信息查找所述订阅消息的订阅方和发送所述订阅消息的路由路径之前,接收一个或多个所述订阅方发送的订阅信息,其中,所述订阅信息包括以下至少之一:所述订阅方需要接收的订阅消息、所述订阅方接收订阅消息的路由路径;保存单元,用于保存所述订阅信息作为所述预存订阅信息。

进一步地,所述第一指示模块还包括:第二接收单元,用于在所述查找单元根据预存订阅信息查找所述订阅消息的订阅方和发送所述订阅消息的路由路径之后,接收用于修改所述订阅方和/或修改所述路由路径的第一请求消息;修改单元,用于根据所述第一请求消息修改所述订阅方得到指定订阅方和/或修改所述路由路径得到指定路由路径。确定单元,用于将所述指定订阅方和所述定路由路径确定为所述订阅消息的接收方和/或发布所述订阅消息的路由路径。

进一步地,所述装置还包括:第二接收模块,用于在所述指示模块指示所述消息发送方将所述订阅消息直接发布给订阅方之前,接收用于增加订阅所述订阅消息的第二请求消息;增加模块,用于根据所述第二请求增加接收所述订阅消息的指定订阅方;第二指示模块,用于指示所述消息发送方将所述订阅消息发布给增加的所述指定订阅方。

进一步地,所述装置还包括:判断模块,用于在所述增加模块根据所述第二请求增加接收所述订阅消息的指定订阅方之后,判断所述第二请求是否指示对所述订阅消息进行分流后发送给所述订阅方和所述指定订阅方;分流模块,用于在判断结果为是时,将所述订阅消息根据所述第二请求指示的权重值信息分流后发布给所述订阅方和所述指定订阅方。

通过本发明,采用首先接收消息发送方发送的用于发送订阅消息的请求消息,然后指示所述消息发送方将所述订阅消息直接发布给订阅方。通过指示订阅消息的发送方直接将订阅消息发送给订阅方,而不通过中间件进行集中分发,解决了相关技术中在发送订阅消息时使用服务器进行中转而导致时延过大的问题,进而达到了缩短订阅消息的发送时延的效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的订阅消息的发布方法的流程图;

图2是根据本发明实施例的订阅消息的订阅示意图;

图3是根据本发明实施例的订阅消息的订阅流程图;

图4是根据本发明实施例的订阅消息的发布示意图;

图5是根据本发明实施例的订阅消息的发布流程图;

图6是根据本发明实施例的取消订阅的示意图;

图7是根据本发明实施例的取消订阅流程图;

图8是根据本发明实施例的修改消息路由路径示意图;

图9是根据本发明实施例的修改路由路径的流程图;

图10是根据本发明实施例的订阅消息发布装置的结构框图;

图11是根据本发明实施例的订阅消息发布装置的可选结构框图一;

图12是根据本发明实施例的订阅消息发布装置的可选结构框图二;

图13是根据本发明实施例的订阅消息发布装置的可选结构框图三;

图14是根据本发明实施例的订阅消息发布装置的可选结构框图四;

图15是根据本发明实施例的订阅消息发布装置的可选结构框图五。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种订阅消息的发布方法,该方法可应用在消息发布订阅系统中,也可应用在可以发送消息的服务器,中转设备、控制设备中。图1是根据本发明实施例的订阅消息的发布方法的流程图,如图1所示,该流程包括如下步骤:

步骤s102,接收消息发送方发送的用于发送订阅消息的请求消息;

步骤s104,指示消息发送方将订阅消息直接发布给订阅方。

通过本实施例,采用首先接收消息发送方发送的用于发送订阅消息的请求消息,然后指示消息发送方将订阅消息直接发布给订阅方。通过指示订阅消息的发送方直接将订阅消息发送给订阅方,而不通过中间件进行集中分发,解决了相关技术中在发送订阅消息时使用服务器进行中转而导致时延过大的问题,进而达到了缩短订阅消息的发送时延的效果。

在根据本实施例的可选实施方式中,还可以确定订阅消息的订阅方和订阅消息的发送方直接发送订阅消息的的路由路径,在具体的确定过程中,可以包括多种不同的确定方法,其中,可以根据预存的订阅信息进行确定,包括:

s11,根据预存订阅信息查找订阅消息的订阅方和发送订阅消息的路由路径;

s12,指示消息发送方将订阅消息通过路由路径直接发布给订阅方。

可选的,还包括确定和保存上述预存订阅消息,在根据预存订阅信息查找订阅消息的订阅方和发送订阅消息的路由路径之前,方法还包括:

s1,接收一个或多个订阅方发送的订阅信息,其中,订阅信息包括以下至少之一:订阅方需要接收的订阅消息、订阅方接收订阅消息的路由路径;

s2,保存订阅信息作为预存订阅信息。

可选的,图2是根据本发明实施例的订阅消息的订阅示意图,如图2所示,其中,servicea为订阅消息的订阅方,数据库服务器为保存订阅信息的数据库服务器,图3是根据本发明实施例的订阅消息的订阅流程图,如图3所示,包括:

s301,订阅方通过数据库客户端与数据库服务器建立链接;

s302,服务进行订阅操作,订阅操作中携带关键字标识key1;

s303,在数据库中增加一条索引sub记录,记录为key-value(重要索引)形式,其中sub携带的key1作为关键字,包括服务标识和ip。关键字key1用来表征订阅方标识和路由路径。

图4是根据本发明实施例的订阅消息的发布示意图,如图4所示,其中,serviceb为订阅消息的发布方,图5是根据本发明实施例的订阅消息的发布流程图,如图5所示,包括:

s501,发送方服务通过数据库客户端与数据库服务器建立链接;

s502,发送方服务进行发布操作,发布操作中携带key2表征报文特征;

s503,查看本地路由缓存,如果有该key的本地路由缓存,直接点对点建立链接,发送消息;

s504,如果没有该key的本地路由缓存,则查找数据库中的sub记录,将两者的key进行匹配,生成发布key的一条路由条目保持在数据库中同时更新发布方本地缓存,然后点对点发送消息;

可选的,在具体的匹配过程中,匹配分为两种:完全匹配和模糊匹配;可以先完全匹配,然后再模糊匹配。匹配到,则该key2生成一条路由条目保存在数据库中,后更新发布方本地缓存,然后根据匹配到的订阅方,点对点直接发送过去。

s505,如果在数据库中没有与sub记录匹配成功,则发布的消息丢弃。

订阅消息的订阅方订阅需要的订阅消息,可以通过关键字key1作为标识来表征需要的订阅消息,将包括关键字key1订阅信息保存在数据库索引sub记录中。消息发送方发送消息,其中可能包括订阅消息,发送方可以通过关键字key2作为标识来表征发送方发送消息的特征,然后在sub记录中进行匹配,寻找有哪些订阅方订阅了该特征的消息,查找订阅方,并生成该key2对应消息的路由条目或路由路径。发送方根据路由条目向订阅方发起一个轻量级的点对点通信链接,然后直接将消息发送给订阅方。

可选的,在创建订阅信息之后,订阅方还可以通过关键字key3取消订阅某类消息,其中,key3和key1可以相同或者不同,图6是根据本发明实施例的取消订阅的示意图,如图6所示,图7是根据本发明实施例的取消订阅流程图,如图7所示,取消订阅的方法包括:

s701,通过数据库客户端与数据库服务器建立链接;

s702,进行取消订阅操作,取消对于某个key的订阅;如已经订阅的key1

s703,在数据库的sub记录中删除该key下对应的服务条目,然后在路由关系中根据key删除对应的路由条目,更新与该记录相关的发布方的本地缓存。

可选的,在某些特定的场景下,在根据预存订阅信息查找订阅消息的订阅方和发送订阅消息的路由路径之后,还可以修改订阅方和路由路径来临时重新确定订阅方和路由路径,包括:

s21,接收用于修改订阅方和/或修改路由路径的第一请求消息;

s22,根据第一请求消息修改订阅方得到指定订阅方和/或修改路由路径得到指定路由路径。

s23,将指定订阅方和定路由路径确定为订阅消息的接收方和/或发布订阅消息的路由路径。

如,可以修改路由条目来修改订阅消息的投递路径:图8是根据本发明实施例的修改消息路由路径示意图,如图8所示,图9是根据本发明实施例的修改路由路径的流程图,如图9所示,包括:

s901,通过web客户端修改某个key的投递路径;

s902,web服务器将命令传递给配置代理;

s903,配置代理修改该key在数据库中的路由记录;

s904,通过该key的路由记录找到发布方,更新发布方的本地路由缓存。

通过消息的发布订阅,根据消息的关键字key1,已经生成了一条路由关系在数据库中,路由条目示意如下:

key:key1

value:发布/servicea,订阅/serviceb

如,在某个可选的场景下,新部署了服务c,它是服务b的增强版本,需要后续替代服务b,那么势必需要后续将所有发往服务b的消息投递给服务c。

可选的,可以通过命令行界面(command-lineinterface,简称为cli)或者web客 户端,经配置代理,直接与数据库服务器交互第一请求消息,修改路由条目,修改后的路由条目如下:

key:key1

value:发布/servicea,订阅/servicec

可选的,还可以更新servicea的本地缓存,这样后续所有key1特征的报文,直接投递给新服务c,而不是服务b,整个过程对系统平滑无损。

在根据本实施例的可选实施方式中,在指示消息发送方将订阅消息直接发布给订阅方之前,还可以增加订阅消息的接收方,即,临时增加订阅方,方法还包括:

s31,接收用于增加订阅订阅消息的第二请求消息;

s32,根据第二请求增加接收订阅消息的指定订阅方;

s33,指示消息发送方将订阅消息发布给增加的指定订阅方。

可选的,根据上述可选实施方式,在根据第二请求增加接收订阅消息的指定订阅方之后,还可以对订阅消息进行分流处理,如,可以将一条完整的订阅消息进行拆分后发给不同的订阅方,方法还包括:

s41,判断第二请求是否指示对订阅消息进行分流后发送给订阅方和指定订阅方;

s42,在判断结果为是时,将订阅消息根据第二请求指示的权重值信息分流后发布给订阅方和指定订阅方。

下面结合场景进行具体说明:

通过消息的发布订阅,如果基于消息关键字key1,服务b有两份拷贝实例,都进行了订阅,并且该消息指定是非抄送模式,那么本会进行负荷均衡,即对于key1特征的报文,投递策略轮流投递给服务b的两个实例,即,订阅方serviceb1、订阅方serviceb2。

路由条目示意如下:

key:key1

value:发布/servicea,订阅/serviceb1/1,订阅/serviceb2/1

在路由条目选择上,serviceb1和serviceb2权重都为1,会轮流选择作为key1消息的目的方。

在某个可选的场景下,服务b需要升级成bb,新的版本需要融入到系统中试运行,那么系统需要将一小部分的工作转移到servicebb,这样既可以让新版本发挥功能,又避免如果新版本有故障,对系统的影响也能减少到最小。

可选的,本实例中本实施例中用户通过在线命令cli或者web客户端,经配置代理,直接与数据库服务器交互发送第二请求消息,修改消息订阅方和权重,修改后的路由条目如下:

key:key1

value:发布/servicea,订阅/serviceb1/40,订阅/serviceb2/40,订阅/servicebb/20

修改后,对于key1的消息,投递目的方有serviceb实例1,serviceb实例2,以及servicebb实例3,投递权重因子为40%,40%,20%。这样后续报文的投递,投递给servicebb只占整个订阅消息报文的20%。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。

在本实施例中还提供了一种订阅消息发布装置,该装置可以作为一个组件或者功能模块设置在发布订阅消息的服务器上,还可以设置在其他可以发送消息的设备上。该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图10是根据本发明实施例的订阅消息发布装置的结构框图,如图10所示,该装置包括:

第一接收模块100,用于接收消息发送方发送的用于发送订阅消息的请求消息;

第一指示模块102,用于指示消息发送方将订阅消息直接发布给订阅方。

图11是根据本发明实施例的订阅消息发布装置的可选结构框图一,如图11所示,该装置除包括图10所示的所有模块外,第一指示模块102包括:

查找单元110,用于根据预存订阅信息查找订阅消息的订阅方和发送订阅消息的路由路径;

指示单元112,用于指示消息发送方将订阅消息通过路由路径直接发布给订阅方。

图12是根据本发明实施例的订阅消息发布装置的可选结构框图二,如图12所示,该装置除包括图11所示的所有模块外,第一指示模块102还包括:

第一接收单元120,用于在查找单元根据预存订阅信息查找订阅消息的订阅方和发送订阅消息的路由路径之前,接收一个或多个订阅方发送的订阅信息,其中,订阅信息包括以下至少之一:订阅方需要接收的订阅消息、订阅方接收订阅消息的路由路径;

保存单元122,用于保存订阅信息作为预存订阅信息。

图13是根据本发明实施例的订阅消息发布装置的可选结构框图三,如图13所示,该装置除包括图11所示的所有模块外,第一指示模块102还包括:

第二接收单元130,用于在查找单元根据预存订阅信息查找订阅消息的订阅方和发送订阅消息的路由路径之后,接收用于修改订阅方和/或修改路由路径的第一请求消息;

修改单元132,用于根据第一请求消息修改订阅方得到指定订阅方和/或修改路由路径得到指定路由路径。

确定单元134,用于将指定订阅方和定路由路径确定为订阅消息的接收方和/或发布订阅消息的路由路径。

图14是根据本发明实施例的订阅消息发布装置的可选结构框图四,如图14所示,该装置除包括图10所示的所有模块外,装置还包括:

第二接收模块140,用于在第一指示模块指示消息发送方将订阅消息直接发布给订阅方之前,接收用于增加订阅订阅消息的第二请求消息;

增加模块142,用于根据第二请求增加接收订阅消息的指定订阅方;

第二指示模块144,用于指示消息发送方将订阅消息发布给增加的指定订阅方。

图15是根据本发明实施例的订阅消息发布装置的可选结构框图五,如图15所示,该装置除包括图14所示的所有模块外,装置还包括:

判断模块150,用于在增加模块根据第二请求增加接收订阅消息的指定订阅方之后,判断第二请求是否指示对订阅消息进行分流后发送给订阅方和指定订阅方;

分流模块152,用于在判断结果为是时,将订阅消息根据第二请求指示的权重值信息分流后发布给订阅方和指定订阅方。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

s51,接收消息发送方发送的用于发送订阅消息的请求消息;

s52,指示消息发送方将订阅消息直接发布给订阅方。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行接收消息发送方发送的用于发送订阅消息的请求消息;

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行指示消息发送方将订阅消息直接发布给订阅方。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1