一种在分布式环境下高效的IM消息时序性保障机制实现方法与流程

文档序号:29039105发布日期:2022-02-25 20:04阅读:195来源:国知局
一种在分布式环境下高效的IM消息时序性保障机制实现方法与流程
一种在分布式环境下高效的im消息时序性保障机制实现方法
所属技术领域
1.本专利涉及基于分布式服务环境下高效的的im消息时序性保障机制实现方式,属于互联网管理技术领域。


背景技术:

2.im技术是我们生活中,通过线上进行交流沟通的重要技术手段,它的展现形式丰富多样,可以基于文本、表情、图片、视频、声音等多种形式,可以说极大的丰富了我们的生活,降低了我们沟通成本,增加了沟通多样性、便利性。
3.但是一套优秀的聊天系统应该具有以下特点,第一并发处理能力强,即具有海量消息处理能力;第二要低延迟,即响应迅速,发送方发送的消息,接收放要及时能收取消息;第三消息准确性高,即消息不会丢失,发送方发送的消息,在接受方一定能展示出来,不能出现两端消息不一致的情况;第四顺序性保障,即消息是有序的,消息在接受方所展现的顺序即为在发送方所发送顺序,顺序不能错乱;第五是丰富性,消息的形式不能太单一,要支持多样的聊天内容,给用户带来更丰富的聊天体验。
4.在分布式环境里,尤其是微服务架构设计,往往为了提高服务器执行效率,同一个会话消息会被打到不同的im业务服务器上做消息处理,根据不同服务器性能、配置及网络环境的不同,这就难以保障消息的顺序性,即先到的消息不一定优先被处理。


技术实现要素:

5.本专利则发明一种处理机制提供im消息在分布式环境里确保顺序执行且能尽可能高效。
6.为达到上述目的,本发明将整个服务器模块划分为im业务模块与长链接模块,长链接用于维护与端的链接和消息转发,即用户与长链接模块建立连接,将消息从客户端发出,消息到达长链接服务进行转发,最张将消息转发至im业务模块。
7.由于im模块均采用分布式方式部署,消息到达长链接模块,经过负载均衡可以将请求转发到任意im业务服务器。
8.im业务服务器接收到请求,会根据会话唯一id进行hash计算,这样,相同的会话id的hash值一定是一样的,根据hash值的不同,将值与分布式服务的机器进行对应,然后将不同的会话消息转发到同一台服务器上进行处理。
9.在im业务服务器内部,保障同一个会话的顺序性,然后将消息发至长链接服务,由长链接服务将消息推送到用户端。
附图说明
10.图1:服务器架构示意图。
11.图2:im业务服务模块结构示意图
具体实施方式
12.下面结合说明书附图,对本发明对实例中的技术细节进行清楚、完整地描述。
13.im消息在服务器中处理、扭转与计算的步骤如下:
14.1)客户端向长链接服务发起长链接请求,长链接验证客户端,允许客户端连接请求,连接保持;
15.2)客户端发送im消息,消息到达长链接服务,长连接服务识别此消息为im消息,将此消息通过slb转发到任意一台im业务服务器上;
16.3)im业务服务器解析im消息,通过会话唯一id进行hash计算得到一个十进制数m,hash算法不限,最终得到一个稳定的十进制数据即可;
17.4)从consul或其它服务发现机制,获取当前im业务服务器数量n,利用会话id得到的稳定十进制数m与im业务服务器数量n进行取模计算,得到值o即为im业务服务器编号,即o=m%n;
18.5)判读当台机器是否为编号为o的im业务服务器,如果是则由当前服务器处理,否则直接转发到编号为o的im业务服务器处理,并在请求中附上特定参数,标识此请求是转发过来的,当接收到此请求的服务器看到此请求是转发过来的,则不再进行再次计算,直接由本服务器处理,避免浪费性能;
19.im消息到达对应的业务处理服务器之后,此时在此单台服务器节点上可以汇集多个会话的消息,因为多个会话可以经过hash计算,可以路由到此服务器节点,为提高此服务器单节点的多会话并行处理能力,我们会根据服务器性能和业务需求,在业务节点上初始化x个槽位(slot),同一个会话会交由同一个slot处理,slot越多,并行处理能力越强。
20.slot类似于一个队列,单个slot可以处理不同的会话,只要此会话落在此slot上即可,但是同一个slot中,消息的处理是串行的,不同的slot可以并行处理。
21.单个im业务服务进行的逻辑处理步骤如下:
22.1)项目启动,初始化x个slot,根据机器配置和业务需求的不同,x的值是可配置的,初始化x个slot即表明单个节点上有x个会话的并行处理能力。
23.2)每个slot初始化一个长度为y的队列,用于缓存处理完毕,等推送的消息,每个slot交由不同的线程或协程等独立单元处理,不能因为一个slot的阻塞造成其它slot阻塞的情况。
24.3)消息到达业务服务器,会进行一些通用逻辑处理,如消息内容的合法性校验等,前期处理失败的消息直接返回发送方;
25.4)然后根据会话唯一id进行hash求值得到的稳定十进制值m与初始化的slot数x进行取模,得到最终处理此会话的slot序号p,即p=m%x。
26.5)消息匹配到最终的slot后,进行消息处理队列,将交由worker(队列任务处理器)进行下一步逻辑处理;
27.6)worker取到任务后,会将队列阻塞,此时对消息进行落地存储,生成自增消息号msgid,注意msgid是自增的,即先到的消息msgid一定比后到达的msgid要小。
28.7)worker将消息处理之后,会将消息发送到长链接服务模块,长链接模块将封装好的消息推送到客户端,此时消息处理结束。
29.以上是本发明的实施方式,但本发明的实施并不受上述内容的限制,其它的任何
形式违背本发明的精神实质与原理所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。


技术特征:
1.一种在分布式环境下高效的im消息时序性保障机制实现方法,包括:-分布式服务器环境,用以建立用户会话关系,存储用户及会话消息、处理聊天逻辑;-客户端会话窗口,用于用户间聊天交互,展示聊天内容,用户及会话信息等;-长链接通道,提供客户端与服务器的连接方式,负责客户端与服务器之间的消息传送。2.一种在分布式环境下高效的im消息时序性保障机制,如权利要求1中所述,是基于分布式的环境,对单点服务部署设计无此特性。3.一种在分布式环境下高效的im消息时序性保障机制,其特征是在于im消息的时序性,在分布式环境下,消息在服务器上先到将被优先处理。

技术总结
本发明公开了一种基于分布式环境下高效的IM消息时序性保障机制,包括服务器部署及架构方式、消息路由方案,消息在单体IM业务服务器上的核心处理逻辑、计算方式。本发明通过介绍IM服务架构与设计思路,保障了高并发场景下IM消息时序性的同时,也大幅度提高单台服务器效能。效能。效能。


技术研发人员:薛鹏 于红建 易德
受保护的技术使用者:北京同城必应科技有限公司
技术研发日:2021.11.17
技术公布日:2022/2/24
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1