欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种实时消息通道流量的优化方法及系统独创技术27443字

一种实时消息通道流量的优化方法及系统

2021-02-07 06:55:55

一种实时消息通道流量的优化方法及系统

  技术领域

  本申请涉及通信技术领域,特别涉及一种实时消息通道流量的优化方法及系统。

  背景技术

  目前,基于分组数据服务的业务层服务(例如,即时通信服务(如,微信、QQ等)或直播服务(如,直播课程服务))在互联网上广泛使用。

  其中,基于分组数据服务的业务层服务,一般采用用户直接连接在业务服务器上的方式,与用户进行交互。但是,业务层服务在向用户下发广播消息时,上述方式会导致业务服务器需要将广播消息分别发送给各个用户,形成瞬间的流量峰值,进而出现内部网络拥塞及内部网络的带宽利用率低等问题。

  发明内容

  为解决上述技术问题,本申请实施例提供一种实时消息通道流量的优化方法及系统,以达到改善内部网络拥塞及内部网络的带宽利用率低的问题的目的,技术方案如下:

  一种实时消息通道流量的优化方法,包括:

  每个连接门前端在通过公网接收到用户的连接请求时,分别为每个所述用户分配唯一标识,并通过内网将每个所述用户的唯一标识发送给连接门后端;

  所述连接门后端将每个所述用户的唯一标识转发给业务服务器;

  所述业务服务器保存每个所述用户的唯一标识,并在接收到广播消息的下发指令时,确定能够接收所述广播消息的目标用户;

  所述业务服务器基于各个所述目标用户的唯一标识,确定与各个所述目标用户存在映射关系的目标连接门前端,并通过所述连接门后端将目标消息下发至所述目标连接门前端,所述目标消息至少包含所述广播消息及与所述目标连接门前端存在映射关系的各个目标用户的唯一标识;

  所述目标连接门前端,将所述目标消息中的广播消息下发至所述目标消息中各个唯一标识对应的目标用户。

  所述为所述用户分配唯一标识,包括:

  获取所述连接门前端所属机器的IP地址及所述连接门前端的进程ID;

  为所述用户分配进程内唯一标识;

  将所述连接门前端所属机器的IP地址、所述连接门前端的进程ID及所述进程内唯一标识,作为所述唯一标识。

  所述基于各个所述目标用户的唯一标识,确定与各个所述目标用户存在映射关系的目标连接门前端,包括:

  从各个所述目标用户的唯一标识中获取所述连接门前端所属机器的IP地址及所述连接门前端的进程ID;

  对每个所述目标用户,将所述连接门前端所属机器的IP地址及所述连接门前端的进程ID对应的连接门前端,作为与所述目标用户存在映射关系的目标连接门前端。

  所述通过所述连接门后端将目标消息下发至所述目标连接门前端,包括:

  通过UNIX DOMAIN SOKCET服务接口与所述连接门后端建立连接,在建立连接后,向所述连接门后端发送目标消息;

  所述连接门后端接收到所述目标消息后,将所述目标消息转发至所述目标连接门前端。

  在所述连接门后端与多个所述连接门前端之间仅存在一条消息通道的情况下,所述连接门后端接收到所述目标消息后,将所述目标消息转发至所述目标连接门前端,包括:

  所述连接门后端以并发发送的方式,通过所述消息通道将所述目标消息转发至所述目标连接门前端。

  在所述连接门后端与多个所述连接门前端之间存在多条消息通道的情况下,所述连接门后端接收到所述目标消息后,将所述目标消息转发至所述目标连接门前端,包括:

  所述连接门后端从多条消息通道中选取一条,作为目标消息通道;

  通过所述目标消息通道,将所述目标消息转发至所述目标连接门前端。

  一种实时消息通道流量的优化系统,包括:连接门前端服务器、连接门后端服务器及业务服务器;

  每个连接门前端服务器,用于在通过公网接收到用户的连接请求时,分别为每个所述用户分配唯一标识,并通过内网将每个所述用户的唯一标识发送给所述连接门后端服务器;

  所述连接门后端服务器,用于将每个所述用户的唯一标识转发给业务服务器;

  所述业务服务器,用于保存每个所述用户的唯一标识,并在接收到广播消息的下发指令时,确定能够接收所述广播消息的目标用户;

  及,基于各个所述目标用户的唯一标识,确定与各个所述目标用户存在映射关系的目标连接门前端服务器,并通过所述连接门后端服务器将目标消息下发至所述目标连接门前端服务器,所述目标消息至少包含所述广播消息及与所述目标连接门前端服务器存在映射关系的各个目标用户的唯一标识;

  所述目标连接门前端服务器,用于将所述目标消息中的广播消息下发至所述目标消息中各个唯一标识对应的目标用户。

  所述连接门前端服务器,具体用于:

  获取所述连接门前端服务器的IP地址及所述连接门前端服务器中连接门前端的进程ID;

  为所述用户分配进程内唯一标识;

  将所述连接门前端服务器的IP地址、所述连接门前端的进程ID及所述进程内唯一标识,作为所述唯一标识。

  所述业务服务器,具体用于:

  从各个所述目标用户的唯一标识中获取所述连接门前端服务器的IP地址及所述连接门前端的进程ID;

  对每个所述目标用户,将所述连接门前端服务器的IP地址及所述连接门前端的进程ID对应的连接门前端服务器,作为与所述目标用户存在映射关系的目标连接门前端服务器。

  所述业务服务器,具体用于:

  通过UNIX DOMAIN SOKCET服务接口与所述连接门后端服务器建立连接,在建立连接后,向所述连接门后端服务器发送目标消息;

  所述连接门后端服务器,具体用于将所述目标消息转发至所述目标连接门前端服务器。

  在所述连接门后端服务器与多个所述连接门前端服务器之间仅存在一条消息通道的情况下,所述连接门后端服务器,具体用于:

  以并发发送的方式,通过所述消息通道将所述目标消息转发至所述目标连接门前端服务器。

  在所述连接门后端服务器与多个所述连接门前端服务器之间存在多条消息通道的情况下,所述连接门后端服务器,具体用于:

  从多条消息通道中选取一条,作为目标消息通道;

  通过所述目标消息通道,将所述目标消息转发至所述目标连接门前端服务器。

  与现有技术相比,本申请的有益效果为:

  在本申请中,每个连接门前端在通过公网接收到用户的连接请求时,分别为每个所述用户分配唯一标识,保证能区分各个连接门前端对应的用户,在业务服务器保存每个用户的唯一标识的基础上,业务服务器在接收到广播消息的下发指令时,确定能够接收广播消息的目标用户,并基于各个目标用户的唯一标识,确定与各个所述目标用户存在映射关系的目标连接门前端,在目标连接门前端与多个用户存在映射关系的情况下,业务服务器针对多个用户,在内网中只需要发送一次广播消息至目标连接门前端,由目标连接门前端通过公网将广播消息发给多个用户,可以减少业务服务器在内网中发送广播消息的数量,避免形成瞬间的流量峰值,改善内部网络拥塞及内部网络的带宽利用率低的问题。

  附图说明

  为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

  图1是本申请实施例1提供的一种实时消息通道流量的优化方法的流程图;

  图2是本申请提供的连接门的一组进程的内部实现原理图;

  图3是本申请提供的一种实时消息通道流量的优化方法的原理示意图;

  图4是本申请实施例2提供的一种实时消息通道流量的优化方法的流程图;

  图5是本申请提供的一种实时消息通道流量的优化系统的逻辑结构示意图。

  具体实施方式

  下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

  为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

  参照图1,为本申请实施例1提供的一种实时消息通道流量的优化方法的流程图,如图1所示,该方法可以包括但并不局限于以下步骤:

  步骤S11、每个连接门前端在通过公网接收到用户的连接请求时,分别为每个所述用户分配唯一标识,并通过内网将每个所述用户的唯一标识发送给连接门后端。

  本实施例中,连接门前端的一侧通过公网与用户通信,连接门前端的另一侧通过内网与连接门后端通信,连接门后端与业务服务器通信,阻断用户直接与业务服务器进行连接,减少业务服务器套接字的消耗,提高业务服务器的系统整体性能。

  连接门前端分别为每个所述用户分配的唯一标识,能够表征用户的身份,且能够表征用户所对应的连接门前端。例如,连接门前端1为用户A分配唯一标识a,为用户B分配唯一标识c,连接门前端2为用户C分配唯一标识c,则唯一标识a不仅能表征用户的身份为A,且能够表征用户A是通过连接门前端1接入的;唯一标识b不仅能表征用户的身份为B,且能够表征用户B是通过连接门前端1接入的;唯一标识c不仅能表征用户的身份为C,且能够表征用户C是通过连接门前端2接入的。

  本实施例中,连接门前端和连接门后端均可以使用多进程架构,来提高系统的性能。并且,可以使用Linux内核自带的特性REUSEPORT,实现负载均衡,保证多个进程可以同时监听在一个端口上。其中,每一组连接门进程由连接门前端进程和后端进程组成,如图2所示,连接门前端进程包括两个内存队列,每个队列有一个消费者线程和一个生产者线程。连接门后端进程包括两个内存队列,每个队列有一个消费者线程。生产者线程,用于把数据放到内存队列中,等待消费者读取;消费者线程,用于从内存队列中读取数据,并发送出去。

  步骤S12、所述连接门后端将每个所述用户的唯一标识转发给业务服务器。

  步骤S13、所述业务服务器保存每个所述用户的唯一标识,并在接收到广播消息的下发指令时,确定能够接收所述广播消息的目标用户。

  本实施例中,由于分组数据服务记录了每条广播消息所对应的用户,因此,业务服务器在接收到广播消息的下发指令时,可以基于分组数据服务,确定能够接收广播消息的目标用户。

  步骤S14、业务服务器基于各个所述目标用户的唯一标识,确定与各个所述目标用户存在映射关系的目标连接门前端,并通过所述连接门后端将目标消息下发至所述目标连接门前端,所述目标消息至少包含所述广播消息及与所述目标连接门前端存在映射关系的各个目标用户的唯一标识。

  由于用户的唯一标识能够表征用户所对应的连接门前端,因此,业务服务器能够基于各个所述目标用户的唯一标识,确定与各个所述目标用户存在映射关系的目标连接门前端。在确定各个目标连接门前端之后,通过连接门后端将目标消息下发至目标连接门前端。

  本实施例中,通过所述连接门后端将目标消息下发至所述目标连接门前端,可以包括:

  S141、通过UNIX DOMAIN SOKCET服务接口与所述连接门后端建立连接,在建立连接后,向所述连接门后端发送目标消息。

  本实施例中,业务服务器通过UNIX DOMAIN SOKCET服务接口与所述连接门后端建立连接,可以保证业务服务器的改动较小,提高业务服务接入效率。

  S142、所述连接门后端接收到所述目标消息后,将所述目标消息转发至所述目标连接门前端。

  本实施例中,在所述连接门后端与多个所述连接门前端之间仅存在一条消息通道的情况下,所述连接门后端接收到所述目标消息后,将所述目标消息转发至所述目标连接门前端,可以包括:

  所述连接门后端以并发发送的方式,通过所述消息通道将所述目标消息转发至所述目标连接门前端。

  以并发发送的方式,转发目标消息,可以提高目标消息的转发效率。

  在所述连接门后端与多个所述连接门前端之间存在多条消息通道的情况下,所述连接门后端接收到所述目标消息后,将所述目标消息转发至所述目标连接门前端,可以包括:

  所述连接门后端从多条消息通道中选取一条,作为目标消息通道;

  通过所述目标消息通道,将所述目标消息转发至所述目标连接门前端。

  步骤S15、所述目标连接门前端,将所述目标消息中的广播消息下发至所述目标消息中各个唯一标识对应的目标用户。

  各个目标连接门前端接收到的目标消息中除了包含广播消息,还包含与所述目标连接门前端存在映射关系的目标用户的唯一标识,因此,目标连接门前端能够确定将广播消息下发至哪些用户,具体地,将目标消息中的广播消息下发至目标消息中各个唯一标识对应的目标用户。

  现举例对步骤S11-S15进行说明,例如,如图3所示,业务服务器在确定与用户u0、u2、u4、u6、u8、ua存在映射关系的连接门前端为连接门1时,向连接门1发送目标消息即[fd0,fd2,fd4,fd6,fd8,fda]msg,msg表示广播消息,fd0表示与连接门1存在映射关系的用户u0的唯一标识,fd2标识与连接门1存在映射关系的用户u2的唯一标识,fd4表示与连接门1存在映射关系的用户u4的唯一标识,fd6表示与连接门1存在映射关系的用户u6的唯一标识,fd8表示与连接门1存在映射关系的用户u8的唯一标识,fda表示与连接门1存在映射关系的用户ua的唯一标识;业务服务器在确定与用户u1、u3、u5、u67、u9存在映射关系的连接门前端为连接门2时,向连接门2发送目标消息即[fd1,fd3,fd5,fd7,fd9]msg,msg表示广播消息,fd1表示与连接门2存在映射关系的用户u1的唯一标识,fd3标识与连接门2存在映射关系的用户u3的唯一标识,fd5表示与连接门2存在映射关系的用户u5的唯一标识,fd7表示与连接门2存在映射关系的用户u7的唯一标识,fd9表示与连接门2存在映射关系的用户u9的唯一标识。

  连接门1基于接收到的目标消息,将广播消息下发至用户u0、u2、u4、u6、u8、ua;连接门2基于接收到的目标消息,将广播消息下发至用户u1、u3、u5、u67、u9。

  如图3所示,在11个用户都需要收到广播消息的情况下,在使用连接门后,专网内的广播消息只会被发送两次,而且不管用户量增加到多少,专网的流量始终是不变的两条消息。下面举例说明连接门能够降低广播时的流量峰值,假设有一节20000人的直播课:

  在使用HAPROXY+业务服务的解决方案的情况下,一个大小为1K的消息,在专线上产生的瞬时流量为20000*1000*8=160Mb。

  在使用连接门的情况下,专网中的流量只有1000*2*8+20000*4*8=656Kb。

  通过对比我们可以看出连接门能够降低内网的流量峰值。并且,随着用户量的增加,降低内网的流量峰值的能力会更加显著。

  在本申请中,每个连接门前端在通过公网接收到用户的连接请求时,分别为每个所述用户分配唯一标识,保证能区分各个连接门前端对应的用户,在业务服务器保存每个用户的唯一标识的基础上,业务服务器在接收到广播消息的下发指令时,确定能够接收广播消息的目标用户,并基于各个目标用户的唯一标识,确定与各个所述目标用户存在映射关系的目标连接门前端,在目标连接门前端与多个用户存在映射关系的情况下,业务服务器针对多个用户,在内网中只需要发送一次广播消息至目标连接门前端,由目标连接门前端通过公网将广播消息发给多个用户,可以减少业务服务器在内网中发送广播消息的数量,避免形成瞬间的流量峰值,改善内部网络拥塞及内部网络的带宽利用率低的问题。

  作为本申请另一可选实施例,参照图4,为本申请提供的一种实时消息通道流量的优化方法实施例2的流程图,本实施例主要是对上述实施例1描述的实时消息通道流量的优化方法的细化方案,如图4所示,该方法可以包括但并不局限于以下步骤:

  步骤S21、每个连接门前端在通过公网接收到用户的连接请求时,获取所述连接门前端所属机器的IP地址及所述连接门前端的进程ID。

  连接门前端所属机器的IP地址及连接门前端的进程ID,能唯一确定一个连接门前端。连接门前端的进程ID,可以理解为:用户所登录的连接门前端中的进程的ID。

  步骤S22、为所述用户分配进程内唯一标识。

  步骤S23、将所述连接门前端所属机器的IP地址、所述连接门前端的进程ID及所述进程内唯一标识,作为所述用户的唯一标识。

  将所述连接门前端所属机器的IP地址、所述连接门前端的进程ID及所述进程内唯一标识,作为所述用户的唯一标识,保证通过用户的唯一标识,能唯一确定用户的身份及用户对应哪一个连接门前端。

  步骤S24、通过内网将每个所述用户的唯一标识发送给连接门后端。

  步骤S21-S24为实施例1中步骤S11的一种具体实施方式

  步骤S25、所述连接门后端将每个所述用户的唯一标识转发给业务服务器。

  步骤S26、所述业务服务器保存每个所述用户的唯一标识,并在接收到广播消息的下发指令时,确定能够接收所述广播消息的目标用户。

  步骤S25-S26的详细过程可以参见实施例1中步骤S12-S13的相关介绍,在此不再赘述。

  步骤S27、所述业务服务器从各个所述目标用户的唯一标识中获取所述连接门前端所属机器的IP地址及所述连接门前端的进程ID。

  步骤S28、所述业务服务器对每个所述目标用户,将所述连接门前端所属机器的IP地址及所述连接门前端的进程ID对应的连接门前端,作为与所述目标用户存在映射关系的目标连接门前端。

  由于连接门前端所属机器的IP地址及连接门前端的进程ID,能唯一确定一个连接门前端,因此,业务服务器可以将连接门前端所属机器的IP地址及连接门前端的进程ID对应的连接门前端,作为与目标用户存在映射关系的目标连接门前端。

  步骤S29、所述业务服务器通过所述连接门后端将目标消息下发至所述目标连接门前端,所述目标消息至少包含所述广播消息及与所述目标连接门前端存在映射关系的各个目标用户的唯一标识。

  步骤S27-S29可以理解为实施例1中步骤S14的一种具体实施方式

  步骤S210、所述目标连接门前端,将所述目标消息中的广播消息下发至所述目标消息中各个唯一标识对应的目标用户。

  本实施例中,将所述连接门前端所属机器的IP地址、所述连接门前端的进程ID及所述进程内唯一标识,作为所述用户的唯一标识,在保证能基于用户的唯一标识,唯一确定用户所对应的连接门前端的基础上,简单易实现,能提高分配唯一标识的效率。

  接下来对本申请提供的一种实时消息通道流量的优化系统进行介绍,下文介绍的实时消息通道流量的优化系统与上文介绍的实时消息通道流量的优化方法可相互对应参照。

  请参见图5,实时消息通道流量的优化系统包括:连接门前端服务器100、连接门后端服务器200及业务服务器300。

  每个连接门前端服务器100,用于在通过公网接收到用户的连接请求时,分别为每个所述用户分配唯一标识,并通过内网将每个所述用户的唯一标识发送给所述连接门后端服务器200;

  所述连接门后端服务器200,用于将每个所述用户的唯一标识转发给业务服务器300;

  所述业务服务器300,用于保存每个所述用户的唯一标识,并在接收到广播消息的下发指令时,确定能够接收所述广播消息的目标用户;

  及,基于各个所述目标用户的唯一标识,确定与各个所述目标用户存在映射关系的目标连接门前端服务器,并通过所述连接门后端服务器200将目标消息下发至所述目标连接门前端服务器,所述目标消息至少包含所述广播消息及与所述目标连接门前端服务器存在映射关系的各个目标用户的唯一标识;

  所述目标连接门前端服务器,用于将所述目标消息中的广播消息下发至所述目标消息中各个唯一标识对应的目标用户。

  本实施例中,所述连接门前端服务器100,具体可以用于:

  获取所述连接门前端服务器100的IP地址及所述连接门前端服务器100中连接门前端的进程ID;

  为所述用户分配进程内唯一标识;

  将所述连接门前端服务器100的IP地址、所述连接门前端的进程ID及所述进程内唯一标识,作为所述唯一标识。

  所述业务服务器300,具体可以用于:

  从各个所述目标用户的唯一标识中获取所述连接门前端服务器100的IP地址及所述连接门前端的进程ID;

  对每个所述目标用户,将所述连接门前端服务器100的IP地址及所述连接门前端的进程ID对应的连接门前端服务器100,作为与所述目标用户存在映射关系的目标连接门前端服务器100。

  所述业务服务器300,具体可以用于:

  通过UNIX DOMAIN SOKCET服务接口与所述连接门后端服务器200建立连接,在建立连接后,向所述连接门后端服务器200发送目标消息;

  相应地,所述连接门后端服务器200,具体可以用于将所述目标消息转发至所述目标连接门前端服务器100。

  本实施例中,在所述连接门后端服务器200与多个所述连接门前端服务器100之间仅存在一条消息通道的情况下,所述连接门后端服务器200,具体可以用于:

  以并发发送的方式,通过所述消息通道将所述目标消息转发至所述目标连接门前端服务器100。

  在所述连接门后端服务器200与多个所述连接门前端服务器100之间存在多条消息通道的情况下,所述连接门后端服务器200,具体可以用于:

  从多条消息通道中选取一条,作为目标消息通道;

  通过所述目标消息通道,将所述目标消息转发至所述目标连接门前端服务器100。

  需要说明的是,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

  最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

  为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

  通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

  以上对本申请所提供的一种实时消息通道流量的优化方法及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

《一种实时消息通道流量的优化方法及系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)