一种基于UDP协议高并发HTTP请求缓存和内容推送系统及方法与流程

文档序号:25033176发布日期:2021-05-11 17:03阅读:165来源:国知局
一种基于UDP协议高并发HTTP请求缓存和内容推送系统及方法与流程

本发明涉及url访问处理技术领域,特别涉及一种基于udp协议高并发http请求缓存和内容推送系统及方法。



背景技术:

在一个使用大量客户端的应用场景下,一个常见的需求是一个服务器给海量客户端提供服务,服务器需要给所有客户端推送升级消息或者其他通知消息。在目前的网络状况下,这需要客户端保持与服务器的tcp长链接,或者客户端用udp/tcp包对服务器不停进行轮询。即使使用长连接,为了保持链接不被中间的路由器/防火墙等设备断开,客户端也需要周期性地给服务器发送心跳消息,这都需要一个高并发的后端服务来做支撑。

从协议层面来说,客户端推送技术分为采用tcp和udp推送的两大类方案:tcp推送:tcp推送可以有两种模式,一个是长连接模式,即客户端维持一个到服务器的长连接,服务器需要推送消息给客户端的时候,通过长连接发送消息,但为了保证连接不被断开,一般还需要结合周期性的心跳信号来“保活”。另外一个模式是tcp短链接轮询,即周期性的连接服务器,询问是否有自己的推送消息。在tcp推送里,可以是普通tcp连接,也可以是http/websocket连接,后者在基于web技术的应用里更加普遍。udp推送:一般就是udp轮询,客户端周期性地给服务器发送udp消息,询问是否有给自己的消息或者任务。

tcp推送的优点:在基于tcp的推送方案中,如果使用http轮询或者websocket长连接方式,有个优点就是http协议客户端容易开发使用,也可以直接通过浏览器中的javascript客户端给单页http应用做消息推送。但基于http的推送由于在tcp报文的基础上,封装http消息,所以会使用更多的额外带宽开销。tcp推送的缺点:上述方法中,使用tcp协议开发消息推送服务,在并发客户端数目很多的情况下,服务器需要维护大量的tcp链接,这会占用大量服务器资源,同时发送心跳信号时,tcp包头和来往的ack确认消息会占用额外的网络带宽。udp推送的优缺点:上述方案中基于udp的推送方案,由于服务器端不需要维护大量连接,同时协议报头开销也可以做得tcp方案更低,所以服务器端的资源占用会显著降低。udp推送的缺点:在客户端一侧,由于大部分客户端的升级、消息推送等都是基于web技术开发,udp协议不如tcp,特别是http协议来的通用和常见,特别是浏览器中的web应用基本无法使用udp协议(除了最新的浏览器通过webrtc来支持,但也过于复杂),所以基于udp的推送难于在客户端使用。



技术实现要素:

本发明提出了一种基于udp协议的高并发http请求缓存和内容推送系统包括udpcache服务器和为udpcache服务器提供url缓存更新的http源服务器,udpcache服务器通过udp协议进行通信连接有udpcache客户端,还包括通过普通的http短轮询udpcache客户端的应用客户端,其中http源服务器和udpcache服务器设立在服务侧,udpcache客户端和应用客户端设在客户侧。对于应用客户端,udpcache客户端模块是一个普通的http服务器。udpcache客户端在收到应用客户端的url请求后,会向udpcache服务器订阅该url,以告知服务器自己对该url进行关注,以后发生变化应该主动通知。当应用客户端在退出程序,或者不在对之前轮询的url关注的时候,可以调用udpcache客户端的删除接口,从而让其给udpcache服务器发送url取消关注的消息,告知不再对此url进行关注。

进一步,在服务侧,udpcache服务器一方面是一个udp推送服务器,另外一方面是一个普通的http客户端,它访问http源服务器,然后缓存到udpcache服务器本地。udpcache服务器类似squid等普通的http缓存服务,它可以配置被缓存的url的过期时间,也可以在当源站内容发生变化的时候,主动通过缓存更新请求“刷新”udpcache服务器中缓存的url。udpcache服务器在检测到被缓存的url内容发生了更新的时候,会主动通知关注了该url的udpcache客户端,从而在应用客户端下次轮询的时候,可以获取到更新后的内容。

进一步,所述udpcache服务器和udpcache客户端均可扩展为多个,所述udpcache服务器包括底层基础模块和功能模块,其中底层基础模块包括http客户端模块、udp消息处理模块和http服务器模块,所述功能模块包括控制api服务模块、url管理模块和用户管理模块。由于单台服务器能支撑的并发数优先,udpcache服务器可以采用如图7或者图8所示的集群部署方式。根据负载均衡机制的不同,如果负载均衡是会话级别的负载均衡,可以保证一个客户端持续性连接在某一个后端服务器上,那么服务器集群就可以使用图7所示的独立部署模式,服务器之间不用共享数据。如果负载均衡会对到来的请求进行包级别的均衡,那需要后端的udpcache服务器共享用户和url订阅信息。

进一步,其中url管理模块包括url转换脚本模块和url转换扩展模块。url管理模块最重要的是进行url转换,对于udpcache服务器收到的每一个订阅url的请求,它参数可能携带有客户端相关的特征,url转换模块的最用就是将收到的用户订阅url通过外部url转换脚本转换为用于请求http源服务器的请求url,url转换的主要目的是,减少请求源站的url的数目,例如用户请求的url是:

https://www.xxxxxx.com/getupdatemsg?clientid=123234&random=123324,如果clientid和random对于请求源站不重要,可以被上述url转换为:

https://www.xxxxxx.com/getupdatemsg这样所有应用客户端的请求最终其实只需要向源站请求一个url。url转换脚本也可以是任意规则,例如把域名做转换也可以。具体使用脚本来实现,目的是为了转换的灵活性。

进一步,其中http客户端模块用于请求源站url;udp消息处理模块用于udp消息的接收发送、封装解包以及分析处理,包括可靠消息的重传;http服务器模块用于实现基础的httpserver的功能,主要用于给外部提供控制api;api服务模块用于给外部提供控制api,以用于url更新、删除、在线用户查看处理;url管理模块用于udpcache客户端订阅的url的管理;用户管理模块用于管理在线用户。

进一步,其中url管理模块应用于url转换时,具体将收到的用户订阅url通过外部url转换脚本模块转换为用于请求http源服务器的请求url。

进一步,所述udpcache客户端包括http服务器模块、url管理模块和udp消息处理模块;其中http服务器模块为应用客户端提供普通的url轮询请求接口,url管理模块用于管理负责来自不同应用客户端的请求,udp消息处理模块用于udp消息的接收发送、封装解包、分析处理以及可靠消息的重传。

进一步,为尽量少占用资源,udpcache协议的设计使用二进制格式,对于频繁发送的如心跳请求,仅需要10个字节。udpcache服务器和客户端的协议交互如图5所示,应用客户端先给服务器发送登录消息。登录成功后,为了维持在线,周期性给服务器发送心跳信号。url订阅以及取消订阅的消息作为负载封装在命令消息中传递给服务器。来往的消息是如图7所示格式的udp消息,各个字段的取值说明如下:

protoflag:协议特征头

version:版本号

reliable:是否是可靠消息,接收方收到可靠消息后需要回传ack给发送端,否则发送端需要进行重传

type:消息类型,取值如表1所示:

id:客户端id,唯一标识客户端

svr_id:服务器id,唯一标识某一台udpcache服务器

sn:当前包的序列号

payloadlen:负载内容字节长度

payloaddata:负载

本发明的一种基于udp协议的高并发http请求缓存和内容推送方法,其特征在于:具体包括以下步骤:

s1:用户通过应用客户端通过http短轮询访问运行在本机127.0.0.1或者本地网络的udpcache客户端模块;

s2:udpcache客户端在收到应用客户端的url请求后,向udpcache服务器订阅关注该url,应用客户端在退出程序的时候,调用udpcache客户端删除接口,让udpcache客户端给udpcache服务器发送ur取消关注消息;

s3:udpcache服务器在接收到应用端发送的url请求后,访问http源服务器,然后将url请求缓存到udpcache服务器本地,并且udpcache服务器对缓存到udpcache服务器本地的url请求配置过期时间,或者通过http源服务器内容发生变化的时候,主动通过缓存更新请求刷新udpcache服务器中缓存的url,udpcache服务器在检测到被缓存的url内容发生了更新的时候,会主动通知关注了该url的udpcache客户端,以此在应用客户端下次轮询的时候,获取到更新后的内容。

进一步,应用客户端先给udpcache服务器发送登录消息,登录成功后,为了维持在线,周期性给udpcache服务器发送心跳信号,url关注以及取消关注的消息作为负载封装在命令消息中传递给udpcache服务器。

本发明的优点与积极效果在于:本发明的方法,通过udp协议来进行http请求缓存及内容推送的方法,该方法给客户端开发者提供了使用普通http请求进行轮询的便捷接口,同时使用udp协议与推送服务器进行交互,以保证服务器端的带宽、内存等资源的更小占用,此外还通过主动缓存更新、udp订阅推送等机制来更新缓存在客户端缓存服务中的http请求应答的结果。保证服务器端的极低的资源开销,同时客户端易于使用,保持http协议的便捷性。

附图说明

图1是本发明的系统架构图;

图2是本发明的udpcache服务器模块组成结构图;

图3是本发明的url转换图;

图4是本发明的udpcache客户端的结构图;

图5是本发明的udpcache客户端与udpcache服务器协议交互结构图;

图6是本发明的udpcache协议包格式图;

图7是本发明的服务器独立部署模式的集群部署图;

图8是本发明的服务器共享存储模式的集群部署图。

具体实施方式

以下将结合附图和具体实施例对本发明进行详细说明:

如图1-图8所示,本发明的一种基于udp协议的高并发http请求缓存和内容推送系统包括udpcache服务器和为udpcache服务器提供url缓存更新的http源服务器,udpcache服务器通过udp协议进行通信连接有udpcache客户端,还包括通过普通的http短轮询udpcache客户端的应用客户端,其中http源服务器和udpcache服务器设立在服务侧,udpcache客户端和应用客户端设在客户侧。对于应用客户端,udpcache客户端模块是一个普通的http服务器。udpcache客户端在收到应用客户端的url请求后,会向udpcache服务器订阅该url,以告知服务器自己对该url进行关注,以后发生变化应该主动通知。当应用客户端在退出程序,或者不在对之前轮询的url关注的时候,可以调用udpcache客户端的删除接口,从而让其给udpcache服务器发送url取消关注的消息,告知不再对此url进行关注。

本实施例中,在服务侧,udpcache服务器一方面是一个udp推送服务器,另外一方面是一个普通的http客户端,它访问http源服务器,然后缓存到udpcache服务器本地。udpcache服务器类似squid等普通的http缓存服务,它可以配置被缓存的url的过期时间,也可以在当源站内容发生变化的时候,主动通过缓存更新请求“刷新”udpcache服务器中缓存的url。udpcache服务器在检测到被缓存的url内容发生了更新的时候,会主动通知关注了该url的udpcache客户端,从而在应用客户端下次轮询的时候,可以获取到更新后的内容。

本实施例中,所述udpcache服务器和udpcache客户端均可扩展为多个,所述udpcache服务器包括底层基础模块和功能模块,其中底层基础模块包括http客户端模块、udp消息处理模块和http服务器模块,所述功能模块包括控制api服务模块、url管理模块和用户管理模块。由于单台服务器能支撑的并发数优先,udpcache服务器可以采用如图7或者图8所示的集群部署方式。根据负载均衡机制的不同,如果负载均衡是会话级别的负载均衡,可以保证一个客户端持续性连接在某一个后端服务器上,那么服务器集群就可以使用图8所示的独立部署模式,服务器之间不用共享数据。如果负载均衡会对到来的请求进行包级别的均衡,那需要后端的udpcache服务器共享用户和url订阅信息。

本实施例中,其中url管理模块包括url转换脚本模块和url转换扩展模块。url管理模块最重要的是进行url转换,对于udpcache服务器收到的每一个订阅url的请求,它参数可能携带有客户端相关的特征,url转换模块的最用就是将收到的用户订阅url通过外部url转换脚本转换为用于请求http源服务器的请求url,url转换的主要目的是,减少请求源站的url的数目,例如用户请求的url是:

https://www.xxxxxx.com/getupdatemsg?clientid=123234&random=123324,如果clientid和random对于请求源站不重要,可以被上述url转换为:

https://www.xxxxxx.com/getupdatemsg这样所有应用客户端的请求最终其实只需要向源站请求一个url。url转换脚本也可以是任意规则,例如把域名做转换也可以。具体使用脚本来实现,目的是为了转换的灵活性。

本实施例中,其中http客户端模块用于请求源站url;udp消息处理模块用于udp消息的接收发送、封装解包以及分析处理,包括可靠消息的重传;http服务器模块用于实现基础的httpserver的功能,主要用于给外部提供控制api;api服务模块用于给外部提供控制api,以用于url更新、删除、在线用户查看处理;url管理模块用于udpcache客户端订阅的url的管理;用户管理模块用于管理在线用户。

本实施例中,其中url管理模块应用于url转换时,具体将收到的用户订阅url通过外部url转换脚本模块转换为用于请求http源服务器的请求url。

本实施例中,所述udpcache客户端包括http服务器模块、url管理模块和udp消息处理模块;其中http服务器模块为应用客户端提供普通的url轮询请求接口,url管理模块用于管理负责来自不同应用客户端的请求,udp消息处理模块用于udp消息的接收发送、封装解包、分析处理以及可靠消息的重传。

本实施例中,为尽量少占用资源,udpcache协议的设计使用二进制格式,对于频繁发送的如心跳请求,仅需要10个字节。udpcache服务器和客户端的协议交互如图5所示,应用客户端先给服务器发送登录消息。登录成功后,为了维持在线,周期性给服务器发送心跳信号。url订阅以及取消订阅的消息作为负载封装在命令消息中传递给服务器。来往的消息是如图7所示格式的udp消息,各个字段的取值说明如下:

protoflag:协议特征头

version:版本号

reliable:是否是可靠消息,接收方收到可靠消息后需要回传ack给发送端,否则发送端需要进行重传

type:消息类型,

取值如表1所示:

id:客户端id,唯一标识客户端

svr_id:服务器id,唯一标识某一台udpcache服务器

sn:当前包的序列号

payloadlen:负载内容字节长度

payloaddata:负载

本发明的一种基于udp协议的高并发http请求缓存和内容推送方法,其特征在于:具体包括以下步骤:

s1:用户通过应用客户端通过http短轮询访问运行在本机127.0.0.1或者本地网络的udpcache客户端模块;

s2:udpcache客户端在收到应用客户端的url请求后,向udpcache服务器订阅关注该url,应用客户端在退出程序的时候,调用udpcache客户端删除接口,让udpcache客户端给udpcache服务器发送ur取消关注消息;

s3:udpcache服务器在接收到应用端发送的url请求后,访问http源服务器,然后将url请求缓存到udpcache服务器本地,并且udpcache服务器对缓存到udpcache服务器本地的url请求配置过期时间,或者通过http源服务器内容发生变化的时候,主动通过缓存更新请求刷新udpcache服务器中缓存的url,udpcache服务器在检测到被缓存的url内容发生了更新的时候,会主动通知关注了该url的udpcache客户端,以此在应用客户端下次轮询的时候,获取到更新后的内容。

本实施例中,应用客户端先给udpcache服务器发送登录消息,登录成功后,为了维持在线,周期性给udpcache服务器发送心跳信号,url关注以及取消关注的消息作为负载封装在命令消息中传递给udpcache服务器。

以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。本发明未详细描述的技术、形状、构造部分均为公知技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1