System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术实施例涉及消息中间件,尤其涉及一种存储客户端、消息数据存储装置、系统、方法和设备。
技术介绍
1、rabbitmq消息中间件作为消息交换的基础组件,已经在业界诸多的it业务系统中被广泛使用和落地,承担系统间异步解耦、削峰填谷的重要功能。然而,在高并发、大流量场景下,rabbitmq的系统架构设计存在着一定的限制。
2、在rabbitmq的设计理念中,服务器既作为协议解析和收发处理层,同时负责具体的存储,计算和存储严重耦合,分区容错性较差,容易出现“脑裂”问题,不具备自动恢复或故障自动转移能力,需要人工介入。
3、其次,rabbitmq以集群方式运行,但不支持高可用,队列(queue)在不同节点仅仅存在索引信息,一旦队列所属的节点宕机,发送的消息会丢失,持久化的消息也无法消费。
技术实现思路
1、本专利技术实施例提供一种存储客户端、消息数据存储装置、系统、方法和设备,以解决现有的rabbitmq计算和存储严重耦合、消息处理性能差的问题。
2、为了解决上述技术问题,本专利技术是这样实现的:
3、第一方面,本专利技术实施例提供了一种存储客户端,所述存储客户端作为服务器中消息队列的一部分嵌入在所述服务器中,包括:
4、节点选择模块,用于执行消息数据的副本在存储过程中的第一逻辑处理,所述第一逻辑处理包括:
5、接收到服务器发送的所述消息数据之后,从元数据层获取存储节点集群信息;
6、根据所述存储节点
7、将所述消息数据的副本写入所述副本节点进行存储。
8、可选的,所述节点选择模块还用于执行以下至少一项:
9、采用负载均衡的方式选取指定数目的存储节点作为所述消息数据的副本节点;
10、若选取的所述存储节点故障,重新选择新的存储节点代替故障的所述存储节点。
11、可选的,所述存储客户端还包括:
12、数据开放接口模块,用于执行消息数据的副本在存储过程中的第二逻辑处理;所述第二逻辑处理包括以下至少一项:
13、读取所述消息数据的副本的存储进度、查询磁盘的剩余容量和测试存储节点是否正常运行。
14、可选的,所述存储客户端还包括:
15、配置模块,用于配置副本写入数目作为所述指定数目,配置副本确认数目作为写入所述消息数据的副本成功存储的副本节点的规定值。
16、可选的,还包括:
17、宕机恢复模块,用于对异常状况进行处理,其中所述异常状况至少以下至少一项:所述存储客户端宕机和所述存储客户端对应的服务器宕机。
18、第二方面,本专利技术实施例提供了一种消息数据存储装置,包括:
19、如第一方面中任一项所述的存储客户端、多个存储节点和元数据层;
20、所述存储节点用于将所述存储客户端写入的消息数据的副本写入磁盘,不同的所述存储节点之间相互独立;
21、所述元数据层用于存储所有所述存储节点的元数据信息,使得相互独立的所述存储节点组成存储节点集群。
22、可选的,所述存储节点还用于从所述磁盘中读取所述消息数据的副本,将读取到的所述消息数据的副本发送给所述存储客户端。
23、第三方面,本专利技术实施例提供了一种消息数据处理系统,包括:
24、多个如第二方面中任一项所述的消息数据存储装置和多个服务器;
25、所述消息数据存储装置与所述服务器分离设置;
26、所述消息数据存储装置中的存储客户端作为与所述消息数据存储装置对应的所述服务器中的一部分嵌入在所述服务器中;
27、所述服务器用于将消息数据发送给与所述服务器对应的所述存储客户端。
28、可选的,所述服务器还用于接收任意发送者发送的消息,所述消息中包含所述消息数据;
29、所述服务器还用于与所述发送者建立连接;
30、所述服务器还用于接收任意发送者发送的消息;
31、所述服务器还用于与消费者建立连接;
32、所述服务器还用于推送接收到的消息数据到所述消费者。
33、第四方面,本专利技术实施例提供了一种消息处理方法,所述方法包括:
34、存储客户端接收到服务器发送的消息数据之后,从元数据层获取存储节点集群信息,所述存储客户端作为所述服务器中消息队列的一部分嵌入在所述服务器中;
35、所述存储客户端根据所述存储节点集群信息,选取指定数目的存储节点作为所述消息数据的副本节点;
36、所述存储客户端将所述消息数据的副本写入所述副本节点进行存储。
37、可选的,所述存储客户端根据所述存储节点集群信息,选取指定数目的存储节点作为所述消息数据的副本节点包括:
38、所述存储客户端采用轮询的方式选取指定数目的存储节点作为所述消息数据的副本节点;
39、若选取的存储节点故障,重新选择新的存储节点代替故障存储节点。
40、可选的,所述指定数目为副本写入数目,
41、所述存储客户端将所述消息数据的副本写入所述副本节点进行存储包括:
42、所述存储客户端向所述副本节点发送写入副本请求,等待所述副本节点将所述消息数据的副本成功写入磁盘之后发送的请求响应,其中,所述副本请求中携带所述消息数据的副本;
43、若所述请求响应的数目在规定时间内未达到副本确认数目,所述存储客户端选择新的存储节点代替未接收到请求响应的副本节点。
44、可选的,还包括:
45、若所述存储客户端或所述存储客户端对应的服务器发生宕机,选取新的存储客户端代替宕机的存储客户端;
46、将消息队列日志的状态改为恢复状态,来避免所述宕机的存储客户端继续向所述存储节点写入新的消息数据的副本,其中,所述消息队列日志分段存储;
47、从所有存储节点中获取所述消息队列日志提交的最新条目,其中,所述最新条目用于确定所述消息数据的副本是否提交成功或提交完全;
48、若所述消息数据的副本提交不完全,所述新的存储客户重新进行读取所述消息数据,创建新的消息队列日志;
49、将新读取的消息数据的副本重新提交到所述新的消息队列日志中;
50、若所述消息数据的副本未提交,舍弃所述消息数据的副本。
51、可选的,还包括:
52、所述存储客户端接收到读取所述消息数据的指令,从所述元数据层获取存储节点集群信息;
53、根据所述存储节点集群信息读取所述消息数据对应的副本节点;
54、从所述副本节点中读取所述消息数据的副本。
55、第五方面,本专利技术实施例提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如上述第一方面所述本文档来自技高网...
【技术保护点】
1.一种存储客户端,其特征在于,所述存储客户端作为服务器中消息队列的一部分嵌入在所述服务器中,包括:
2.根据权利要求1所述的存储客户端,其特征在于,所述节点选择模块还用于执行以下至少一项:
3.根据权利要求1所述的存储客户端,其特征在于,所述存储客户端还包括:
4.根据权利要求1所述的存储客户端,其特征在于,所述存储客户端还包括:
5.根据权利要求1所述的存储客户端,其特征在于,还包括:
6.一种消息数据存储装置,其特征在于,包括:
7.根据权利要求6所述的消息数据存储装置,其特征在于,所述存储节点还用于从所述磁盘中读取所述消息数据的副本,将读取到的所述消息数据的副本发送给所述存储客户端。
8.一种消息数据处理系统,其特征在于,包括:
9.根据权利要求8所述的消息数据处理系统,其特征在于,所述服务器还用于接收任意发送者发送的消息,所述消息中包含所述消息数据;
10.一种消息处理方法,其特征在于,所述方法包括:
11.根据权利要求10所述的方法,其特征在于,所述
12.根据权利要求10所述的方法,其特征在于,所述指定数目为副本写入数目,
13.根据权利要求10所述的方法,其特征在于,还包括:
14.根据权利要求10所述的方法,其特征在于,还包括:
15.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求10至14中任一项所述的消息处理方法的步骤。
16.一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求10至14中任一项所述的消息处理方法的步骤。
...【技术特征摘要】
1.一种存储客户端,其特征在于,所述存储客户端作为服务器中消息队列的一部分嵌入在所述服务器中,包括:
2.根据权利要求1所述的存储客户端,其特征在于,所述节点选择模块还用于执行以下至少一项:
3.根据权利要求1所述的存储客户端,其特征在于,所述存储客户端还包括:
4.根据权利要求1所述的存储客户端,其特征在于,所述存储客户端还包括:
5.根据权利要求1所述的存储客户端,其特征在于,还包括:
6.一种消息数据存储装置,其特征在于,包括:
7.根据权利要求6所述的消息数据存储装置,其特征在于,所述存储节点还用于从所述磁盘中读取所述消息数据的副本,将读取到的所述消息数据的副本发送给所述存储客户端。
8.一种消息数据处理系统,其特征在于,包括:
9.根据权利要求8所述的消息数据处理系统,其特征在于,所述服务器还用于接收任意发送者发送的消息,所述消...
【专利技术属性】
技术研发人员:陈国瑾,
申请(专利权)人:中移苏州软件技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。