System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及信息交互,具体为一种实时消息系统中的一致性路由建立系统及方法。
技术介绍
1、实时交互式消息技术是一种在线交互的常见网络应用技术,其广泛应用于点对点通信,在线协作,实时监控,远程遥控等应用场景。如今,大多数的实时交互式消息系统采用分布式的消息代理架构实现亿级流量的海量消息的投递。在分布式系统中,如何确保消息的一致性和有序性是一个存在已久的难点。
2、由于实时性传输要求,终端用户通常在多种网络连接中切换(wifi/5g,ipv4/ipv6)。分布式集群无法保证消息始终到达同一后端服务器。且分布式消息代理系统会采用一种利用单点消息服务器来处理来自于来自同一用户的多种网络连接的方式来实现消息的一致性和有序性:即所有来自同一客户端不同网络连接的消息最终抵达同一消息服务器中。其具体实现方式通常通过添加路由服务器的双层节点架构,其额外的节点开销会影响实际信息交互传输效率。
3、鉴于此,我们提出了一种实时消息系统中的一致性路由建立系统及方法。
技术实现思路
1、针对现有技术的不足,本专利技术提供了一种实时消息系统中的一致性路由建立系统及方法,解决了上述
技术介绍
提到的问题。
2、为实现以上目的,本专利技术通过以下技术方案予以实现:一种实时消息系统中的一致性路由建立系统,所述系统包括:
3、连接id,所述连接id用于标识来自客户端的连接;
4、心跳消息,所述心跳消息用于保持客户端在不同的ip地址与后端消息服务器的连接状态,并且
5、负载均衡服务器,所述负载均衡服务器基于源请求的ip地址的一致性哈希;
6、消息服务器,所述消息服务器负责响应客户端传来的消息处理和转发。
7、可选的,所述连接id包括:
8、服务器集群编号,所述服务器集群编号将服务器集群从0到n进行编号,不超过255个集群(1字节);
9、服务器编号,所述服务器编号将集群中服务器从0到n进行编号。一个集群中的服务器数量不超过65535,即2字节大小;
10、服务器中运行的服务编号,所述服务器中运行的服务编号将服务器中运行的用户态服务从0到n进行编号,不超过255个服务(1字节);
11、服务器线程编号,所述服务器线程编号将服务器中运行的线程从0到n进行编号,线程数量等于服务器cpu核的数量。不超过255核(1字节)。
12、连接id系统,所述连接id系统由集群标号(1字节)、服务器编号(2字节)、服务编号(1字节)、线程编号(1字节)、预留字节(3字节)组成。
13、本专利技术还提供了一种实时消息系统中的一致性路由的建立方法,所述方法包括以下步骤:
14、步骤s1、发起连接请求;
15、步骤s2、响应连接请求,消息服务器在收到连接请求后,在其响应请求的报文头添加连接id;如连接是udp,则直接在udp报文头添加,如连接是tcp,则添加于报文头中tcp-options中(其option kind为30,sub-type为0xf,值为连接id);
16、步骤s3、客户端选择最佳网络连接;
17、步骤s4、客户端发送消息;
18、步骤s5、建立一致性路由;
19、步骤s6、客户端切换ip地址;
20、步骤s7、负载均衡服务器故障转移;
21、步骤s8、后端消息服务器故障转移。
22、可选的,所述步骤s1进一步的包括:
23、步骤s11、客户端从不同的ip地址同时向负载均衡网关发出连接请求,连接请求到达负载均衡服务器系统;
24、步骤s12、负载均衡服务器系统根据基于ip地址进行一致性哈希并将请求转发于后端消息服务器;
25、步骤s13、来自于多个ip地址的请求通过负载均衡服务器系统抵达多个不同的消息服务器系统。
26、可选的,所述步骤s3进一步的包括:
27、步骤s31、客户端根据最先返回的响应选中其连接,选择并保存其quic报文头的连接id,此为被选中的连接id;
28、步骤s32、客户端保存来自所有后端消息服务器的响应报文头中的连接id,此为备选的连接id;
29、步骤s33、通过筛选客户端选中发出消息的ip地址、后端消息服务器系统以及连接id。
30、可选的,所述步骤s4进一步的包括:
31、步骤s41、客户端从选中的连接id的ip地址向消息服务器系统发出消息;
32、步骤s42、负载均衡服务器通过基于ip地址的一致性哈希将消息发出被选中的后端消息服务器;
33、步骤s43、普通消息的报文头选择添加连接id或者不添加。如不添加连接id,可以节省8字节的额外开销,这种情况适用于窄带网络条件。
34、可选的,所述步骤s5进一步的包括:
35、步骤s51、客户端通过不同ip地址向负载均衡网关发出心跳消息,所述心跳消息的发出间隔为1-5秒;
36、步骤s52、心跳消息中报文头强制添加选中的连接id;
37、步骤s53、负载均衡服务器建立连接id与源请求的ip的映射关系,并保存在内存中;
38、步骤s54、负载均衡服务器系统解析连接id得到消息服务器系统的集群信息,和主机信息,并将心跳消息路由至目标消息服务器;通过心跳消息,能够保证负载均衡服务器始终保持连接id与源ip地址和目标消息服务器的映射。
39、步骤s55、根据心跳消息的响应时间,对所有的备选连接id进行优先级排序。
40、可选的,步骤s61、根据心跳消息的响应时间决定切换网络连接,实现切换ip地址;
41、步骤s62、在下一次发出消息时,一致性路由可以达成:
42、如消息报文头带有连接id,则负载均衡根据连接id可解析出目标消息服务器地址;
43、如消息报文头没有连接id,则负责均衡服务器系统根据源ip与连接id的映射找到响应的连接id。
44、可选的,步骤s71、如负载均衡服务器系统发生故障并从集群中被删掉,则负载均衡服务器系统失去连接id与源ip和目标消息服务器的映射;
45、步骤s72、新的负载均衡服务器上线后,对于不具备连接id报文头的普通消息退化回使用基于ip的一致性哈希;由于后端消息服务器在初次选择的时候由一致性哈希路由找出,此时仍然能将消息路由至目标消息服务器。
46、新的负载均衡服务器上线后,对于具备连接id报文头的普通消息或心跳消息,将重新建立连接id与源ip以及目标消息服务器的映射关系。
47、可选的,若后端消息服务器系统发生故障并从集群中被删掉,来自客户端的所有心跳消息将失去响应,此时客户端在3次心跳失去响应后应当切换连接id,此时应从备选的连接id中选出新的最优连接id。
48、本专利技术本文档来自技高网...
【技术保护点】
1.一种实时消息系统中的一致性路由建立系统,其特征在于:所述系统包括:
2.根据权利要求1所述的一种实时消息系统中的一致性路由建立系统,其特征在于:所述连接Id包括:
3.一种如权利要求1-2任一项所述实时消息系统中的一致性路由建立系统的路由建立方法,其特征在于:所述方法包括以下步骤:
4.根据权利要求3所述的一种实时消息系统中的一致性路由建立方法,其特征在于:所述步骤S1进一步的包括:
5.根据权利要求3所述的一种实时消息系统中的一致性路由建立方法,其特征在于:所述步骤S3进一步的包括:
6.根据权利要求3所述的一种实时消息系统中的一致性路由建立方法,其特征在于:所述步骤S4进一步的包括:
7.根据权利要求3所述的一种实时消息系统中的一致性路由建立方法,其特征在于:所述步骤S5进一步的包括:
8.根据权利要求3所述的一种实时消息系统中的一致性路由建立方法,其特征在于:
9.根据权利要求3所述的一种实时消息系统中的一致性路由建立方法,其特征在于:
10.根据权利要求3所述的
...【技术特征摘要】
1.一种实时消息系统中的一致性路由建立系统,其特征在于:所述系统包括:
2.根据权利要求1所述的一种实时消息系统中的一致性路由建立系统,其特征在于:所述连接id包括:
3.一种如权利要求1-2任一项所述实时消息系统中的一致性路由建立系统的路由建立方法,其特征在于:所述方法包括以下步骤:
4.根据权利要求3所述的一种实时消息系统中的一致性路由建立方法,其特征在于:所述步骤s1进一步的包括:
5.根据权利要求3所述的一种实时消息系统中的一致性路由建立方法,其特征在于:所述步骤...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。