消息服务方法及消息服务器与流程

文档序号:34420061发布日期:2023-06-08 20:25阅读:93来源:国知局
消息服务方法及消息服务器与流程

本披露一般涉及物联网通信。更具体地,本披露涉及一种消息服务方法及消息服务器。


背景技术:

1、随着物联网(iot,internet of things)的普及,大量设备与系统平台之间的数据交互成为必然,iot平台需要为这些海量的数据交互提供高效的通信服务能力,为后续业务系统的数据计算、数据挖掘等提供基础的数据保障。

2、消息服务是分布式服务场景下常用的通信服务组件之一,可以有效实现通信双方之间的异步交互、服务解耦和限流削峰,降低系统依赖的耦合度,保障交互双方间的稳定可靠通信。

3、在物联网场景下,消息服务的客户端往往由不同机构设计和研发,客户端的功能、运行环境也是多种多样,客户端的设计者出于对功能和制约条件的考虑,会采用一些适配物联网场景的公共协议或定制协议,这就造成客户端通信协议的多样性。而消息服务的客户端通常不易进行适配消息服务的改造,有鉴于此,亟需提供一种消息服务方案,以便主动适配各种客户端的通信方式。


技术实现思路

1、为了至少解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了消息服务方案。

2、在第一方面中,本披露提供一种消息服务方法,包括:接收生产者发出的第一消息字节流;确定第一消息字节流的协议类型;根据协议类型对第一消息字节流进行反序列化处理,以得到对应的协议对象;对协议对象进行格式转换,以得到第二消息字节流;第二消息字节流的格式与消费者的协议类型相匹配。

3、在一些实施例中,根据协议类型对第一消息字节流进行反序列化处理,以得到对应的协议对象,包括:根据第一消息字节流的协议类型创建对应类型的协议对象;调用对应类型的协议对象的解析方法,以将第一消息字节流解析为协议对象的属性。

4、在一些实施例中,第一消息字节流包括:报文字节特征;在消息服务过程中,响应于生产者与服务器建立通信连接,服务器生成生产者客户端通道对象,生产者客户端通道对象包括:端口特征;确定第一消息字节流的协议类型,包括:根据报文字节特征和/或端口特征,确定第一消息字节流的协议类型。

5、在一些实施例中,对协议对象进行格式转换,以得到第二消息字节流,包括:对协议对象进行路由信息的提取;根据路由信息确定对应的格式转换方法;通过对应的格式转换方法,根据协议对象生成消息数据;对消息数据进行序列化处理,以得到第二消息字节流。

6、在一些实施例中,路由信息包括:路由标识、路由方式、客户端标识和生产者客户端通道路由标签;其中,路由标识为指示消费者客户端通道的唯一标识,路由标识与格式转换方法存在映射关系;客户端标识为指示生产者客户端通道的唯一标识;生产者客户端通道路由标签用于表示生产者客户端通道是否用于路由;生产者客户端通道为生产者与服务器建立通信连接时所产生的通道,其以生产者客户端通道对象的形式存储在服务器内部。

7、在一些实施例中,对消息数据进行序列化处理,以得到第二消息字节流之前,还包括:根据路由信息和生产者客户端通道对象,生成发送对象。

8、在一些实施例中,路由方式包括:第一路由方式和第二路由方式;若路由方式为第一路由方式,根据路由信息和生产者客户端通道对象,生成发送对象,包括:根据路由标识和客户端标识在服务器缓存中查询匹配的消费者客户端通道;若匹配的消费者客户端通道与生产者客户端通道位于同一服务节点,则基于路由信息和匹配的消费者客户端通道生成发送对象,发送对象的发送方式为使用现有通道;若匹配的消费者客户端通道与生产者客户端通道未位于同一服务节点,则判断二者所在服务节点是否已有连接通道,若是,则基于路由信息和匹配的消费者客户端通道生成发送对象,发送对象的发送方式为使用现有通道;若否,则基于路由信息和匹配的消费者客户端的通信配置信息生成发送对象,发送对象的发送方式为建立新通道。

9、在一些实施例中,若路由方式为第一路由方式,根据路由标识和客户端标识在服务器缓存中查询匹配的消费者客户端通道之后,还包括:若未查询到匹配的消费者客户端通道,则生成异常消息,并存储消息数据和路由信息。

10、在一些实施例中,若路由方式为第二路由方式,根据路由信息和生产者客户端通道对象,生成发送对象,包括:根据路由标识和客户端标识在服务器缓存中查询匹配的消费者客户端通道;在服务器缓存中查询匹配的消费者客户端通道对应的通信配置信息;根据路由信息和通信配置信息生成发送对象,发送对象的发送方式为建立新通道。

11、在一些实施例中,对消息数据进行序列化处理,以得到第二消息字节流,包括:从消息数据和发送对象中获取协议类型所需信息;将协议类型所需信息封装至协议对象的属性中;调用协议对象的编码方法,以生成第二消息字节流。

12、在一些实施例中,对消息数据进行序列化处理,以得到第二消息字节流之后,还包括:根据发送对象的发送方式执行对应的发送方法,将第二消息字节流发送至消费者。

13、在第二方面中,本披露提供一种消息服务器,包括:消息交互单元,其包括:接收模块和协议识别解析模块;其中,接收模块与协议识别解析模块连接,并配置成:接收生产者发出的第一消息字节流,并将第一消息字节流发送至协议识别解析模块;协议识别解析模块配置成:确定第一消息字节流的协议类型,根据协议类型对第一消息字节流进行反序列化处理,以得到对应的协议对象;协程控制单元,其分别与消息交互单元和消息处理单元连接,并配置成:根据协议类型,将协议对象发送至对应的消息处理单元;消息处理单元,其配置成:对协议对象进行格式转换后,将格式转换结果经由协程控制单元发送至消息交互单元;消息交互单元还包括:协议封装模块和发送模块;其中,协议封装模块与发送模块连接,并配置成:根据格式转换结果生成第二消息字节流,并将其发送至发送模块;发送模块配置成:将第二消息字节流发送至消费者。

14、在一些实施例中,协议识别解析模块包括:协议识别子模块和协议解析实现子模块;其中,协议识别子模块与协议解析实现子模块连接,并配置成:根据第一消息字节流中的报文字节特征和/或生产者客户端通道对象中的端口特征,确定第一消息字节流的协议类型,根据协议类型创建对应类型的协议对象;生产者客户端通道对象为生产者与服务器建立通信连接时所产生的通道对象;协议解析实现子模块以依赖类库的形式在插件中进行集成,并配置成:调用协议对象的解析方法,以将第一消息字节流解析为协议对象的属性。

15、在一些实施例中,消息处理单元包括:消息解析转换模块和路由控制模块;其中,消息解析转换模块与路由控制模块连接,并配置成:对协议对象进行路由信息的提取,根据路由信息确定对应的格式转换方法,通过对应的格式转换方法,根据协议对象生成消息数据;路由控制模块配置成:根据路由信息和生产者客户端通道对象生成发送对象。

16、在一些实施例中,协议封装模块在插件中进行集成,用于提供发送对象的封装方法与协议对象的编码方法;其中,每种协议类型的具体实现以独立类库的形式引入协议封装模块。

17、在一些实施例中,消息服务器内部存储有路由标识与格式转换方法之间的映射关系;对应地,消息解析转换模块包括:路由信息提取子模块和格式转换子模块;路由信息提取子模块配置成:对协议对象进行路由信息的提取;其中,路由信息包括:路由标识、路由方式、客户端标识、生产者客户端通道路由标签;格式转换子模块内部集成有格式转换方法,并配置成:根据路由标识和映射关系确定对应的格式转换方法,通过对应的格式转换方法,根据协议对象生成消息数据。

18、在一些实施例中,路由控制模块包括:路由信息维护子模块和消费者通信方式处理子模块;路由信息维护子模块用于维护客户端标识与服务节点之间的映射关系;消费者通信方式处理子模块用于通过路由方式对应的处理方法,生成发送对象,并具体配置成:根据路由标识和客户端标识在服务器缓存中查询匹配的消费者客户端通道;若匹配的消费者客户端通道与生产者客户端通道位于同一服务节点,则基于路由信息和匹配的消费者客户端通道生成发送对象,发送对象的发送方式为使用现有通道;若匹配的消费者客户端通道与生产者客户端通道未位于同一服务节点,则判断二者所在服务节点是否已有连接通道,若是,则基于路由信息和匹配的消费者客户端通道生成发送对象,发送对象的发送方式为使用现有通道;若否,则基于路由信息和匹配的消费者客户端的通信配置信息生成发送对象,发送对象的发送方式为建立新通道;若未查询到匹配的消费者客户端通道,则生成异常消息,并存储消息数据和路由信息。

19、在一些实施例中,消息处理单元还包括:与路由控制模块连接的异常处理模块;异常处理模块包括:异常消息存储子模块和异常消息补偿子模块;路由控制模块还配置成:若未查询到匹配的消费者客户端通道,则将消息数据和路由信息发送至异常消息存储子模块进行存储;异常消息补偿子模块用于定时执行异常补偿任务,具体配置成:将异常消息存储子模块所存储的消息数据和路由信息,发送至消费者通信方式处理子模块,以再次执行消息服务。

20、通过如上所提供的消息服务方法,本披露实施例在接收生产者发出的第一消息字节流后,能够对第一消息字节流中的协议类型进行识别,从而指导第一消息字节流的反序列化,以得到对应类型的协议对象。经格式转换处理后,以匹配消费者的消息格式,即第二字节流,并将其发送至消费者。通过协议类型的识别结果指导消息字节流的反序列化和格式转换过程,主动适配各种客户端的通信方式,满足不同协议类型的生产者和消费者之间的消息服务需求,使得不同协议类型的生产者和消费者之间也能够成功实现信息交互。

21、本披露另一些实施例提供的消息服务器,遵从对消息处理流程封闭,对消息协议类型开放的设计原则,通过协议识别解析子模块和协议解析实现子模块,可以适配常用公共通信协议,并且还提供了私有协议扩展支持。即使处于具有不同协议需求的业务环境下,只需根据实际服务的业务环境对协议识别模块进行识别范围的调整,并引入相应的协议解析实现模块类库即可,从而提高协议识别解析模块的复用率和灵活性。

22、本披露另一些实施例提供的消息服务方法,提供了多种路由方式,兼顾了查询效率和集群使用场景,利用提取的路由信息找到可支撑与消费者建立通信的数据,从而满足消息服务的路由需求,优化了消息服务的全局共享数据的处理方式,解决了传统物联网交互场景下,海量topic和复杂路由所带来的处理压力。

23、本披露另一些实施例提供的消息服务器,利用协程控制单元作为任务调度中心,创建协程执行消息处理单元的业务逻辑,提高线程资源的使用效率,从而达到使用有限资源处理更多并发量的效果,完成了消息服务器的并发性能的提升。

24、本披露另一些实施例提供的消息服务器,还提供了异常处理模块,用于保存异常情况下的消息数据和发送对象,并定时执行异常补偿任务,以重试消息服务,增强了服务器的异常补偿能力,保障了通信的可靠性。

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