分布式消息处理系统及方法技术方案

技术编号:37791966 阅读:14 留言:0更新日期:2023-06-09 09:22
本说明书涉及分布式消息技术领域,具体地公开了一种分布式消息处理系统及方法,其中,该系统包括接入层、路由层、渠道层、数据库和Kafka补偿集群;接入层用于接收消息发送方发送的消息;还用于将接收到的消息发送至路由层;还用于将接收到的消息持久化至数据库中;路由层用于接收接入层发送的消息;还用于根据消息的渠道信息将消息发送至渠道层中对应的渠道层服务器;渠道层中的渠道层服务器用于调用对应的消息渠道推送接收到的消息;数据库用于根据消息的推送结果更新消息的状态;Kafka补偿集群用于每隔预设时间段扫描数据库中的消息的状态,以将推送失败的消息进行重新推送。上述方案可以降低开发难度,提高消息推送的效率和可靠性。的效率和可靠性。的效率和可靠性。

【技术实现步骤摘要】
分布式消息处理系统及方法


[0001]本说明书涉及分布式消息
,特别涉及一种分布式消息处理系统及方法。

技术介绍

[0002]目前银行业推送的消息(例如,短信、APP消息、微信等)日渐丰富,日均有数以亿计的消息需发送,如何整合消息发送,提高消息的发送速率,提升发送可靠性,变得越来越重要。
[0003]当前,各种企事业机构(例如,银行)都有自己的消息发送体系,通过建立不同的消息发送系统,将消息发送给不同的渠道,例如短信渠道、微信渠道、手机APP渠道等,各消息发送方如果需要发送不同渠道的消息则需要分别对接不同的消息发送渠道,且各渠道的消息模板不尽相同,需要配置不同的消息模板。这种方式大大增加了消息发送方的开发难度。消息发送方需要对接不同的发送系统发送不同渠道的消息,不同渠道不同的模板要单独配置在不同的系统,系统应对消息的激增响应不及时,而且消息经过分布式消息中间件后可能会引起消息丢失。
[0004]针对上述问题,目前尚未提出有效的解决方案。

技术实现思路

[0005]本说明书实施例提供了一种分布式消息处理系统及方法,以解决现有技术中消息发送方的开发难度大且消息发送效率低或者可靠性低的问题。
[0006]本说明书实施例提供了一种分布式消息处理系统,包括接入层、路由层、渠道层、数据库和Kafka补偿集群;其中,
[0007]所述接入层用于接收消息发送方发送的消息;还用于将接收到的消息发送至所述路由层;还用于将接收到的消息持久化至所述数据库中;
[0008]所述路由层用于接收所述接入层发送的消息;还用于根据所述消息的渠道信息将所述消息发送至所述渠道层中对应的渠道层服务器;
[0009]所述渠道层中的渠道层服务器用于调用对应的消息渠道推送接收到的消息;
[0010]所述数据库用于根据所述消息的推送结果更新所述消息的状态;
[0011]所述Kafka补偿集群用于每隔预设时间段扫描所述数据库中的消息的状态,以将推送失败的消息进行重新推送。
[0012]在一个实施例中,分布式消息处理系统还包括第一层Kafka集群和第二层Kafka集群;
[0013]所述接入层与所述路由层之间通过所述第一层Kafka集群连接;
[0014]所述路由层与所述渠道层之间通过所述第二层Kafka集群连接。
[0015]在一个实施例中,所述第一层Kafka集群与所述第二层Kafka集群之间设置有分布式服务链路,在Kafka心跳报文出现异常时,启动备用链路推送重要程度高于预设程度的消息。
[0016]在一个实施例中,在消息量激增的情况下,所述第一层Kafka集群和/或所述第二层Kafka集群执行扩容操作。
[0017]在一个实施例中,所述数据库具体用于:在所述接入层将所述消息持久化至所述数据库的情况下将所述消息的状态设置为第一状态;在所述接入层将所述消息发送至所述路由层的情况下将所述消息的状态设置为第二状态;在所述渠道层服务器调用对应的消息渠道推送所述消息的情况下将所述消息的状态设置为第三状态;
[0018]所述Kafka补偿集群具体用于每隔预设时间段扫描所述数据库中的消息的状态,以将状态为第一状态和第二状态的消息进行重新推送。
[0019]在一个实施例中,所述Kafka补偿集群具体用于每隔预设时间段扫描所述数据库中的消息的状态,将状态为第一状态的消息重新发送至所述第一层Kafka集群,将状态为第二状态的消息重新发送至所述第二层Kafka集群,以将状态为第一状态和第二状态的消息进行重新推送。
[0020]在一个实施例中,所述Kafka补偿集群还用于将重复推送次数超过预设次数的消息导出,并将导出的消息发送至指定服务器进行排查处理。
[0021]在一个实施例中,所述消息的渠道信息包括以下至少之一:短信渠道、应用程序推送消息渠道、聊天应用程序聊天消息渠道;
[0022]相应的,所述渠道层的渠道层服务器包括:短信渠道层服务器集群、推送消息渠道层服务器集群、聊天消息渠道层服务器集群;
[0023]相应的,所述消息渠道包括:通信运营商专线、应用程序长连接模组、应用网关。
[0024]本说明书实施例还提供了一种分布式消息处理方法,包括:
[0025]接入层接收消息发送方发送的消息,将接收到的消息持久化至数据库中,并将接收到的消息发送至路由层;
[0026]所述路由层根据接到的所述消息的渠道信息将所述消息发送至渠道层中对应的渠道层服务器;
[0027]所述渠道层服务器调用对应的消息渠道推送接收到的消息;
[0028]数据库根据所述消息的推送结果更新所述消息的状态;
[0029]Kafka补偿集群每隔预设时间段扫描所述数据库中的消息的状态,以将推送失败的消息进行重新推送。
[0030]在一个实施例中,接入层将接收到的消息发送至路由层,包括:
[0031]接入层将接收到的消息发送至第一层Kafka集群;
[0032]路由层从所述第一层Kafka集群消费所述消息。
[0033]在一个实施例中,所述路由层根据接到的所述消息的渠道信息将所述消息发送至渠道层中对应的渠道层服务器,包括:
[0034]所述路由层根据接收到的所述消息的渠道信息将所述消息发送至对应的第二层Kafka集群;
[0035]所述渠道层中的渠道层服务器从对应的第二层Kafka集群消费所述消息。
[0036]在一个实施例中,数据库根据所述消息的推送结果更新所述消息的状态,包括:
[0037]在所述接入层将所述消息持久化至所述数据库的情况下,数据库将所述消息的状态设置为第一状态;
[0038]在所述接入层将所述消息发送至所述路由层的情况下,数据库将所述消息的状态设置为第二状态;
[0039]在所述渠道层服务器调用对应的消息渠道推送所述消息的情况下,数据库将所述消息的状态设置为第三状态;
[0040]相应的,所述Kafka补偿集群每隔预设时间段扫描所述数据库中的消息的状态,以将状态为第一状态和第二状态的消息进行重新推送。
[0041]在本说明书实施例中,提供了一种分布式消息处理系统,包括接入层、路由层、渠道层、数据库和Kafka补偿集群。所述接入层接收消息发送方发送的消息,将接收到的消息发送至所述路由层,将接收到的消息持久化至所述数据库中。所述路由层接收所述接入层发送的消息,根据所述消息的渠道信息将所述消息发送至所述渠道层中对应的渠道层服务器。所述渠道层中的渠道层服务器调用对应的消息渠道推送接收到的消息。所述数据库根据所述消息的推送结果更新所述消息的状态。所述Kafka补偿集群每隔预设时间段扫描所述数据库中的消息的状态,以将推送失败的消息进行重新推送。上述方案中,整个系统分为接入层、路由层、渠道层三层架构,接入层负责接收消息发送方数据,可通过联机、分布式消息、批量文件传送到接入层,路由层接收接入层消息,通过判断渠道等相关信息发送给不同的渠本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式消息处理系统,其特征在于,包括接入层、路由层、渠道层、数据库和Kafka补偿集群;其中,所述接入层用于接收消息发送方发送的消息;还用于将接收到的消息发送至所述路由层;还用于将接收到的消息持久化至所述数据库中;所述路由层用于接收所述接入层发送的消息;还用于根据所述消息的渠道信息将所述消息发送至所述渠道层中对应的渠道层服务器;所述渠道层中的渠道层服务器用于调用对应的消息渠道推送接收到的消息;所述数据库用于根据所述消息的推送结果更新所述消息的状态;所述Kafka补偿集群用于每隔预设时间段扫描所述数据库中的消息的状态,以将推送失败的消息进行重新推送。2.根据权利要求1所述的分布式消息处理系统,其特征在于,还包括第一层Kafka集群和第二层Kafka集群;所述接入层与所述路由层之间通过所述第一层Kafka集群连接;所述路由层与所述渠道层之间通过所述第二层Kafka集群连接。3.根据权利要求2所述的分布式消息处理系统,其特征在于,所述第一层Kafka集群与所述第二层Kafka集群之间设置有分布式服务链路,在Kafka心跳报文出现异常时,启动备用链路推送重要程度高于预设程度的消息。4.根据权利要求3所述的分布式消息处理系统,其特征在于,在消息量激增的情况下,所述第一层Kafka集群和/或所述第二层Kafka集群执行扩容操作。5.根据权利要求3所述的分布式消息处理系统,其特征在于,所述数据库具体用于:在所述接入层将所述消息持久化至所述数据库的情况下将所述消息的状态设置为第一状态;在所述接入层将所述消息发送至所述路由层的情况下将所述消息的状态设置为第二状态;在所述渠道层服务器调用对应的消息渠道推送所述消息的情况下将所述消息的状态设置为第三状态;所述Kafka补偿集群具体用于每隔预设时间段扫描所述数据库中的消息的状态,以将状态为第一状态和第二状态的消息进行重新推送。6.根据权利要求5所述的分布式消息处理系统,其特征在于,所述Kafka补偿集群具体用于每隔预设时间段扫描所述数据库中的消息的状态,将状态为第一状态的消息重新发送至所述第一层Kafka集群,将状态为第二状态的消息重新发送至所述第二层Kafka集群,以将状态为第一状态和第二状态的消息进行重新推送。7.根据权利要求1所述的分布...

【专利技术属性】
技术研发人员:王存彪
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

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

1