CN113727128A - 热点流量处理方法及系统 - Google Patents
热点流量处理方法及系统 Download PDFInfo
- Publication number
- CN113727128A CN113727128A CN202111011766.6A CN202111011766A CN113727128A CN 113727128 A CN113727128 A CN 113727128A CN 202111011766 A CN202111011766 A CN 202111011766A CN 113727128 A CN113727128 A CN 113727128A
- Authority
- CN
- China
- Prior art keywords
- room
- data
- live broadcast
- hot spot
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了一种热点流量处理方法,该方法包括:实时采集各个直播间的流量数据,并写入异步队列;通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息;将所述热点房间信息对应的直播数据存放至本地缓存;当接收到外部访问请求时,根据访问房间标识在所述热点房间信息中进行匹配,在匹配成功时,直接从所述本地缓存中返回对应的直播数据。本申请还公开了一种热点流量处理系统、电子装置和计算机可读存储介质。由此,能够避免热点流量访问内存数据库,达到削峰的效果,保证在流量洪峰下也能稳定持续的提供服务。
Description
技术领域
本申请涉及直播技术领域,尤其涉及一种热点流量处理方法、系统、电子装置及计算机可读存储介质。
背景技术
直播间作为直播内容及互动的载体,地位非常重要。直播场景下海量用户可能会同时访问同一个房间,这会给技术系统造成瞬间且集中的压力,这种情况被称为热点,热点会给储存造成致命冲击。
为了应对热点流量的挑战,一般会将数据存放到内存数据库中提供高性能的读写服务。但是当大量用户同时访问同一个房间时,所有访问压力会集中到内存数据库的某一个点上,集中的压力可能使内存数据库面临崩溃的风险。也就是说常规的技术系统无法应对热点挑战,在热点洪峰下会面临崩溃风险。
发明内容
本申请的主要目的在于提出一种热点流量处理方法、系统、电子装置及计算机可读存储介质,旨在解决如何降低热点流量对内存数据库造成的压力的问题。
为实现上述目的,本申请实施例提供了一种热点流量处理方法,所述方法包括:
实时采集各个直播间的流量数据,并写入异步队列;
通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息;
将所述热点房间信息对应的直播数据存放至本地缓存;及
当接收到外部访问请求时,根据访问房间标识在所述热点房间信息中进行匹配,在匹配成功时,直接从所述本地缓存中返回对应的直播数据。
可选地,所述方法还包括:
当匹配失败时,访问内存数据库得到所述访问房间标识对应的直播数据并返回。
可选地,所述方法还包括:
定时或根据数据变更消息访问所述内存数据库,以更新所述本地缓存中的所述直播数据。
可选地,所述实时采集各个直播间的流量数据包括:
通过接口埋点实时采集接口流量数据,得到各个直播间的流量数据。
可选地,所述通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息包括:
在所述异步队列中每隔预设时间段进行一次窗口滑动,得到当前窗口内的流量数据;
在窗口切换时,从所述当前窗口内的流量数据中计算出访问频率最高的N个房间,将所述N个房间的信息作为当前的热点房间信息,其中N为预设的正整数。
可选地,所述将所述热点房间信息对应的直播数据存放至本地缓存时还包括设置所述直播数据的有效期。
可选地,所述根据访问房间标识在所述热点房间信息中进行匹配还包括:
当所述访问房间标识命中所述热点房间信息时,判断所述本地缓存中所述访问房间标识对应的直播数据是否在有效期内;
若所述直播数据未过期则直接从所述本地缓存中返回所述直播数据;
若所述直播数据已过期则访问内存数据库得到所述访问房间标识对应的直播数据。
此外,为实现上述目的,本申请实施例还提供一种热点流量处理系统,所述系统包括:
采集模块,用于实时采集各个直播间的流量数据,并写入异步队列;
分割模块,用于通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息;
缓存模块,用于将所述热点房间信息对应的直播数据存放至本地缓存;
匹配模块,用于当接收到外部访问请求时,根据访问房间标识在所述热点房间信息中进行匹配,在匹配成功时,直接从所述本地缓存中返回对应的直播数据。
为实现上述目的,本申请实施例还提供一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的热点流量处理程序,所述热点流量处理程序被所述处理器执行时实现如上述的热点流量处理方法。
为实现上述目的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有热点流量处理程序,所述热点流量处理程序被处理器执行时实现如上述的热点流量处理方法。
本申请实施例提出的热点流量处理方法、系统、电子装置及计算机可读存储介质,能够通过自动探测热点,将热点数据缓存于本地内存中,避免热点流量访问内存数据库,达到削峰的效果,保证在流量洪峰下也能稳定持续的提供服务。
附图说明
图1为实现本申请各个实施例的一种应用环境架构图;
图2为本申请第一实施例提出的一种热点流量处理方法的流程图;
图3为图2中步骤S202的细化流程示意图;
图4为图2中步骤S206的细化流程示意图;
图5为本申请第二实施例提出的一种热点流量处理方法的流程图;
图6为所述第二实施例另一种形式的流程示意图;
图7为本申请第三实施例提出的一种电子装置的硬件架构示意图;
图8为本申请第四实施例提出的一种热点流量处理系统的模块示意图;
图9为本申请第五实施例提出的一种热点流量处理系统的模块示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
请参阅图1,图1为实现本申请各个实施例的一种应用环境架构图。本申请可应用于包括,但不仅限于CDN(Content Delivery Network,内容分发网络)2、客户端4、服务端6、内存数据库8的应用环境中。
其中,所述CDN 2为构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务节点,通过负载均衡、内容分发、调度等使客户端4就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。例如,所述CDN 2可以为客户端4进行直播音视频数据的传输。
所述客户端4用于向用户显示当前应用的界面并接收用户的操作,例如接收并转发用户对某个直播间的访问请求并向用户播放该直播间的音视频数据。所述客户端2可以为PC(Personal Computer,个人电脑)、手机、平板电脑、便携计算机、可穿戴设备等终端设备。
所述服务端6用于从所述CDN 2中通过接口埋点实时采集各个直播间的流量数据,通过异步队列和滑动窗口计算得到当前热点房间信息(主要是房间ID),在本地缓存所述热门房间信息对应的直播数据,并在接收到客户端4的访问请求时,根据访问房间标识(例如房间ID)优先从所述热点房间信息中进行匹配,确定直接从所述本地缓存中返回对应的直播数据或访问内存数据库8。
所述内存数据库8是一种将数据放到内存的数据库,以提供高性能的读写服务,在本申请实施例中主要用于存放各个直播间的直播数据。
值得注意的是,所述服务端6和内存数据库8可以是独立的电子装置,也可以集成在所述CDN 2中的一个或多个电子装置中,例如中心服务平台的服务器等。并且所述内存数据库8可以独立于所述服务端6存在,也可以存在于所述服务端6中。所述服务器可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
实施例一
如图2所示,为本申请第一实施例提出的一种热点流量处理方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。下面以所述服务端6作为执行主体对该方法进行说明。
该方法包括以下步骤:
S200,实时采集各个直播间的流量数据,并写入异步队列。
直播间作为直播内容及互动的载体,地位非常重要。但是,对于一个分布式计算系统来说,不可能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)这三点。以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在一致性和可用性之间做出选择。极端情况下,突发流量可能导致系统雪崩,业务损失惨重。若要最大限度的减少损失、降低影响面,需要牺牲一定的数据一致性。本实施例立足于CAP定理,以一致性换取可用性,通过自动探测热点,将热点数据缓存于内存中,避免热点流量给内存数据库造成压力,来达到削峰的效果。
在本实施例中,可以通过在CDN中进行接口埋点,实时采集接口流量数据,得到各个直播间的流量数据。具体而言,在接口埋点获得各个直播间的访问信息,经由Golang(一种静态强类型、编译型语言)Channel(通道)的通信传输和异步消费,将各个直播间的流量数据写入异步队列中。所述异步队列包含多个LFU(Least Frequently Used,最不经常使用)队列。所述流量数据的格式可以为“房间ID:访问次数”,例如“1003:8”。
S202,通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息。
具体而言,进一步参阅图3,为上述步骤S202的细化流程示意图。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤S202具体包括:
S2020,在所述异步队列中每隔预设时间段进行一次窗口滑动,得到当前窗口内的流量数据。
在所述异步队列中,每隔预设时间段(例如三秒钟)进行一次窗口滑动,每个窗口为一个LFU队列。例如,当前时刻采集到的直播间的访问信息存储在当前(Current Index)的LFU队列中,且在三秒内,基于接口埋点获得的访问信息都将更新到该当前LFU队列中。而在三秒后,向下滑动到下一个窗口,即采集到的访问信息都将更新到下一个LFU队列中。所述当前LFU队列中保存的各个直播间的访问信息即为当前窗口内的流量数据。
S2022,在窗口切换时,从所述当前窗口内的流量数据中计算出访问频率最高的N个房间,将所述N个房间的信息(主要是房间ID)作为当前的热点房间信息。
在所述预设时间段内得到所述当前窗口内的流量数据,当切换至下一个窗口时,获取所述当前窗口内得到的各个直播间的访问次数,通过优先队列结算访问频率最高的N个房间ID(top-N,N为预设的正整数),此结果即为当前的热点房间信息(ID)。
所述热点房间ID在不断的探测中会被刷新,在下一个窗口结算后旧的热点可能被淘汰,新热点会诞生,以此应对流量动态变化。
上述步骤S200-S202的过程可以由自动探测热点SDK(Software DevelopmentKit,软件开发工具包)进行处理,SDK可以很方便地被其他业务方引用,进而进行自定义扩展,并可以自由控制各个参数值。
回到图2,S204,将所述热点房间信息对应的直播数据存放至本地缓存。
当从所述当前窗口内的流量数据中得到当前的热点房间ID后,将所述热点房间ID对应的直播数据存放到本地缓存中,以备后续使用。当下一个窗口结算出新的热点房间ID后,及时刷新所述本地缓存中的直播数据。
在优选实施例中,在将所述点房间ID对应的直播数据存放至本地缓存时还可以设置所述直播数据的有效期。在所述有效期内,所述直播数据可以直接使用,否则不能使用,以保障数据一致性。
值得注意的是,所述本地缓存可以根据需要进行横向扩展。当热点流量突然发生时,本实施例能及时探测到,并进行流量削峰。当流量进一步扩大时,本地内存中的热点缓存区块可以同步横向扩展,消化流量压力。从本质上讲,本实施例基于一次智能探测、数据拷贝、数据及时刷新,将集中的热点流量压力转化为可以通过横向扩展本地内存的方式解决,变集中为分散,在架构上通过横向扩展解决。
S206,当接收到外部访问请求时,根据访问房间标识在所述热点房间信息中进行匹配,在匹配成功时,直接从所述本地缓存中返回对应的直播数据。
当接收到外部(客户端用户)对某个直播间的访问请求时,需要读取该直播间的直播数据。所述访问请求中包含访问房间标识(例如房间ID)。在本实施例中,根据所述访问房间ID优先从所述本地缓存匹配,也就是将所述访问房间ID与所述热点房间ID进行匹配,如果命中则直接从所述本地缓存中返回数据,不再访问内存数据库。
具体而言,进一步参阅图4,为上述步骤S206的细化流程示意图。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤S206具体包括:
S2060,当所述访问房间标识命中所述热点房间信息时,直接从所述本地缓存中返回所述访问房间标识对应的直播数据。
当所述访问房间ID命中所述热点房间ID时,表示所述本地缓存中存放有所述访问房间的直播数据,因此可以直接使用,从所述本地缓存中返回所述访问房间ID对应的直播数据给用户,不需要再访问内存数据库。
S2062,当所述访问房间标识未命中所述热点房间信息时,访问内存数据库得到所述访问房间I标识对应的直播数据。
当所述访问房间ID未命中所述热点房间ID时,表示所述本地缓存中没有所述访问房间的直播数据,因此需要进一步访问所述内存数据库才能读取所述访问房间ID对应的直播数据,然后返回给用户。
在优选实施例中,当所述访问房间ID命中所述热点房间ID时,还需要进一步判断所述本地缓存中所述访问房间ID对应的直播数据是否在有效期内。若所述直播数据未过期,则直接从所述本地缓存中返回所述直播数据。若所述直播数据已过期,则依然需要访问所述内存数据库得到所述访问房间ID对应的直播数据。
可以理解,所述滑动窗口对应的预设时间段、所述正整数N、所述有效期等参数均可根据具体应用场景进行适应性配置,以确保流量拦截的效果。
按照上述方案,当热点发生时,在一个滑动窗口(时间段)内,热点流量对内存数据库造成的访问变化为常数,不管流量洪峰多么猛烈,对内存数据库造成的压力都是常数,这样便解决了热点挑战。
本实施例提出的热点流量处理方法,立足于在大规模热点流量时能稳定持续的提供服务,通过自动探测热点,将热点流量拦截,削弱热点流量对内存数据库造成的压力,实现流量削峰。这样使得内存数据库压力均衡平缓,解决瘫痪的风险。通过本方法,主播、平台、用户三方均可受益:在房间热度非常高的时候,仍然能稳定为海量用户服务;平台因此能更加稳定,业务上对热点房间的推广也没有顾忌;保障用户体验,能尽情地体验到热门房间的服务。
实施例二
如图5所示,为本申请第二实施例提出的一种热点流量处理方法的流程图。在第二实施例中,所述热点流量处理方法在上述第一实施例的基础上,还包括步骤S308。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。
该方法包括以下步骤:
S300,实时采集各个直播间的流量数据,并写入异步队列。
在本实施例中,可以通过在CDN中进行接口埋点,实时采集接口流量数据,得到各个直播间的流量数据。具体而言,在接口埋点获得各个直播间的访问信息,经由GolangChannel的通信传输和异步消费,将各个直播间的流量数据写入异步队列中。所述异步队列包含多个LFU队列。所述流量数据的格式可以为“房间ID:访问次数”,例如“1003:8”。
S302,通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息。
在所述异步队列中,每隔预设时间段(例如三秒钟)进行一次窗口滑动,每个窗口为一个LFU队列。例如,当前时刻采集到的直播间的访问信息存储在当前(Current Index)的LFU队列中,且在三秒内,基于接口埋点获得的访问信息都将更新到该当前LFU队列中。而在三秒后,向下滑动到下一个窗口,即采集到的访问信息都将更新到下一个LFU队列中。所述当前LFU队列中保存的各个直播间的访问信息即为当前窗口内的流量数据。
在所述预设时间段内得到所述当前窗口内的流量数据,当切换至下一个窗口时,获取所述当前窗口内得到的各个直播间的访问次数,通过优先队列结算访问频率最高的N个房间ID(top-N,N为预设的正整数),此结果即为当前的热点房间信息(ID)。
所述热点房间ID在不断的探测中会被刷新,在下一个窗口结算后旧的热点可能被淘汰,新热点会诞生,以此应对流量动态变化。
上述步骤S300-S302的过程可以由自动探测热点SDK进行处理,SDK可以很方便地被其他业务方引用,进而进行自定义扩展,并可以自由控制各个参数值。
S304,将所述热点房间信息对应的直播数据存放至本地缓存。
当从所述当前窗口内的流量数据中得到当前的热点房间ID后,将所述热点房间ID对应的直播数据存放到本地缓存中,以备后续使用。当下一个窗口结算出新的热点房间ID后,及时刷新所述本地缓存中的直播数据。
在优选实施例中,在将所述点房间ID对应的直播数据存放至本地缓存时还可以设置所述直播数据的有效期。在所述有效期内,所述直播数据可以直接使用,否则不能使用,以保障数据一致性。
值得注意的是,所述本地缓存可以根据需要进行横向扩展。当热点流量突然发生时,本实施例能及时探测到,并进行流量削峰。当流量进一步扩大时,本地内存中的热点缓存区块可以同步横向扩展,消化流量压力。从本质上讲,本实施例基于一次智能探测、数据拷贝、数据及时刷新,将集中的热点流量压力转化为可以通过横向扩展本地内存的方式解决,变集中为分散,在架构上通过横向扩展解决。
S306,当接收到外部访问请求时,根据访问房间标识在所述热点房间信息中进行匹配,在匹配成功时,直接从所述本地缓存中返回对应的直播数据。
当接收到外部(客户端用户)对某个直播间的访问请求时,需要读取该直播间的直播数据。所述访问请求中包含访问房间标识(例如房间ID)。在本实施例中,根据所述访问房间ID优先从所述本地缓存匹配,也就是将所述访问房间ID与所述热点房间ID进行匹配,如果命中则直接从所述本地缓存中返回数据,不再访问内存数据库。
具体而言,当所述访问房间ID命中所述热点房间ID时,表示所述本地缓存中存放有所述访问房间的直播数据,因此可以直接使用,从所述本地缓存中返回所述访问房间ID对应的直播数据给用户,不需要再访问内存数据库。
当所述访问房间ID未命中所述热点房间ID时,表示所述本地缓存中没有所述访问房间的直播数据,因此需要进一步访问所述内存数据库才能读取所述访问房间ID对应的直播数据,然后返回给用户。
在优选实施例中,当所述访问房间ID命中所述热点房间ID时,还需要进一步判断所述本地缓存中所述访问房间ID对应的直播数据是否在有效期内。若所述直播数据未过期,则直接从所述本地缓存中返回所述直播数据。若所述直播数据已过期,则依然需要访问所述内存数据库得到所述访问房间ID对应的直播数据。
可以理解,所述滑动窗口对应的预设时间段、所述正整数N、所述有效期等参数均可根据具体应用场景进行适应性配置,以确保流量拦截的效果。
按照上述方案,当热点发生时,在一个滑动窗口(时间段)内,热点流量对内存数据库造成的访问变化为常数,不管流量洪峰多么猛烈,对内存数据库造成的压力都是常数,这样便解决了热点挑战。
S308,定时或根据数据变更消息访问所述内存数据库,以更新所述本地缓存中的所述直播数据。
当热点房间的直播数据缓存到本地时,可能出现数据一致性问题。本实施例设计了一种保证数据最终一致的方案,可以根据配置,定时访问内存数据库,将所述直播数据的最新版本写入本地缓存保证一致性。或者,也可以通过消费数据变更消息,当被缓存在本地的直播数据发生变更后,立即触发一次数据刷新。
如图6所示,为本实施例另一种形式的流程示意图。图6中的具体流程步骤参阅上述第一实施例和第二实施例中的详细说明,在此不再赘述。
本实施例提出的热点流量处理方法,可以立足于在大规模热点流量时能稳定持续的提供服务,通过自动探测热点,将热点流量拦截,削弱热点流量对内存数据库造成的压力,实现流量削峰。这样使得内存数据库压力均衡平缓,解决瘫痪的风险。同时辅以及时最终一致性的策略,刷新缓存数据,及时避开数据一致性问题。
实施例三
如图7所示,为本申请第三实施例提出一种电子装置20的硬件架构示意图。本实施例中,所述电子装置20可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图7仅示出了具有组件21-23的电子装置20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。在本实施例中,所述电子装置20可以是所述服务端6。
所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装置20的内部存储单元,例如该电子装置20的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置20的外部存储设备,例如该电子装置20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置20的操作系统和各类应用软件,例如热点流量处理系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置20的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述热点流量处理系统60等。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置20与其他电子设备之间建立通信连接。
实施例四
如图8所示,为本申请第四实施例提出一种热点流量处理系统60的模块示意图。所述热点流量处理系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
在本实施例中,所述热点流量处理系统60包括:
采集模块600,用于实时采集各个直播间的流量数据,并写入异步队列。
在本实施例中,可以通过在CDN中进行接口埋点,实时采集接口流量数据,得到各个直播间的流量数据。具体而言,在接口埋点获得各个直播间的访问信息,经由GolangChannel的通信传输和异步消费,将各个直播间的流量数据写入异步队列中。所述异步队列包含多个LFU队列。所述流量数据的格式可以为“房间ID:访问次数”,例如“1003:8”。
分割模块602,用于通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息。
在所述异步队列中,每隔预设时间段(例如三秒钟)进行一次窗口滑动,每个窗口为一个LFU队列。例如,当前时刻采集到的直播间的访问信息存储在当前(Current Index)的LFU队列中,且在三秒内,基于接口埋点获得的访问信息都将更新到该当前LFU队列中。而在三秒后,向下滑动到下一个窗口,即采集到的访问信息都将更新到下一个LFU队列中。所述当前LFU队列中保存的各个直播间的访问信息即为当前窗口内的流量数据。
在所述预设时间段内得到所述当前窗口内的流量数据,当切换至下一个窗口时,获取所述当前窗口内得到的各个直播间的访问次数,通过优先队列结算访问频率最高的N个房间ID(top-N,N为预设的正整数),此结果即为当前的热点房间信息(ID)。
所述热点房间ID在不断的探测中会被刷新,在下一个窗口结算后旧的热点可能被淘汰,新热点会诞生,以此应对流量动态变化。
缓存模块604,用于将所述热点房间信息对应的直播数据存放至本地缓存。
当从所述当前窗口内的流量数据中得到当前的热点房间ID后,将所述热点房间ID对应的直播数据存放到本地缓存中,以备后续使用。当下一个窗口结算出新的热点房间ID后,及时刷新所述本地缓存中的直播数据。
在优选实施例中,在将所述点房间ID对应的直播数据存放至本地缓存时还可以设置所述直播数据的有效期。在所述有效期内,所述直播数据可以直接使用,否则不能使用,以保障数据一致性。
值得注意的是,所述本地缓存可以根据需要进行横向扩展。当热点流量突然发生时,本实施例能及时探测到,并进行流量削峰。当流量进一步扩大时,本地内存中的热点缓存区块可以同步横向扩展,消化流量压力。从本质上讲,本实施例基于一次智能探测、数据拷贝、数据及时刷新,将集中的热点流量压力转化为可以通过横向扩展本地内存的方式解决,变集中为分散,在架构上通过横向扩展解决。
匹配模块606,用于当接收到外部访问请求时,根据访问房间标识在所述热点房间信息中进行匹配,在匹配成功时,直接从所述本地缓存中返回对应的直播数据。
当接收到外部(客户端用户)对某个直播间的访问请求时,需要读取该直播间的直播数据。所述访问请求中包含访问房间标识(例如房间ID)。在本实施例中,根据所述访问房间ID优先从所述本地缓存匹配,也就是将所述访问房间ID与所述热点房间ID进行匹配,如果命中则直接从所述本地缓存中返回数据,不再访问内存数据库。
具体而言,当所述访问房间ID命中所述热点房间ID时,表示所述本地缓存中存放有所述访问房间的直播数据,因此可以直接使用,从所述本地缓存中返回所述访问房间ID对应的直播数据给用户,不需要再访问内存数据库。
当所述访问房间ID未命中所述热点房间ID时,表示所述本地缓存中没有所述访问房间的直播数据,因此需要进一步访问所述内存数据库才能读取所述访问房间ID对应的直播数据,然后返回给用户。
在优选实施例中,当所述访问房间ID命中所述热点房间ID时,还需要进一步判断所述本地缓存中所述访问房间ID对应的直播数据是否在有效期内。若所述直播数据未过期,则直接从所述本地缓存中返回所述直播数据。若所述直播数据已过期,则依然需要访问所述内存数据库得到所述访问房间ID对应的直播数据。
可以理解,所述滑动窗口对应的预设时间段、所述正整数N、所述有效期等参数均可根据具体应用场景进行适应性配置,以确保流量拦截的效果。
本实施例提出的热点流量处理系统,可以立足于在大规模热点流量时能稳定持续的提供服务,通过自动探测热点,将热点流量拦截,削弱热点流量对内存数据库造成的压力,实现流量削峰。这样使得内存数据库压力均衡平缓,解决瘫痪的风险。通过本实施例,主播、平台、用户三方均可受益:在房间热度非常高的时候,仍然能稳定为海量用户服务;平台因此能更加稳定,业务上对热点房间的推广也没有顾忌;保障用户体验,能尽情地体验到热门房间的服务。
实施例五
如图9所示,为本申请第五实施例提出一种热点流量处理系统60的模块示意图。在本实施例中,所述热点流量处理系统60除了包括第四实施例中的所述采集模块600、分割模块602、缓存模块604、匹配模块606之外,还包括更新模块608。
所述更新模块608,用于定时或根据数据变更消息访问所述内存数据库,以更新所述本地缓存中的所述直播数据。
当热点房间的直播数据缓存到本地时,可能出现数据一致性问题。本实施例设计了一种保证数据最终一致的方案,可以根据配置,定时访问内存数据库,将所述直播数据的最新版本写入本地缓存保证一致性。或者,也可以通过消费数据变更消息,当被缓存在本地的直播数据发生变更后,立即触发一次数据刷新。
本实施例提出的热点流量处理系统,可以立足于在大规模热点流量时能稳定持续的提供服务,通过自动探测热点,将热点流量拦截,削弱热点流量对内存数据库造成的压力,实现流量削峰。这样使得内存数据库压力均衡平缓,解决瘫痪的风险。同时辅以及时最终一致性的策略,刷新缓存数据,及时避开数据一致性问题。
实施例六
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有热点流量处理程序,所述热点流量处理程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的热点流量处理方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。
Claims (10)
1.一种热点流量处理方法,其特征在于,所述方法包括:
实时采集各个直播间的流量数据,并写入异步队列;
通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息;
将所述热点房间信息对应的直播数据存放至本地缓存;及
当接收到外部访问请求时,根据访问房间标识在所述热点房间信息中进行匹配,在匹配成功时,直接从所述本地缓存中返回对应的直播数据。
2.根据权利要求1所述的热点流量处理方法,其特征在于,所述方法还包括:
当匹配失败时,访问内存数据库得到所述访问房间标识对应的直播数据并返回。
3.根据权利要求2所述的热点流量处理方法,其特征在于,所述方法还包括:
定时或根据数据变更消息访问所述内存数据库,以更新所述本地缓存中的所述直播数据。
4.根据权利要求1至3任一项所述的热点流量处理方法,其特征在于,所述实时采集各个直播间的流量数据包括:
通过接口埋点实时采集接口流量数据,得到各个直播间的流量数据。
5.根据权利要求1至4任一项所述的热点流量处理方法,其特征在于,所述通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息包括:
在所述异步队列中每隔预设时间段进行一次窗口滑动,得到当前窗口内的流量数据;
在窗口切换时,从所述当前窗口内的流量数据中计算出访问频率最高的N个房间,将所述N个房间的信息作为当前的热点房间信息,其中N为预设的正整数。
6.根据权利要求1至5任一项所述的热点流量处理方法,其特征在于,所述将所述热点房间信息对应的直播数据存放至本地缓存时还包括设置所述直播数据的有效期。
7.根据权利要求6所述的热点流量处理方法,其特征在于,所述根据访问房间标识在所述热点房间信息中进行匹配还包括:
当所述访问房间标识命中所述热点房间信息时,判断所述本地缓存中所述访问房间标识对应的直播数据是否在有效期内;
若所述直播数据未过期则直接从所述本地缓存中返回所述直播数据;
若所述直播数据已过期则访问内存数据库得到所述访问房间标识对应的直播数据。
8.一种热点流量处理系统,其特征在于,所述系统包括:
采集模块,用于实时采集各个直播间的流量数据,并写入异步队列;
分割模块,用于通过滑动窗口对所述异步队列中的流量数据进行分割,并从当前窗口内的流量数据中根据访问频率得到当前热点房间信息;
缓存模块,用于将所述热点房间信息对应的直播数据存放至本地缓存;
匹配模块,用于当接收到外部访问请求时,根据访问房间标识在所述热点房间信息中进行匹配,在匹配成功时,直接从所述本地缓存中返回对应的直播数据。
9.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的热点流量处理程序,所述热点流量处理程序被所述处理器执行时实现如权利要求1至7中任一项所述的热点流量处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有热点流量处理程序,所述热点流量处理程序被处理器执行时实现如权利要求1至7中任一项所述的热点流量处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111011766.6A CN113727128B (zh) | 2021-08-31 | 2021-08-31 | 热点流量处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111011766.6A CN113727128B (zh) | 2021-08-31 | 2021-08-31 | 热点流量处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113727128A true CN113727128A (zh) | 2021-11-30 |
CN113727128B CN113727128B (zh) | 2023-07-07 |
Family
ID=78679629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111011766.6A Active CN113727128B (zh) | 2021-08-31 | 2021-08-31 | 热点流量处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113727128B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468395A (zh) * | 2014-10-20 | 2015-03-25 | 广州华多网络科技有限公司 | 直播间的频道访问方法和系统 |
CN109597915A (zh) * | 2018-09-18 | 2019-04-09 | 北京微播视界科技有限公司 | 访问请求处理方法和装置 |
CN111131856A (zh) * | 2019-12-31 | 2020-05-08 | 北京奇艺世纪科技有限公司 | 一种缓存过期时间调整方法、装置、电子设备及存储介质 |
CN111414516A (zh) * | 2020-03-17 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种直播间消息处理方法、装置、电子设备及存储介质 |
CN111857597A (zh) * | 2020-07-24 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | 一种热点数据缓存方法、系统及相关装置 |
CN112076464A (zh) * | 2020-09-04 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 一种数据请求处理方法、装置、计算机设备及存储介质 |
-
2021
- 2021-08-31 CN CN202111011766.6A patent/CN113727128B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468395A (zh) * | 2014-10-20 | 2015-03-25 | 广州华多网络科技有限公司 | 直播间的频道访问方法和系统 |
CN109597915A (zh) * | 2018-09-18 | 2019-04-09 | 北京微播视界科技有限公司 | 访问请求处理方法和装置 |
CN111131856A (zh) * | 2019-12-31 | 2020-05-08 | 北京奇艺世纪科技有限公司 | 一种缓存过期时间调整方法、装置、电子设备及存储介质 |
CN111414516A (zh) * | 2020-03-17 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种直播间消息处理方法、装置、电子设备及存储介质 |
CN111857597A (zh) * | 2020-07-24 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | 一种热点数据缓存方法、系统及相关装置 |
CN112076464A (zh) * | 2020-09-04 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 一种数据请求处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113727128B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684358B (zh) | 数据查询的方法和装置 | |
CN109947668B (zh) | 存储数据的方法和装置 | |
CN108848039B (zh) | 服务器、消息分配的方法及存储介质 | |
CN105827706B (zh) | 消息推送装置及方法 | |
US8108377B2 (en) | Predictive resource identification and phased delivery of structured documents | |
US10489476B2 (en) | Methods and devices for preloading webpages | |
CN102656570B (zh) | 用于缓存的方法和服务器 | |
CN107547548B (zh) | 数据处理方法及系统 | |
US20180329921A1 (en) | Method and apparatus for storing time series data | |
BRPI0921941B1 (pt) | método de fornecer informação personalizada a um usuário de uma estação móvel, nó de rede para uso em uma rede de comunicações e meio de armazenamento legível por computador | |
CN102780603B (zh) | 网站流量控制方法及装置 | |
CN107197359B (zh) | 视频文件缓存方法及装置 | |
CN107092628B (zh) | 时间序列数据的处理方法和装置 | |
US20170153909A1 (en) | Methods and Devices for Acquiring Data Using Virtual Machine and Host Machine | |
CN108347459A (zh) | 一种云端数据快速存储方法及装置 | |
CN114827145A (zh) | 服务器集群系统、元数据的访问方法及装置 | |
CN111930305A (zh) | 数据的存储方法和装置、存储介质、电子装置 | |
CN112417350A (zh) | 数据存储调整方法、装置及计算机设备 | |
CN107437036B (zh) | 基于角色的访问控制方法、装置及系统 | |
CN109101439B (zh) | 一种报文处理的方法及装置 | |
CN113727128B (zh) | 热点流量处理方法及系统 | |
WO2015096791A1 (en) | Method and system for releasing media content | |
CN114048059A (zh) | 接口的超时时间调整方法、装置、计算机设备及存储介质 | |
CN111061744B (zh) | 图数据的更新方法、装置、计算机设备及存储介质 | |
CN112491939A (zh) | 多媒体资源调度方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |