CN114363640A - 数据存储方法、装置及系统 - Google Patents
数据存储方法、装置及系统 Download PDFInfo
- Publication number
- CN114363640A CN114363640A CN202210010939.0A CN202210010939A CN114363640A CN 114363640 A CN114363640 A CN 114363640A CN 202210010939 A CN202210010939 A CN 202210010939A CN 114363640 A CN114363640 A CN 114363640A
- Authority
- CN
- China
- Prior art keywords
- live broadcast
- broadcast metadata
- written
- metadata
- write
- 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
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000013500 data storage Methods 0.000 title claims abstract description 83
- 238000012545 processing Methods 0.000 claims abstract description 155
- 230000008569 process Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
Images
Classifications
-
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请提供数据存储方法、装置及系统,其中数据存储方法包括:接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识,写入请求是从至少两个处理服务器中确定出写入请求对应的目标服务器后发送;根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列;每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。如此,降低了服务器的处理压力,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
Description
技术领域
本申请涉及计算机技术领域,特别涉及数据存储方法。本申请同时涉及数据存储装置,数据存储系统,计算设备,以及计算机可读存储介质。
背景技术
随着计算机技术和网络技术的快速发展,各种直播层出不穷,在直播整体架构中需要所有的边缘服务器定期向中心服务器上报直播元数据,中心服务器将接收到的直播元数据存储至数据库中,从而最准确的把握集群中所有边缘服务器的状态,以便中心服务器能够更好的做出调度决策。
然而,在高峰期边缘服务器会向中心服务器上报数十万个直播元数据,并且随着业务的增长这个数量还在不断的增长,中心服务器每秒需要对数据库写入几万次数据,导致中心服务器的处理压力巨大,可能会导致服务器崩溃,且对数据库的性能要求较高,需要耗费大量的硬件和人力成本维护。
发明内容
有鉴于此,本申请实施例提供了数据存储方法。本申请同时涉及数据存储装置,数据存储系统,计算设备,以及计算机可读存储介质,以解决现有技术中存在的服务器处理压力大、对数据库性能要求较高等技术问题。
根据本申请实施例的第一方面,提供了一种数据存储方法,应用于目标服务器,包括:
接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识,写入请求是从至少两个处理服务器中确定出写入请求对应的目标服务器后发送;
根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列;
每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。
根据本申请实施例的第二方面,提供了一种数据存储方法,应用于网关层,包括:
接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识;
根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器;
向目标服务器发送写入请求,其中,写入请求用于指示目标服务器将待写入直播元数据写入缓冲队列、并从缓冲队列中写入数据库。
根据本申请实施例的第三方面,提供了一种数据存储装置,应用于目标服务器,包括:
第一接收模块,被配置为接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识,写入请求是从至少两个处理服务器中确定出写入请求对应的目标服务器后发送;
第一写入模块,被配置为根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列;
第二写入模块,被配置为每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。
根据本申请实施例的第四方面,提供了一种数据存储装置,应用于网关层,包括:
第二接收模块,被配置为接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识;
第一确定模块,被配置为根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器;
发送模块,被配置为向目标服务器发送写入请求,其中,写入请求用于指示目标服务器将待写入直播元数据写入缓冲队列、并从缓冲队列中写入数据库。
根据本申请实施例的第五方面,提供了一种数据存储系统,系统包括网关层、至少两个处理服务器和数据库;
网关层,被配置为接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识;根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器;向目标服务器发送写入请求;
目标服务器,被配置为接收直播元数据的写入请求;根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列;每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。
根据本申请实施例的第六方面,提供了一种计算设备,包括:
存储器和处理器;
存储器用于存储计算机可执行指令,处理器用于执行计算机可执行指令,以实现任意数据存储方法的操作步骤。
根据本申请实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现任意数据存储方法的步骤。
本申请提供的数据存储方法,目标服务器可以接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识,写入请求是从至少两个处理服务器中确定出写入请求对应的目标服务器后发送;然后,可以根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列,每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。
这种情况下,可以从至少两个处理服务器中确定出写入请求对应的目标服务器,将该写入请求发送给对应的目标服务器进行处理,目标服务器接收到该写入请求后,可以先将写入请求中携带的待写入直播元数据写入缓冲队列中,然后每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。如此,可以将大量的写入请求分配给至少两个处理服务器分散处理,降低处理服务器的处理压力,处理服务器在接收到待写入直播元数据后,并不立即将待写入直播元数据写入数据库中,而是先写入本地的缓冲队列中,将接收到的各个待写入直播元数据合并存储在缓冲队列中,然后每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,可以使得数据库的更新写入次数从每秒数万次降低到每秒几次,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
附图说明
图1是本申请一实施例提供的一种数据存储方法的流程图;
图2a是本申请一实施例提供的第一种缓冲队列的示意图;
图2b是本申请一实施例提供的第二种缓冲队列的示意图;
图2c是本申请一实施例提供的第三种缓冲队列的示意图;
图2d是本申请一实施例提供的第四种缓冲队列的示意图;
图3是本申请一实施例提供的另一种数据存储方法的流程图;
图4是本申请一实施例提供的又一种数据存储方法的流程图;
图5是本申请一实施例提供的一种数据存储装置的结构示意图;
图6是本申请一实施例提供的另一种数据存储装置的结构示意图;
图7是本申请一实施例提供的一种数据存储系统的结构示意图;
图8是本申请一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本申请一个或多个实施例涉及的名词术语进行解释。
直播流:主播直播时推送的流式音视频数据。
直播元数据:直播架构中所有边缘服务器会定时向中心服务器上报的各个直播流的心跳数据,其中包含了直播流的码率、抖动情况等。
网关(Gateway):又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连,网关既可以用于广域网互连,也可以用于局域网互连。网关是一种充当转换重任的计算机系统或设备,使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器,网关对收到的信息要重新打包,以适应目的系统的需求。本申请实施例中网关层可以接收所有读写请求并且向后面的服务器继续透传接收到的请求。
在本申请中,提供了数据存储方法,本申请同时涉及数据存储装置,数据存储系统,计算设备,以及计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例提供的一种数据存储方法的流程图,应用于目标服务器,具体包括以下步骤:
步骤102:接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识,写入请求是从至少两个处理服务器中确定出写入请求对应的目标服务器后发送。
具体的,写入请求是指向数据库写入直播元数据的请求,该写入请求可以由边缘服务器发起,经过网关层发送给对应的目标服务器进行处理。其中,边缘服务器可以是指接收主播通过主播端推送的直播流,并将该直播流推送给观众端的服务器,目标服务器可以是指至少两个处理服务器中的任一服务器,目标服务器可以处理接收到的写入请求,将写入请求携带的待写入直播元数据写入数据库。
另外,待写入直播元数据可以是指边缘服务器接收到的、某直播流的心跳数据,该心跳数据等待写入服务器的缓冲队列和数据库中,如待写入直播元数据可以包括直播流的码率、抖动情况、推流时间等。待写入直播元数据的数据标识可以用于标识待写入直播元数据对应的直播流来自哪个主播,也即来自同一主播的待写入直播元数据的数据标识相同,以保证后续针对同一主播的直播流的直播元数据的读写请求可以被分配至同一处理服务器进行处理,如待写入直播元数据的数据标识可以为主播的ID。
需要说明的是,主播端获取到直播流后,可以将直播流推送给边缘服务器,边缘服务器接收到主播端推送的直播流后,可以将该直播流推送给观众端,同时边缘服务器还可以发起写入请求,将该直播流的直播元数据(即心跳数据)上报给网关层,网关层接收到该写入请求后,可以从至少两个处理服务器中确定出由哪个处理服务器处理该写入请求,即从至少两个处理服务器中确定出写入请求对应的目标服务器,然后网关层可以将边缘服务器发起的写入请求发送给对应的目标服务器,此时目标服务器接收到直播元数据的写入请求,后续可以处理该写入请求,将对应的直播元数据写入数据库中。
实际应用中,各个处理服务器在启动时可以向网关层注册自己的IP地址,使得网关层接收到直播元数据的写入请求后,可以基于对应的目标服务器的IP地址将接收到的写入请求发送给目标服务器进行处理。
本申请实施例中,目标服务器只需处理自己对应的写入请求,并不是全部的直播元数据写入请求都由一个服务器处理,降低了服务器的处理压力。
本实施例一个可选的实施方式中,还可以通过确定指令从至少两个处理服务器中确定出直播元数据的写入请求所对应的目标服务器,也即接收直播元数据的写入请求之前,还包括:
接收目标服务器的确定指令,该确定指令用于从至少两个处理服务器中确定出直播元数据的写入请求所对应的目标服务器。
需要说明的是,网关层接收到边缘服务器发送的写入请求后,可以从至少两个处理服务器中确定出由哪个处理服务器处理该写入请求,并向确定出的目标服务器发送确定指令,以通过确定指令确定出执行该写入请求的目标服务器,并告知该目标服务器被选中处理该写入请求。
本实施例一个可选的实施方式中,该确定指令可以通过如下方法获得:
确定至少两个处理服务器的服务器个数;
将待写入直播元数据的数据标识对服务器个数进行取余处理,获得余数;
根据余数,确定目标服务器并发送确定指令。
需要说明的是,待写入直播元数据的数据标识可以用于标识待写入直播元数据对应的直播流来自哪个主播,即待写入直播元数据的数据标识可以为主播标识(如主播ID)。如此,通过对待写入直播元数据的数据标识进行取余的算法,可以将相同数据标识的写入请求分配至同一服务器进行处理,从而保证同一主播的直播流的直播元数据的写入请求可以被配置至同一服务器进行处理。
实际应用中,可以对各个处理服务器从0开始进行编号,然后使用待写入直播元数据的数据标识对服务器个数进行取余处理,得到的余数就是该写入请求对应的目标服务器的编号,然后向该目标服务器发送确定指令以告知该目标服务器被选中处理该写入请求。
示例的,共有5个处理服务器,分别为服务器0-4,假设接收到的写入请求中携带的待写入直播元数据为直播元数据1,直播元数据1的数据标识为13,使用数据标识13对服务器个数5进行取余处理,得到余数为3,此时可以确定该写入请求对应的目标服务器为服务器3。
本实施例一个可选的实施方式中,确定指令还可以通过如下方法获得:
根据预设对照表,从至少两个处理服务器中确定出待写入直播元数据的数据标识对应的服务器;
将待写入直播元数据的数据标识对应的服务器作为写入请求对应的目标服务器,并发送确定指令;
其中,预设对照表为数据标识和服务器标识之间的对应关系表,或者预设对照表为标识区域和服务器标识之间的对应关系表。
需要说明的是,预设对照表可以是预先设置的数据标识和服务器标识之间的对应关系表,网关层接收到边缘服务器发送的写入请求后,可以基于写入请求中携带的待写入直播元数据的数据标识,在该预设对照表中查找待写入直播元数据的数据标识对应的服务器标识,将查找到的服务器标识所指示的服务器作为确定出的目标服务器,然后向该目标服务器发送确定指令以告知该目标服务器被选中处理该写入请求。
另外,预设对照表还可以是标识区域和服务器标识之间的对应关系表,网关层接收到写入请求后,可以确定写入请求中携带的待写入直播元数据的数据标识所处的区域,在该预设对照表中查找该区域对应的服务器标识,将查找到的服务器标识所指示的服务器作为确定出目标服务器,然后向该目标服务器发送确定指令以告知该目标服务器被选中处理该写入请求。
本申请实施例中,通过预先设置的预设对照表,可以将相同数据标识的写入请求分配至同一服务器进行处理,从而保证同一主播的直播流的直播元数据的写入请求可以被配置至同一服务器进行处理。
另外,除了上述从至少两个处理服务器中确定出直播元数据的写入请求所对应的目标服务器后,先向目标服务器发送确定指令,以告知该目标服务器被选中处理该写入请求,然后再将写入请求发送给目标服务器,以使目标服务器对写入请求中携带的待写入直播元数据进行处理之外,还可以在从至少两个处理服务器中确定出直播元数据的写入请求所对应的目标服务器后,直接向目标服务器发送该写入请求,目标服务器接收到写入请求后可以获知自身被选中处理该写入请求,直接对该写入请求中的待写入直播元数据进行处理。或者,还可以将确定指令携带在写入请求中发送给目标服务器,也即写入请求中携带确定指令、待写入直播元数据以及待写入直播元数据的数据标识,此时目标服务器接收到该写入请求后,根据其中携带的确定指令可以获知自身被选中处理该写入请求,然后直接从接收到的写入请求中获取待写入直播元数据进行处理。
步骤104:根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列。
需要说明的是,缓冲队列是指目标服务器本地的缓冲区域,该缓冲队列中可以暂存多个直播元数据,也即可以先将接收到的各个直播元数据合并存储在缓冲队列中,后续再每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,可以使得数据库的更新写入次数从每秒数万次降低到每秒几次,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
本实施例一个可选的实施方式中,在将待写入直播元数据写入缓冲队列中时,还可以先查找缓冲队列中是否存在相应的直播元数据,也即根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列,具体实现过程可以如下:
在缓冲队列中查找数据标识对应的目标直播元数据;
若查找到目标直播元数据,则根据待写入直播元数据对目标直播元数据进行更新;
若未查找到目标直播元数据,则将待写入直播元数据写入缓冲队列的队尾。
需要说明的是,待写入直播元数据的数据标识可以表示待写入直播元数据来自哪个主播推送的直播流,因而可以在缓冲队列中查找该数据标识对应的目标直播元数据,若查找到目标直播元数据,则说明缓冲队列中存储有该主播推送的直播流对应的旧直播元数据,而写入请求中携带的待写入直播元数据则为该主播推送的直播流对应的新直播元数据,直接使用该主播推送的直播流对应的新直播元数据更新旧直播元数据即可,即可以根据待写入直播元数据对目标直播元数据进行更新,无需再存储一条新的直播元数据。
另外,若未查找到目标直播元数据,则说明缓冲队列中没有存储该主播推送的直播流对应的旧直播元数据,此时可以将待写入直播元数据写入缓冲队列的队尾,保证最新写入的待写入直播元数据始终位于缓冲队列的队尾,也即缓冲队列中靠前的待写入直播元数据为较旧的数据,靠队尾的数据为较新的数据。
示例的,图2a是本申请一实施例提供的第一种缓冲队列的示意图,如图2a所示,缓冲队列中包括5个直播元数据,直播元数据1的数据标识为主播1,直播元数据2的数据标识为主播2,直播元数据3的数据标识为主播3,直播元数据4的数据标识为主播4,直播元数据5的数据标识为主播5。假设接收到的写入请求中携带的待写入直播元数据为直播元数据6,且待写入直播元数据的数据标识为主播3,则此时可以根据直播元数据6对直播元数据3进行更新,图2a中的缓冲队列更新后如图2b提供的第二种缓冲队列的示意图所示;假设接收到的写入请求中携带的待写入直播元数据为直播元数据7,且待写入直播元数据的数据标识为主播7,则此时可以将直播元数据7写入缓冲队列的队尾,图2a中的缓冲队列更新后如图2c提供的第三种缓冲队列的示意图所示。
本申请实施例中,接收到写入请求后,并不是直接将写入请求中携带的待写入直播元数据写入缓冲队列中,而是先在缓冲队列中查找,确定缓冲队列中是否存储有相应的旧直播元数据,若有,则无需再存储一条新直播元数据,而是直接根据接收到的新直播元数据更新旧直播元数据,可以将存储在缓冲队列中相同主播的直播流对应的直播元数据聚合为一条数据,也即缓冲队列中针对一个主播的直播流始终只存储一条直播元数据,降低了需要写入数据库的直播元数据的数据量,从而降低服务器和数据库的处理压力。
本实施例一个可选的实施方式中,对缓冲队列中的目标直播元数据进行更新时,可以采用全部覆盖或者部分覆盖的方式,也即根据待写入直播元数据对目标直播元数据进行更新,具体实现过程可以如下:
将待写入直播元数据覆盖目标直播元数据;或者,
确定待写入直播元数据与目标直播元数据之间的更新数据,根据更新数据对缓冲队列中目标直播元数据进行更新。
需要说明的是,根据待写入直播元数据对目标直播元数据进行更新时,待写入直播元数据为针对该主播的直播流接收到的新直播元数据(即新的心跳数据),缓冲队列中存储的目标直播元数据则是针对该主播的直播流之前接收到的旧直播元数据(即旧的心跳数据),因而可以直接使用新直播元数据覆盖缓冲队列中的旧直播元数据,即将待写入直播元数据覆盖目标直播元数据。如此,直接采用全部覆盖的方式,提高了更新的效率。
另一种可能的实现方式中,直播元数据是直播流的心跳数据,可以包括实时码率、抖动情况、推流时间等参数,直播元数据包括的各个参数有时不会全部发生变化,因而也可以先确定新直播元数据(即待写入直播元数据)和旧直播元数据(即目标直播元数据)中的更新部分,然后仅使用新直播元数据中的更新部分覆盖旧直播元数据中相应的部分,部分更新缓冲队列中存储的目标直播元数据。如此,可以减少更新的数据量,节省处理资源。
示例的,目标直播元数据包括:实时码率X、抖动情况Y、推流时间00:10,待写入直播元数据包括:实时码率Z、抖动情况Y、推流时间00:15,比较待写入直播元数据与目标直播元数据,确定更新数据为实时码率和推流时间,因而使用待写入直播元数据包括的实时码率Z覆盖目标直播元数据包括的实时码率X,使用待写入直播元数据包括的推流时间00:15覆盖目标直播元数据包括的推流时间00:10。
本申请实施例中,根据待写入直播元数据对目标直播元数据进行更新时,可以采用全部覆盖的方式,也可以采用部分覆盖的方式,可以根据具体的应用场景和使用需求,选择合适的更新方式,更新过程灵活,适应性强。
本实施例一个可选的实施方式中,根据待写入直播元数据对目标直播元数据进行更新之后,还可以包括:
将缓冲队列中更新后的目标直播元数据移动至缓冲队列的队尾。
需要说明的是,更新后的目标直播元数据为当前时间最新的直播元数据,因而可以将更新后的目标直播元数据移动至缓冲队列的队尾,从而保证缓冲队列的队尾存储的是较新的直播元数据,而靠近队首存储的则是较旧的直播元数据,便于后续可以按照时间先后顺序,先将较旧的直播元数据写入数据库中。
沿用上例,可以将图2b中更新后的直播元数据3,即直播元数据6移动至缓冲队列的队尾,得到如图2d提供的第四种缓冲队列的示意图所示的缓冲队列。
步骤106:每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。
具体的,预设时长可以是预先设置的时间段,该预设时长可以用于表示向数据库中写入直播元数据的频率,如预设时长可以为1秒、5秒、10秒等。预设数值可以是指预先设置的数值,该预设数值可以表示每预设时长向数据库中写入的直播元数据的个数,如预设数值可以为5个、10个、50个等。
实际应用中,缓冲队列中存储的各个直播元数据,靠近队首的直播元数据是较旧的直播元数据,靠近队尾的直播元数据是较新的直播元数据,即缓冲队列包括的各个直播元数据按照更新时间从队首至队尾依次排列,因而从缓冲队列向数据库中写入直播元数据时,可以从队首开始,依次从前向后获取预设数值个直播元数据写入数据库中,从而可以保证优先将时间较为靠前的,即较旧的直播元数据写入数据库中,缓冲队列中暂存的直播元数据为时间上较为靠后的数据,即较新的数据。
沿用上例,如图2d所示,假设预设时长为1秒,预设数值为3个,即每1秒从缓冲队列中向数据库写入3个直播元数据,即第1秒从缓冲队列中获取直播元数据1、直播元数据2、直播元数据4写入数据库中,第2秒获取直播元数据5、直播元数据6(若存在新写入的直播元数据,则再获取一个,若不存在新写入的直播元数据,则获取至缓冲队列的最后一个直播元数据)写入数据库中。
本申请实施例中,缓冲队列只是暂存各个直播元数据,依旧需要将缓冲队列中暂存的直播元数据写入数据库中进行存储,因而可以每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,从而避免短时间内向数据库写入大量的直播元数据,保证数据库的稳定性,降低对数据库的性能要求。
本实施例一个可选的实施方式中,还可以根据当前负载,确定每预设时长从缓冲队列中向数据库写入的直播元数据的个数,也即每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库,包括:
在缓冲队列中包括的数据个数大于负载阈值的情况下,每预设时长从缓冲队列中获取第一预设数值个直播元数据写入数据库;
在缓冲队列中包括的数据个数不大于负载阈值的情况下,每预设时长从缓冲队列中获取第二预设数值个直播元数据写入数据库;
其中,第一预设数值大于第二预设数值。
需要说明的是,第一预设数值和第二预设数值为预先设置的数值,第一预设数值表示缓冲队列中包括的数据个数较多时,每预设时长向数据库写入的直播元数据的个数,如100个、50个等;第二预设数值表示缓冲队列中包括的数据个数较少时,每预设时长向数据库写入的直播元数据的个数,如10个、5个等。缓冲队列中包括的数据个数较多时,每次可以向数据库写入较多的直播元数据,缓冲队列中包括的数据个数较少时,每次可以向数据库写入较少的直播元数据,因而第二预设数值可以小于第一预设数值。另外,第一预设数值和第二预设数值为从缓冲队列中向数据库写入的直播元数据的个数,因而第一预设数值和第二预设数值均应该小于缓冲队列包括的数据个数。
实际应用中,负载阈值可以是预先设置的数值,也可以为根据目标服务器和数据库的当前负载计算得到,该负载阈值用于判断当前缓冲队列中包括的数据个数是否较多。
需要说明的是,在缓冲队列中包括的数据个数大于负载阈值的情况下,说明缓冲队列中暂存的直播元数据较多,此时可以每预设时长从缓冲队列中获取较多的直播元数据写入数据库,从而避免缓冲队列中存储过多的直播元数据,加大目标服务器的处理压力;在缓冲队列中包括的数据个数不大于负载阈值的情况下,说明缓冲队列中暂存的直播元数据较少,此时可以每预设时长从缓冲队列中获取较少的直播元数据写入数据库,降低了向数据库写入直播元数据的频次,减小数据库的压力,并且可以使得后续较多的读取请求可以直接从缓冲队列中获取到相应的结果,减少访问数据库的次数,降低数据库的访问压力。
本实施例一个可选的实施方式中,可以基于目标服务器和数据库的当前负载,计算得到负载阈值,也即每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库之前,还可以包括:
确定目标服务器的当前负载以及数据库的当前负载;
根据目标服务器的当前负载、数据库的当前负载以及预设系数,确定负载阈值。
需要说明的是,目标服务器的当前负载可以为目标服务器当前向缓冲队列中写入待写入直播元数据的个数,和/或其他处理任务的个数,如当前从缓冲队列中向数据库写入直播元数据的个数等,目标服务器的当前负载即为目标服务器当前需要处理的任务的个数。服务器的当前负载可以为各个目标服务器当前向数据库中写入直播元数据的总个数,和/或其他处理任务的个数,如当前从数据库中读取直播元数据的任务个数等,数据库的当前负载即为数据库当前需要处理的任务的个数。另外,预设系数可以是指预先设置的系数,为业务方预先约定的常数。
实际应用中,根据目标服务器的当前负载、数据库的当前负载以及预设系数,确定负载阈值时,可以按照如下公式(1)计算得到负载阈值:
X=n×a+m×b (1)
其中,X为计算得到的负载阈值,a为目标服务器的当前负载,b为目标服务器的当前负载,n和m为预设系数。
本申请实施例中,可以基于目标服务器和数据库的当前负载计算得到负载阈值,从而判断当前缓冲队列中包括的数据个数是否过多,进而确定从缓冲队列中向数据库中写入直播元数据的个数,也即可以基于目标服务器和数据库的当前负载,确定当前向数据库中写入直播元数据的个数,基于当前负载,动态调整向数据库中写入直播元数据的个数,避免了服务器和数据库处理压力过大,保证了服务器和数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
本实施例一个可选的实施方式中,目标服务器除了接收直播元数据的写入请求之外,还可以接收直播元数据的读取请求,并返回所需的直播元数据,也即本申请提供的数据存储方法还可以包括:
接收直播元数据的读取请求,其中,读取请求中携带待读取直播元数据的数据标识,读取请求是从至少两个处理服务器中确定出读取请求对应的目标服务器后发送;
在缓冲队列中查找待读取直播元数据的数据标识对应的反馈直播元数据;
若查找到反馈直播元数据,则从缓冲队列中获取反馈直播元数据并返回;
若未查找到反馈直播元数据,则在数据库中查找待读取直播元数据的数据标识对应的反馈直播元数据并返回。
具体的,直播元数据的读取请求是指读取某个直播元数据的请求,该读取请求可以由边缘服务器、中心服务器,或者其他需要直播元数据的服务器或客户端发起。反馈直播元数据可以是指需要查询、反馈给请求方的直播元数据。
实际应用中,网关层接收到该读取请求后,可以从至少两个处理服务器中确定出由哪个处理服务器处理该读取请求,即从至少两个处理服务器中确定出读取请求对应的目标服务器,然后网关层可以将该读取请求发送给对应的目标服务器,目标服务器即接收到直播元数据的读取请求。
需要说明的是,网关层接收到的直播元数据的写入请求后,是基于直播元数据的数据标识,为写入请求分配对应的目标服务器,该数据标识可以表示直播元数据来自哪个主播的直播流;网关层在接收到直播元数据的读取请求时,也可以基于直播元数据的数据标识,为读取请求分配对应的目标服务器,即确定去哪个服务器读取直播元数据。如此,针对某主播的直播流对应的直播元数据,由哪个处理服务器执行的写入请求,就去哪个处理服务器执行读取请求,也即某主播的直播流对应的直播元数据的读写请求可以被分配至固定的处理服务器。
具体实现时,由于目标服务器的缓冲队列中存储有最新的直播元数据,因而目标服务器可以先在本地的缓冲队列中查找待读取直播元数据的数据标识对应的反馈直播元数据,若查找到该反馈直播元数据,则从直接缓冲队列中获取反馈直播元数据并返回,无需再访问数据库;若未查找到反馈直播元数据,则在数据库中查找待读取直播元数据的数据标识对应的反馈直播元数据并返回。
本申请实施例中,目标服务器可以过滤直播元数据的读取请求,先查看本地缓冲队列中是否存在需要查询的直播元数据,若有,则可以直接从缓冲队列中获取并返回,也即在部分情况下能够不通过数据库的查询直接返回某直播流的直播元数据,降低了访问数据库的次数,降低了数据库的处理压力,极大的保证了数据库的稳定性,降低了数据库和服务器的开销。
本申请提供的数据存储方法,可以从至少两个处理服务器中确定出写入请求对应的目标服务器,将该写入请求发送给对应的目标服务器进行处理,目标服务器接收到该写入请求后,可以先将写入请求中携带的待写入直播元数据写入缓冲队列中,然后每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。如此,可以将大量的写入请求分配给至少两个处理服务器分散处理,降低处理服务器的处理压力,处理服务器在接收到待写入直播元数据后,并不立即将待写入直播元数据写入数据库中,而是先写入本地的缓冲队列中,将接收到的各个待写入直播元数据合并存储在缓冲队列中,然后每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,可以使得数据库的更新写入次数从每秒数万次降低到每秒几次,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
图3示出了根据本申请一实施例提供的另一种数据存储方法的流程图,应用于网关层,具体包括以下步骤:
步骤302:接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识。
步骤304:根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器。
需要说明的是,网关层接收到直播元数据的写入请求后,可以根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器,其中,待写入直播元数据的数据标识可以用于标识待写入直播元数据对应的直播流来自哪个主播,也即来自同一主播的待写入直播元数据的数据标识相同,以保证针对同一主播的直播流的直播元数据的读写请求可以被分配至同一处理服务器进行处理。
本实施例一个可选的实施方式中,通过对数据标识取余数的方式,确定出写入请求对应的目标服务器,也即根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器,具体实现过程可以如下:
确定至少两个处理服务器的服务器个数;
将待写入直播元数据的数据标识对服务器个数进行取余处理,获得余数;
根据余数,确定目标服务器。
需要说明的是,待写入直播元数据的数据标识可以用于标识待写入直播元数据对应的直播流来自哪个主播,即待写入直播元数据的数据标识可以为主播标识(如主播ID)。如此,通过对待写入直播元数据的数据标识进行取余的算法,可以将相同数据标识的写入请求分配至同一服务器进行处理,从而保证同一主播的直播流的直播元数据的写入请求可以被配置至同一服务器进行处理。
实际应用中,可以对各个处理服务器从0开始进行编号,然后使用待写入直播元数据的数据标识对服务器个数进行取余处理,得到的余数就是该写入请求对应的目标服务器的编号。
示例的,共有5个处理服务器,分别为服务器0-4,假设接收到的写入请求中携带的待写入直播元数据为直播元数据1,直播元数据1的数据标识为13,使用数据标识13对服务器个数5进行取余处理,得到余数为3,此时可以确定该写入请求对应的目标服务器为服务器3。
本实施例一个可选的实施方式中,还可以基于预先设置的对照表,确定写入请求对应的目标服务器,也即根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器,具体实现过程还可以如下:
根据预设对照表,从至少两个处理服务器中确定出待写入直播元数据的数据标识对应的服务器;
将待写入直播元数据的数据标识对应的服务器作为写入请求对应的目标服务器;
其中,预设对照表为数据标识和服务器标识之间的对应关系表,或者预设对照表为标识区域和服务器标识之间的对应关系表。
需要说明的是,预设对照表可以是预先设置的数据标识和服务器标识之间的对应关系表,网关层接收到写入请求后,可以基于写入请求中携带的待写入直播元数据的数据标识,在该预设对照表中查找待写入直播元数据的数据标识对应的服务器标识,将查找到的服务器标识所指示的服务器作为确定出的目标服务器。
另外,预设对照表还可以是标识区域和服务器标识之间的对应关系表,网关层接收到写入请求后,可以确定写入请求中携带的待写入直播元数据的数据标识所处的区域,在该预设对照表中查找该区域对应的服务器标识,将查找到的服务器标识所指示的服务器作为确定出目标服务器。
本申请实施例中,通过预先设置的预设对照表,可以将相同数据标识的写入请求分配至同一服务器进行处理,从而保证同一主播的直播流的直播元数据的写入请求可以被配置至同一服务器进行处理。
步骤306:向目标服务器发送写入请求,其中,写入请求用于指示目标服务器将待写入直播元数据写入缓冲队列、并从缓冲队列中写入数据库。
本申请实施例可以从至少两个处理服务器中确定出写入请求对应的目标服务器,将该写入请求发送给对应的目标服务器进行处理,目标服务器接收到该写入请求后,可以先将写入请求中携带的待写入直播元数据写入缓冲队列中,然后每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。如此,可以将大量的写入请求分配给至少两个处理服务器分散处理,降低处理服务器的处理压力,处理服务器在接收到待写入直播元数据后,并不立即将待写入直播元数据写入数据库中,而是先写入本地的缓冲队列中,将接收到的各个待写入直播元数据合并存储在缓冲队列中,然后每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,可以使得数据库的更新写入次数从每秒数万次降低到每秒几次,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
实际应用中,网关层根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器后,还可以先向目标服务器发送确定指令,以告知该目标服务器被选中处理该写入请求,然后再将写入请求发送给目标服务器,以使目标服务器对写入请求中携带的待写入直播元数据进行处理。
另外,还可以在从至少两个处理服务器中确定出直播元数据的写入请求所对应的目标服务器后,直接向目标服务器发送该写入请求,目标服务器接收到写入请求后可以获知自身被选中处理该写入请求,直接对该写入请求中的待写入直播元数据进行处理。
或者,还可以将确定指令携带在写入请求中发送给目标服务器,也即写入请求中携带确定指令、待写入直播元数据以及待写入直播元数据的数据标识,此时目标服务器接收到该写入请求后,根据其中携带的确定指令可以获知自身被选中处理该写入请求,然后直接从接收到的写入请求中获取待写入直播元数据进行处理。
本实施例一个可选的实施方式中,网关层除了可以将接收到的直播元数据的写入请求分配给对应的目标处理器进行处理之外,还可以将接收到的直播元数据的读取请求分配给对应的目标处理器进行处理,获取所需的直播元数据,也即本申请提供的数据存储方法还可以包括:
接收直播元数据的读取请求,其中,读取请求中携带待读取直播元数据的数据标识;
根据待读取直播元数据的数据标识,从至少两个处理服务器中确定出读取请求对应的目标服务器;
向目标服务器发送读取请求,其中,读取请求用于指示目标服务器从缓冲队列或者数据库中读取并返回对应的反馈直播元数据。
本申请实施例中,网关层可以将大量的读取请求分散至不同的目标服务器进行处理,降低处理服务器的处理压力,且对应的目标服务器可以过滤直播元数据的读取请求,先查看本地缓冲队列中是否存在需要查询的直播元数据,若有,则可以直接从缓冲队列中获取并返回,也即在部分情况下能够不通过数据库的查询直接返回某直播流的直播元数据,降低了访问数据库的次数,降低了数据库的处理压力,极大的保证了数据库的稳定性,降低了数据库和服务器的开销。
图4示出了本申请一实施例提供的又一种数据存储方法的流程图,如图4所示,具体包括以下步骤:
第一步:网关层接收直播元数据的读写请求,其中,读写请求包括写入请求或者读取请求,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识,读取请求中携带待读取直播元数据的数据标识。
第二步:网关层根据数据标识,从至少两个处理服务器中确定出读写请求对应的目标服务器,向目标服务器发送读写请求。
第三步:目标服务器接收直播元数据的读写请求。
第四步:若读写请求为写入请求,则目标服务器根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列,并每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。
实际应用中,可以在缓冲队列中查找数据标识对应的目标直播元数据,若查找到目标直播元数据,则根据待写入直播元数据对目标直播元数据进行更新;若未查找到目标直播元数据,则将待写入直播元数据写入缓冲队列的队尾。
第五步:若读写请求为读取请求,则目标服务器根据待读取直播元数据的数据标识,在缓冲队列中查找待读取直播元数据的数据标识对应的反馈直播元数据;若查找到反馈直播元数据,则从缓冲队列中获取反馈直播元数据并返回,若未查找到反馈直播元数据,则在数据库中查找待读取直播元数据的数据标识对应的反馈直播元数据并返回。
本申请提供的数据存储方法,可以从至少两个处理服务器中确定出写入请求对应的目标服务器,将该写入请求发送给对应的目标服务器进行处理,目标服务器接收到该写入请求后,可以先将写入请求中携带的待写入直播元数据写入缓冲队列中,然后每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。如此,可以将大量的写入请求分配给至少两个处理服务器分散处理,降低处理服务器的处理压力,处理服务器在接收到待写入直播元数据后,并不立即将待写入直播元数据写入数据库中,而是先写入本地的缓冲队列中,将接收到的各个待写入直播元数据合并存储在缓冲队列中,然后每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,可以使得数据库的更新写入次数从每秒数万次降低到每秒几次,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
另外,在部分情况下能够不通过数据库的查询直接返回某直播流的直播元数据,降低了访问数据库的次数,降低了数据库的处理压力,极大的保证了数据库的稳定性,降低了数据库和服务器的开销。
与上述方法实施例相对应,本申请还提供了数据存储装置实施例,图5示出了本申请一实施例提供的一种数据存储装置的结构示意图,应用于目标服务器,如图5所示,该装置包括:
第一接收模块502,被配置为接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识,写入请求是从至少两个处理服务器中确定出写入请求对应的目标服务器后发送;
第一写入模块504,被配置为根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列;
第二写入模块506,被配置为每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。
可选的,该装置还包括第三接收模块,被配置为:
接收所述目标服务器的确定指令,所述确定指令用于从所述至少两个处理服务器中确定出直播元数据的写入请求所对应的目标服务器。
可选的,该装置还包括第一确定指令获得模块,被配置为:
确定所述至少两个处理服务器的服务器个数;
将所述待写入直播元数据的数据标识对所述服务器个数进行取余处理,获得余数;
根据所述余数,确定所述目标服务器并发送所述确定指令。
可选的,该装置还包括第二确定指令获得模块,被配置为:
根据预设对照表,从所述至少两个处理服务器中确定出所述待写入直播元数据的数据标识对应的服务器;
将所述待写入直播元数据的数据标识对应的服务器作为所述写入请求对应的目标服务器,并发送所述确定指令;
其中,所述预设对照表为数据标识和服务器标识之间的对应关系表,或者所述预设对照表为标识区域和服务器标识之间的对应关系表。
可选地,第一写入模块504进一步被配置为:
在缓冲队列中查找数据标识对应的目标直播元数据;
若查找到目标直播元数据,则根据待写入直播元数据对目标直播元数据进行更新;
若未查找到目标直播元数据,则将待写入直播元数据写入缓冲队列的队尾。
可选地,第一写入模块504进一步被配置为:
将待写入直播元数据覆盖目标直播元数据;或者,
确定待写入直播元数据与目标直播元数据之间的更新数据,根据更新数据对缓冲队列中目标直播元数据进行更新。
可选地,第一写入模块504进一步被配置为:
将缓冲队列中更新后的目标直播元数据移动至缓冲队列的队尾。
可选地,第二写入模块506进一步被配置为:
在缓冲队列中包括的数据个数大于负载阈值的情况下,每预设时长从缓冲队列中获取第一预设数值个直播元数据写入数据库;
在缓冲队列中包括的数据个数不大于负载阈值的情况下,每预设时长从缓冲队列中获取第二预设数值个直播元数据写入数据库;
其中,第一预设数值大于第二预设数值。
可选地,第二写入模块506进一步被配置为:
确定目标服务器的当前负载以及数据库的当前负载;
根据目标服务器的当前负载、数据库的当前负载以及预设系数,确定负载阈值。
可选地,该装置还包括读取模块,被配置为:
接收直播元数据的读取请求,其中,读取请求中携带待读取直播元数据的数据标识,读取请求是从至少两个处理服务器中确定出读取请求对应的目标服务器后发送;
在缓冲队列中查找待读取直播元数据的数据标识对应的反馈直播元数据;
若查找到反馈直播元数据,则从缓冲队列中获取反馈直播元数据并返回;
若未查找到反馈直播元数据,则在数据库中查找待读取直播元数据的数据标识对应的反馈直播元数据并返回。
本申请提供的数据存储装置,可以从至少两个处理服务器中确定出写入请求对应的目标服务器,将该写入请求发送给对应的目标服务器进行处理,目标服务器接收到该写入请求后,可以先将写入请求中携带的待写入直播元数据写入缓冲队列中,然后每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。如此,可以将大量的写入请求分配给至少两个处理服务器分散处理,降低处理服务器的处理压力,处理服务器在接收到待写入直播元数据后,并不立即将待写入直播元数据写入数据库中,而是先写入本地的缓冲队列中,将接收到的各个待写入直播元数据合并存储在缓冲队列中,然后每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,可以使得数据库的更新写入次数从每秒数万次降低到每秒几次,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
上述为本实施例的一种数据存储装置的示意性方案。需要说明的是,该数据存储装置的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储装置的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
与上述方法实施例相对应,本申请还提供了数据存储装置实施例,图6示出了本申请一实施例提供的另一种数据存储装置的结构示意图,应用于网关层,如图6所示,该装置包括:
第二接收模块602,被配置为接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识;
第一确定模块604,被配置为根据数据标识,从至少两个处理服务器中确定出写入请求对应的目标服务器;
发送模块606,被配置为向目标服务器发送写入请求,其中,写入请求用于指示目标服务器将待写入直播元数据写入缓冲队列、并从缓冲队列中写入数据库。
可选地,第一确定模块604进一步被配置为:
确定至少两个处理服务器的服务器个数;
将待写入直播元数据的数据标识对服务器个数进行取余处理,获得余数;
根据余数,确定目标服务器。
可选地,第一确定模块604进一步被配置为:
根据预设对照表,从至少两个处理服务器中确定出待写入直播元数据的数据标识对应的服务器;
将待写入直播元数据的数据标识对应的服务器作为写入请求对应的目标服务器;
其中,预设对照表为数据标识和服务器标识之间的对应关系表,或者预设对照表为标识区域和服务器标识之间的对应关系表。
可选地,该装置还包括第二确定模块,被配置为:
接收直播元数据的读取请求,其中,读取请求中携带待读取直播元数据的数据标识;
根据待读取直播元数据的数据标识,从至少两个处理服务器中确定出读取请求对应的目标服务器;
向目标服务器发送读取请求,其中,读取请求用于指示目标服务器从缓冲队列或者数据库中读取并返回对应的反馈直播元数据。
本申请提供的数据存储装置,可以从至少两个处理服务器中确定出写入请求对应的目标服务器,将该写入请求发送给对应的目标服务器进行处理,目标服务器接收到该写入请求后,可以先将写入请求中携带的待写入直播元数据写入缓冲队列中,然后每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。如此,可以将大量的写入请求分配给至少两个处理服务器分散处理,降低处理服务器的处理压力,处理服务器在接收到待写入直播元数据后,并不立即将待写入直播元数据写入数据库中,而是先写入本地的缓冲队列中,将接收到的各个待写入直播元数据合并存储在缓冲队列中,然后每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,可以使得数据库的更新写入次数从每秒数万次降低到每秒几次,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
上述为本实施例的一种数据存储装置的示意性方案。需要说明的是,该数据存储装置的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储装置的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
与上述方法实施例相对应,本申请还提供了数据存储系统实施例,图7示出了本申请一实施例提供的一种数据存储系统的结构示意图,如图7所示,该系统包括:网关层702、至少两个处理服务器704和数据库706;
网关层702,被配置为接收直播元数据的写入请求,其中,写入请求中携带待写入直播元数据以及待写入直播元数据的数据标识;根据数据标识,从至少两个处理服务器704中确定出写入请求对应的目标服务器;向目标服务器发送写入请求;
目标服务器,被配置为接收直播元数据的写入请求;根据待写入直播元数据的数据标识,将待写入直播元数据写入缓冲队列;每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库706。
本申请提供的数据存储系统,可以从至少两个处理服务器中确定出写入请求对应的目标服务器,将该写入请求发送给对应的目标服务器进行处理,目标服务器接收到该写入请求后,可以先将写入请求中携带的待写入直播元数据写入缓冲队列中,然后每预设时长从缓冲队列中获取预设数值个直播元数据写入数据库。如此,可以将大量的写入请求分配给至少两个处理服务器分散处理,降低处理服务器的处理压力,处理服务器在接收到待写入直播元数据后,并不立即将待写入直播元数据写入数据库中,而是先写入本地的缓冲队列中,将接收到的各个待写入直播元数据合并存储在缓冲队列中,然后每隔预设时长向数据库写入一部分缓冲队列中的直播元数据,可以使得数据库的更新写入次数从每秒数万次降低到每秒几次,避免了短时间内向数据库写入大量的直播元数据,保证了数据库的稳定性,降低了对数据库的性能要求,从而节省了维护数据库需要耗费的硬件和人力成本。
上述为本实施例的一种数据存储系统的示意性方案。需要说明的是,该数据存储系统的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储系统的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
图8示出了根据本申请一实施例提供的一种计算设备的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。
计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备800还可以是移动式或静止式的服务器。
其中,处理器820用于执行如下计算机可执行指令,以实现任意数据存储方法的操作步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据存储方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时以用于实现任意数据存储方法的操作步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据存储方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
计算机指令包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。
Claims (19)
1.一种数据存储方法,其特征在于,应用于目标服务器,所述方法包括:
接收直播元数据的写入请求,其中,所述写入请求中携带待写入直播元数据以及所述待写入直播元数据的数据标识,所述写入请求是从至少两个处理服务器中确定出所述写入请求对应的目标服务器后发送;
根据所述待写入直播元数据的数据标识,将所述待写入直播元数据写入缓冲队列;
每预设时长从所述缓冲队列中获取预设数值个直播元数据写入数据库。
2.根据权利要求1所述的数据存储方法,其特征在于,所述接收直播元数据的写入请求之前,还包括:
接收所述目标服务器的确定指令,所述确定指令用于从所述至少两个处理服务器中确定出直播元数据的写入请求所对应的目标服务器。
3.根据权利要求2所述的数据存储方法,其特征在于,所述确定指令通过如下方法获得:
确定所述至少两个处理服务器的服务器个数;
将所述待写入直播元数据的数据标识对所述服务器个数进行取余处理,获得余数;
根据所述余数,确定所述目标服务器并发送所述确定指令。
4.根据权利要求2所述的数据存储方法,其特征在于,所述确定指令通过如下方法获得:
根据预设对照表,从所述至少两个处理服务器中确定出所述待写入直播元数据的数据标识对应的服务器;
将所述待写入直播元数据的数据标识对应的服务器作为所述写入请求对应的目标服务器,并发送所述确定指令;
其中,所述预设对照表为数据标识和服务器标识之间的对应关系表,或者所述预设对照表为标识区域和服务器标识之间的对应关系表。
5.根据权利要求1-4任一项所述的数据存储方法,其特征在于,所述根据所述待写入直播元数据的数据标识,将所述待写入直播元数据写入缓冲队列,包括:
在所述缓冲队列中查找所述数据标识对应的目标直播元数据;
若查找到所述目标直播元数据,则根据所述待写入直播元数据对所述目标直播元数据进行更新;
若未查找到所述目标直播元数据,则将所述待写入直播元数据写入所述缓冲队列的队尾。
6.根据权利要求5所述的数据存储方法,其特征在于,所述根据所述待写入直播元数据对所述目标直播元数据进行更新,包括:
将所述待写入直播元数据覆盖所述目标直播元数据;或者,
确定所述待写入直播元数据与所述目标直播元数据之间的更新数据,根据所述更新数据对所述缓冲队列中所述目标直播元数据进行更新。
7.根据权利要求5所述的数据存储方法,其特征在于,所述根据所述待写入直播元数据对所述目标直播元数据进行更新之后,还包括:
将所述缓冲队列中更新后的目标直播元数据移动至所述缓冲队列的队尾。
8.根据权利要求1-4任一项所述的数据存储方法,其特征在于,所述每预设时长从所述缓冲队列中获取预设数值个直播元数据写入数据库,包括:
在所述缓冲队列中包括的数据个数大于负载阈值的情况下,每预设时长从所述缓冲队列中获取第一预设数值个直播元数据写入数据库;
在所述缓冲队列中包括的数据个数不大于负载阈值的情况下,每预设时长从所述缓冲队列中获取第二预设数值个直播元数据写入数据库;
其中,所述第一预设数值大于所述第二预设数值。
9.根据权利要求8所述的数据存储方法,其特征在于,所述每预设时长从所述缓冲队列中获取预设数值个直播元数据写入数据库之前,还包括:
确定所述目标服务器的当前负载以及所述数据库的当前负载;
根据所述目标服务器的当前负载、所述数据库的当前负载以及预设系数,确定所述负载阈值。
10.根据权利要求1-4任一项所述的数据存储方法,其特征在于,所述方法还包括:
接收直播元数据的读取请求,其中,所述读取请求中携带待读取直播元数据的数据标识,所述读取请求是从至少两个处理服务器中确定出所述读取请求对应的目标服务器后发送;
在所述缓冲队列中查找所述待读取直播元数据的数据标识对应的反馈直播元数据;
若查找到所述反馈直播元数据,则从所述缓冲队列中获取所述反馈直播元数据并返回;
若未查找到所述反馈直播元数据,则在所述数据库中查找所述待读取直播元数据的数据标识对应的反馈直播元数据并返回。
11.一种数据存储方法,其特征在于,应用于网关层,所述方法包括:
接收直播元数据的写入请求,其中,所述写入请求中携带待写入直播元数据以及所述待写入直播元数据的数据标识;
根据所述数据标识,从至少两个处理服务器中确定出所述写入请求对应的目标服务器;
向所述目标服务器发送所述写入请求,其中,所述写入请求用于指示所述目标服务器将所述待写入直播元数据写入缓冲队列、并从缓冲队列中写入数据库。
12.根据权利要求11所述的数据存储方法,其特征在于,所述根据所述数据标识,从至少两个处理服务器中确定出所述写入请求对应的目标服务器,包括:
确定所述至少两个处理服务器的服务器个数;
将所述待写入直播元数据的数据标识对所述服务器个数进行取余处理,获得余数;
根据所述余数,确定所述目标服务器。
13.根据权利要求11所述的数据存储方法,其特征在于,所述根据所述数据标识,从至少两个处理服务器中确定出所述写入请求对应的目标服务器,包括:
根据预设对照表,从所述至少两个处理服务器中确定出所述待写入直播元数据的数据标识对应的服务器;
将所述待写入直播元数据的数据标识对应的服务器作为所述写入请求对应的目标服务器;
其中,所述预设对照表为数据标识和服务器标识之间的对应关系表,或者所述预设对照表为标识区域和服务器标识之间的对应关系表。
14.根据权利要求11-13任一项所述的数据存储方法,其特征在于,所述方法还包括:
接收直播元数据的读取请求,其中,所述读取请求中携带待读取直播元数据的数据标识;
根据所述待读取直播元数据的数据标识,从至少两个处理服务器中确定出所述读取请求对应的目标服务器;
向所述目标服务器发送所述读取请求,其中,所述读取请求用于指示所述目标服务器从所述缓冲队列或者所述数据库中读取并返回对应的反馈直播元数据。
15.一种数据存储装置,其特征在于,应用于目标服务器,所述装置包括:
第一接收模块,被配置为接收直播元数据的写入请求,其中,所述写入请求中携带待写入直播元数据以及所述待写入直播元数据的数据标识,所述写入请求是从至少两个处理服务器中确定出所述写入请求对应的目标服务器后发送;
第一写入模块,被配置为根据所述待写入直播元数据的数据标识,将所述待写入直播元数据写入缓冲队列;
第二写入模块,被配置为每预设时长从所述缓冲队列中获取预设数值个直播元数据写入数据库。
16.一种数据存储装置,其特征在于,应用于网关层,所述装置包括:
第二接收模块,被配置为接收直播元数据的写入请求,其中,所述写入请求中携带待写入直播元数据以及所述待写入直播元数据的数据标识;
第一确定模块,被配置为根据所述数据标识,从至少两个处理服务器中确定出所述写入请求对应的目标服务器;
发送模块,被配置为向所述目标服务器发送所述写入请求,其中,所述写入请求用于指示所述目标服务器将所述待写入直播元数据写入缓冲队列、并从缓冲队列中写入数据库。
17.一种数据存储系统,其特征在于,所述系统包括网关层、至少两个处理服务器和数据库;
所述网关层,被配置为接收直播元数据的写入请求,其中,所述写入请求中携带待写入直播元数据以及所述待写入直播元数据的数据标识;根据所述数据标识,从所述至少两个处理服务器中确定出所述写入请求对应的目标服务器;向所述目标服务器发送所述写入请求;
所述目标服务器,被配置为接收所述直播元数据的写入请求;根据所述待写入直播元数据的数据标识,将所述待写入直播元数据写入缓冲队列;每预设时长从所述缓冲队列中获取预设数值个直播元数据写入所述数据库。
18.一种计算设备,其特征在于,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现上述权利要求1-10或11-14任一项所述的数据存储方法的操作步骤。
19.一种计算机可读存储介质,其特征在于,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述权利要求1-10或11-14任一项所述的数据存储方法的操作步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210010939.0A CN114363640B (zh) | 2022-01-05 | 2022-01-05 | 数据存储方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210010939.0A CN114363640B (zh) | 2022-01-05 | 2022-01-05 | 数据存储方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114363640A true CN114363640A (zh) | 2022-04-15 |
CN114363640B CN114363640B (zh) | 2023-11-21 |
Family
ID=81107643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210010939.0A Active CN114363640B (zh) | 2022-01-05 | 2022-01-05 | 数据存储方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114363640B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105635278A (zh) * | 2015-12-30 | 2016-06-01 | 深圳市瑞驰信息技术有限公司 | 一种管理存储系统的元数据的方法以及元数据服务器 |
WO2016082524A1 (zh) * | 2014-11-27 | 2016-06-02 | 华为技术有限公司 | 一种进行数据存储的方法、装置及系统 |
CN105979299A (zh) * | 2016-06-24 | 2016-09-28 | 武汉斗鱼网络科技有限公司 | 基于时间轮盘和播放器心跳的活跃用户集维护系统及方法 |
CN106027548A (zh) * | 2016-06-28 | 2016-10-12 | 武汉斗鱼网络科技有限公司 | 视频直播网站基于页面心跳事件生成白名单的系统及方法 |
CN109726212A (zh) * | 2018-12-29 | 2019-05-07 | 杭州宏杉科技股份有限公司 | 数据存储系统及方法 |
WO2019232994A1 (zh) * | 2018-06-04 | 2019-12-12 | 平安科技(深圳)有限公司 | 后台写盘流控方法、装置、电子设备及存储介质 |
US10754813B1 (en) * | 2011-06-30 | 2020-08-25 | Amazon Technologies, Inc. | Methods and apparatus for block storage I/O operations in a storage gateway |
CN112732949A (zh) * | 2021-01-19 | 2021-04-30 | 广州虎牙科技有限公司 | 一种业务数据的标注方法、装置、计算机设备和存储介质 |
CN113625936A (zh) * | 2020-05-09 | 2021-11-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及设备 |
CN113672624A (zh) * | 2021-08-25 | 2021-11-19 | 中汽创智科技有限公司 | 一种数据处理方法、系统及存储介质 |
-
2022
- 2022-01-05 CN CN202210010939.0A patent/CN114363640B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10754813B1 (en) * | 2011-06-30 | 2020-08-25 | Amazon Technologies, Inc. | Methods and apparatus for block storage I/O operations in a storage gateway |
WO2016082524A1 (zh) * | 2014-11-27 | 2016-06-02 | 华为技术有限公司 | 一种进行数据存储的方法、装置及系统 |
CN105635278A (zh) * | 2015-12-30 | 2016-06-01 | 深圳市瑞驰信息技术有限公司 | 一种管理存储系统的元数据的方法以及元数据服务器 |
CN105979299A (zh) * | 2016-06-24 | 2016-09-28 | 武汉斗鱼网络科技有限公司 | 基于时间轮盘和播放器心跳的活跃用户集维护系统及方法 |
CN106027548A (zh) * | 2016-06-28 | 2016-10-12 | 武汉斗鱼网络科技有限公司 | 视频直播网站基于页面心跳事件生成白名单的系统及方法 |
WO2019232994A1 (zh) * | 2018-06-04 | 2019-12-12 | 平安科技(深圳)有限公司 | 后台写盘流控方法、装置、电子设备及存储介质 |
CN109726212A (zh) * | 2018-12-29 | 2019-05-07 | 杭州宏杉科技股份有限公司 | 数据存储系统及方法 |
CN113625936A (zh) * | 2020-05-09 | 2021-11-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及设备 |
CN112732949A (zh) * | 2021-01-19 | 2021-04-30 | 广州虎牙科技有限公司 | 一种业务数据的标注方法、装置、计算机设备和存储介质 |
CN113672624A (zh) * | 2021-08-25 | 2021-11-19 | 中汽创智科技有限公司 | 一种数据处理方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114363640B (zh) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11146502B2 (en) | Method and apparatus for allocating resource | |
CN107295110B (zh) | 计算任务的处理方法、边缘节点、业务服务器及系统 | |
CN110413673B (zh) | 数据库数据统一采集与分发方法及系统 | |
CN112486074B (zh) | 数据处理系统、方法及装置 | |
CN110837409B (zh) | 一种定时执行任务的方法和系统 | |
CN108874946B (zh) | 一种id管理方法及装置 | |
CN109951323B (zh) | 一种日志分析方法和系统 | |
CN111090268B (zh) | 基于线程划分的数据采集方法、装置及数据采集设备 | |
CN103607428A (zh) | 一种访问共享内存的方法和装置 | |
CN110048882B (zh) | 一种基于边缘计算的资源分配的方法和装置 | |
CN113434600B (zh) | 一种数据同步方法及装置 | |
CN112905618A (zh) | 数据处理方法以及装置 | |
CN114363185B (zh) | 虚拟资源处理方法以及装置 | |
WO2024212767A1 (zh) | 一种视频推送方法、装置、设备和存储介质 | |
EP4318234A1 (en) | Method and apparatus for starting secure container | |
US10659304B2 (en) | Method of allocating processes on node devices, apparatus, and storage medium | |
CN113535673B (zh) | 生成配置文件及数据处理的方法和装置 | |
TW201445989A (zh) | 分散式編解碼系統及方法 | |
CN113297229A (zh) | 路由读请求、反馈报文的方法以及各自装置、数据库 | |
CN114363640A (zh) | 数据存储方法、装置及系统 | |
CN110740138A (zh) | 数据传输方法和装置 | |
CN115454666A (zh) | 消息队列集群间的数据同步方法和装置 | |
CN114385596A (zh) | 数据处理方法及装置 | |
CN113114670A (zh) | 一种区块链网络的多协议连接方法、设备及储存介质 | |
CN109547864B (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 |