具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在本申请中,提供了一种数据读写访问系统及方法、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例提供的一种数据读写访问系统的结构示意图,具体包括:
客户端102和中间缓冲层104,所述中间缓冲层配置在服务器106内存中,所述中间缓冲层104设置有N个缓冲区,N为大于等于3的正整数;
所述客户端102,被配置为根据用户操作指令生成数据操作请求,将所述数据操作请求发送至中间缓冲层104;
所述中间缓冲层104,被配置为在所述数据操作请求为数据写入请求的情况下,将待写入数据写入所述中间缓冲层104的第一缓冲区,并将所述第一缓冲区写入的待写入数据依次添加至第二缓冲区至第N缓冲区;在所述数据操作请求为数据读取请求的情况下,通过所述第二缓冲区至第N缓冲区中之一反馈与所述数据读取请求对应的目标数据。
具体的,所述系统中包括多个客户端102,本申请中所述的客户端102是指多个客户端102中任意一个;所述中间缓冲层104是指在服务器106的内存中所指定的一块存储区域,用于与客户端102进行数据交互,参见图2,所述中间缓冲层中设置了N个缓冲区,其中N为大于等于3的正整数,即中间缓冲层102中至少设置了3个缓冲区,且第一缓冲区201至第N缓冲区20N顺次连接,第一缓冲区为排列位置为第一的缓冲区,第二缓冲区为排列位置为第二的缓冲区,以此类推,第N缓冲区为排列位置为第N的缓冲区,此外所述中间缓冲层中存储有常用数据,如热点话题、日历等。第一缓冲区201可以接收用户输入的待写入数据,并传输给第二缓冲区202,在由第二缓冲区202将待写入数据传输给第3缓冲区203,以此类推,直至第N缓冲区20N将待写入数据发送给数据库;而第二缓冲区202至第N缓冲区20N均可以将目标数据反馈给客户端。
需要说明的是,缓冲区的排列可以是从上至下、从下至上,也可以是从左往右、从右往左,本申请对此不做限定;所述数据操作请求是指客户端102生成的用于与中间缓冲层104进行数据交互的请求。
实际应用中,用户可以通过客户端102执行一些操作,如浏览网页、写日志等,客户端102响应于用户的操作从而生成数据操作请求,并将生成的数据操作请求直接发送给服务器106中的中间缓冲层104。如此,将数据操作请求直接发送至中间缓冲层104,可以实现客户端102与中间缓冲层104的数据交互,一定程度上提高了数据读取速度。
例如,用户通过手机浏览器访问某个网站,当用户打开该网站时,手机(客户端)即响应用户点击该网站的操作生成对应于该网站的数据操作请求,并将这个数据操作请求发送给对应的服务器的中间缓冲层。
具体的,所述数据操作请求的类型包括数据写入请求和数据读取请求;所述数据写入请求是指客户端102向中间缓冲层104传输并存储数据的请求;所述数据读取请求是指客户端102向中间缓冲层104获取数据的请求;所述待写入数据是指用户想要保存在服务器的数据,如对于社会热点问题发表评价、观看视频时发送的弹幕等;所述目标数据是指根据用户需求所需要的一些数据,如用户浏览网页时渲染该网页所需的数据。
实际应用中,在中间缓冲层104接收到客户端102发送的数据操作请求的基础上,首先要判断所述数据操作请求的意图是写入数据还是获取数据,即判断所述数据操作请求的类型。当判断结果为数据写入请求时,中间缓冲层104需要获取所述数据写入请求中的待写入数据,将所述待写入数据写入至第一缓冲区,由第一缓冲区将所述待写入数据发送给第二缓冲区,第二缓冲区接收并保存待写入数据,之后第二缓冲区再将所述待写入数据发送给第三缓冲区,以此类推,直至第N缓冲区接收待写入数据并保存,需要说明的是,每个缓冲区的数据是累加的,接收并保存待写入数据时并不会删除之前保存的数据;当判断结果为数据读取请求时,中间缓冲层104通过第二缓冲区、第三缓冲区、……、第N缓冲区中的任意一个缓冲区将与所述数据读取请求对应的目标数据发送给客户端102。
例如,中间缓冲层104接收到客户端102发送的一个网页数据操作请求,中间缓冲层104需要判断该网页数据操作请求是网页数据写入请求还是网页数据读取请求。当用户在网页发布美食内容时,即此时的网页数据操作请求是网页数据写入请求,所述待写入数据即美食内容对应的数据,此时将美食内容对应的数据写入第一缓冲区,并依次添加至第二缓冲区、第三缓冲区、……第N缓冲区。当用户在网页上访问养生内容时,即此时的网页数据操作请求是网页数据读取请求,所述中间缓冲层查找到与养生内容相关的数据时,即目标数据,可以通过第二缓冲区至第N缓冲区中之一将与美食内容相关的数据发送至客户端。
本申请通过在服务器内存中设计中间缓冲层,且所述中间缓冲层设置了多个缓冲区,不仅实现了客户端与中间缓冲层进行数据读写交互,而且多个缓冲区的设置提高了数据的快速精确读写。
本实施例一个可选的实施方式中,所述中间缓冲层104,还被配置为通过选举机制从所述中间缓冲层104的N个缓冲区中选举出一个写缓冲区和N-1个读缓冲区,其中,所述第一缓冲区被标志为写缓冲区,所述第二缓冲区至第N缓冲区被标志为读缓冲区。
具体的,所述选举机制可以是gossip选举机制,也可以是zookeeper选举机制,本申请对此不作限定;所述写缓冲区是指用于写入数据的缓冲区,在本申请中,所述写缓冲区为第一缓冲区;所述读缓冲区是指用于反馈客户端数据的缓冲区,所述读缓冲区的数量可以根据数据访问的需求量进行增加,由于一般情况下数据读取量要比数据写入量大得多,因此,在中间缓冲层中设置了多个读缓冲区,其中第二缓冲区至第N缓冲区均为读缓冲区。
实际应用中,在通过中间缓冲层104与客户端102进行数据交互前,首先需要建立中间缓冲层104中的读缓冲区和写缓冲区,也即将所有缓冲区的进行分类。由于数据写入相对于数据读取来说数量少,在中间缓冲层104中选出一个写缓冲区,其他缓冲区为读缓冲区,并且将第一缓冲区标志为写缓冲区,将第二缓冲区至第N缓冲区标志为读缓冲区。
例如,将中间缓冲层104中有5个缓冲区,通过zookeeper选举机制从所述5个缓冲区中选出1个写缓冲区和4个读缓冲区,其中,写缓冲区为第一缓冲区,4个读缓冲区分别为第二缓冲区、第三缓冲区、第四缓冲区以及第五缓冲区。
本申请中,通过在中间缓冲层中设置一个写缓冲区和多个读缓冲区,可以在数据读取量较大时,有效地保证数据读写的速度,同时将写缓冲区设置为第一缓冲区,有利于接收到待写入数据后,将所述待写入数据添加至各个读缓冲区。
本实施例一个可选的实施方式中,所述中间缓冲层104,还被配置为按照预设周期检测N个缓冲区的连接状态,其中所述连接状态包括在线状态与掉线状态,若第i缓冲区处于掉线状态,将所述第i缓冲区移除,其中i为小于等于N的正整数。
具体的,所述预设周期是指预先设定好的对缓冲区进行检测的周期时长,所述预设周期可以是1秒,也可以是10秒,可以根据需求进行调整;所述连接状态是指所述缓冲区是否处于正常工作状态;所述在线状态是指所述缓冲区处于正常工作时的状态;所述掉线状态是指所述缓冲区处于异常或者未与相邻的两个缓冲层连接的状态。
在实际应用中,中间缓冲层104中设立有检测机制,可以通过gossip对所有的缓冲区按照预设周期进行检测,一旦在监测出有处于掉线状态的缓冲区,即第i缓冲区,需要将掉线的第i缓冲区进行移除,以免影响中间缓冲层104的正常工作。
例如,中间缓冲层104中有三个缓冲区,其中,第二缓冲区处于掉线状态,则将第二缓冲区进行移除,使第一缓冲区跳过第二缓冲区与第三缓冲区进行连接,在接收到待写入数据时,才能保证将待写入数据传输给第三缓冲区,避免了将待写入数据传输给第二缓冲区后,由于第二缓冲区掉线而无法将待写入数据传输给第三缓冲区。
本实施例一个可选的实施方式中,所述中间缓冲层104,还被配置为在i=1的情况下,将第二缓冲区调整为第一缓冲区,将第三缓冲区调整为第二缓冲区,直至将第N缓冲区调整为第N-1缓冲区,其中,调整后的所述第一缓冲区被标志为写缓冲区,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区,在2≤i<N的情况下,将第i+1缓冲区调整为第i缓冲区,直至将第N缓冲区调整为第N-1缓冲区,其中,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区。
具体的,在检测出所述第i缓冲区处于掉线状态时,需要对缓冲区进行调整,可以分为三种情况:当i=1时,即第一缓冲区处于掉线状态,此时需要调整其他所有的缓冲区的编号,即将第二缓冲区调整为第一缓冲区、将第三缓冲区调整为第二缓冲区、……将第N缓冲区调整为第N-1缓冲区,需要说明的是,为了保证第一缓冲区为写缓冲区,其他的缓冲区为读缓冲区,需要将调整后的所述第一缓冲区被标志为写缓冲区,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区;当2≤i<N时,此时只需要调整第i+1缓冲区至第N缓冲区的编号,即将第i+1缓冲区调整为第i缓冲区、……将第N缓冲区调整为第N-1缓冲区,同时还要保证第二缓冲区至第N-1缓冲区均为读缓冲区;当i=N时,即最后一个缓冲区处于掉线状态,此时无需调整缓冲区的编号。
例如,中间缓冲层104中有三个缓冲区,当第一缓冲区处于掉线状态时,将第二缓冲区调整为第一缓冲区,并将调整后的第一缓冲区,即原第二缓冲区标志为写缓冲区;将第三缓冲区调整为第二缓冲区,并将调整后的第二缓冲区,即原第三缓冲区标志为读缓冲区。当第二缓冲区处于掉线状态时,无需调整第一缓冲区,但需要将第三缓冲区调整为第二缓冲区,并将调整后的第二缓冲区,即原第三缓冲区标志为读缓冲区。当第三缓冲区处于掉线状态时,对第一缓冲区和第二缓冲区都不需要调整。
本申请中,在中间缓冲层104中存在缓冲区处于掉线状态的情况下,对缓冲区的编号进行调整,并适应地调整读缓冲区和写缓冲区,一定程度上保证了中间缓冲层的正常运行。
本实施例一个可选的实施方式中,所述中间缓冲层104,还被配置为在所述第i缓冲区重新连接后处于在线状态的情况下,将所述第i缓冲区调整为第N缓冲区与所述第N-1缓冲区连接。
需要说明的是,所述第i缓冲区是指上述处于掉线状态的原始的第i缓冲区,并非是调整后的第i缓冲区。
实际应用中,在所述第i缓冲区处于掉线状态的基础上,若所述第i缓冲区重新连接成功并处于在线状态时,需要将第i缓冲区重新加入至缓冲区的队伍中,可以将第i缓冲区降入至缓冲区的队尾,即将第i缓冲区调整为第N缓冲区,并与第N-1缓冲区相连。此外,调整后的所述第N缓冲区被标志为读缓冲区。
例如,中间缓冲层104中有五个缓冲区,其中原第三缓冲区处于掉线状态,当原第三缓冲区重新处于在线状态之后,将原第三缓冲区调整为第五缓冲区,与第四缓冲区进行连接,并将调整后的第五缓冲区标志为读缓冲区。
本申请中,将掉线后又重新处于在线状态的缓冲区投入正常使用,并调整为第N缓冲区,不仅避免了对在先线的缓冲区的调整,而且还提高了缓冲区的利用率,从而一定程度上提高了中间缓冲层的数据读写速度。
参见图3,本实施例一个可选的实施方式中,所述系统还包括:
数据库302,所述数据库配置在配置有中间缓冲层104的服务器106中;
所述中间缓冲层104,还被配置为通过所述第N缓冲区将所述待写入数据发送至数据库302;
所述数据库302,被配置为接收并存储所述待写入数据。
具体的,所述数据库302是指专门用于存储数据并包含所有数据的存储区。在所述数据操作请求为数据写入请求的情况下,中间缓冲层104中的第一缓冲区至第N缓冲区都添加了待写入数据后,为了保证数据库302中数据的完整性和全面性,需要通过第N缓冲层将待写入数据发送给数据库302。在此基础上,数据库302接收并保存待写入数据。
例如,用户通过应用程序上传了一个视频片段,在中间缓冲层104中,第一缓冲区首先写入了该视频片段对应的数据,并将该视频片段对应的数据依次添加至第二缓冲区至第N缓冲区,之后由第N缓冲区将该视频片段对应的数据发送给数据库,数据库也将该视频片段对应的数据进行添加。
本申请中,通过第N缓冲层将待写入数据发送给数据库,由数据库进行保存,保证了数据库中数据的完整性和全面性。
本实施例一个可选的实施方式中,所述中间缓冲层104,还被配置为在所述数据操作请求为数据读取请求的情况下,若所述第二缓冲区至第N缓冲区无所述数据读取请求对应的目标数据,则将所述数据操作请求发送至数据库302;
所述数据库302,还被配置为根据接收到的数据操作请求查找对应的目标数据,将所述目标数据发送至客户端102;
所述客户端102,还被配置为根据接收到的目标数据进行展示,并将所述目标数据发送至中间缓冲层104。
实际应用中,中间缓冲层104中可以存储用户写入的数据和一些常用数据,但其存储的数据没有数据库302的完整、齐全。因此,经常存在中间缓冲层104接收到数据读取请求却无法反馈对应的目标数据的现象,即所述第二缓冲区至第N缓冲区无所述数据读取请求对应的目标数据。此时,中间缓冲层104会将所述数据操作请求,即数据读取请求发送至数据库302,由数据库302响应所述数据操作请求,并将对应的目标数据返回给客户端102。需要注意的是,客户端102在接收目标数据之后,不仅需要根据目标数据给用户进行展示,还需要将目标数据写入中间缓冲层104中,即将所述目标数据发送至中间缓冲层104。
例如,中间缓冲层104中存储由体育类数据和文学类数据,在接收到一个化妆类数据读取请求的形况下,由于中间缓冲层104中没有存储化妆类的数据,也即第二缓冲区至第N缓冲区中没有存储化妆类的数据,此时中间缓冲层104将化妆类数据读取请求发送给数据库302。数据库302接收到化妆类数据读取请求后查找到对应的化妆类数据,并将化妆类数据返回给客户端102。客户端102将接收到的化妆类数据进行可视化处理后,呈现方便客户观看的内容,同时客户端102将化妆类数据发送给中间缓冲层104,以便于中间缓冲层104存储。
本申请中,在中间缓冲层104中不存在与数据读取请求对应的目标数据的情况下,将所述数据读取请求发送至数据库302,由数据库302进行目标数据反馈,保证了客户端102对数据获取的需求,也提高了用户的体验性。同时,客户端102在接收到目标数据之后并转发给中间缓冲层104,有利于不断丰富中间缓冲层104的数据,提高了该客户端再次获取所述目标数据或者其他客户端获取所述目标数据时的读取速度。
本实施例一个可选的实施方式中,所述中间缓冲层104,还被配置为从所述数据读取请求中获取目标数据的信息标识,根据所述目标数据的信息标识在所述第二缓冲区至第N缓冲区中查找对应的目标数据,通过所述第二缓冲区至第N缓冲区中之一将所述目标数据反馈至客户端102;
所述客户端102,还被配置为接收所述目标数据并展示。
具体的,所述目标数据的信息标识可以是所述目标数据的关键词,也可以是所述目标数据对应的网址,本申请对此不做限定。
实际应用中,在确定所述数据操作请求为数据读取请求的情况下,需要对所述数据读取请求进行解析,从所述数据读取请求获取到目标数据的标识信息,在此基础上,中间缓冲层104根据目标数据的标识信息在第二缓冲区至第N缓冲区中进行查找,在查找到目标数据的情况下,根据第二缓冲区至第N缓冲区中各缓冲区的数据读取量,选择数据读取量较少的缓冲区进行反馈目标数据。
例如,对所述数据操作请求进行解析后,获取到目标数据的关键词,如天文学,则根据天文学这个关键词在所述第二缓冲区至第N缓冲区中查找关于天文学的数据,由于第二缓冲区处于空闲状态,可以通过第二缓冲区将关于天文学的数据反馈给客户端。
本申请中,通过目标数据的信息标识查找对应的目标数据,一定程度上提高了数据查找速度,从而减少了客户端接收到目标数据的时间以及用户等待的时间,提高了用户体验。
本申请提供的数据读取访问系统,包括客户端和中间缓冲层,所述中间缓冲层配置在服务器内存中,所述中间缓冲层设置有N个缓冲区,N为大于等于3的正整数;首先客户端根据用户操作指令生成数据操作请求,发送至中间缓冲层,中间缓冲层判断所述数据操作请求的类型是数据写入请求还是数据读取请求。若为数据写入请求,则将待写入数据写入中间缓冲层的第一缓冲区,并将写入的数据依次添加至第二缓冲区至第N缓冲区。若为数据操作请求,则通过第二缓冲区至第N缓冲区其中之一来反馈与数据读取请求相对应的目标数据。通过设置中间缓冲层,以及在中间缓冲层中划分多个缓冲区,可以存储常用数据,实现了在数据读写量较大时,提高了客户端与中间缓冲层进行数据写入或数据读取的速度和精准度,一定程度上降低了服务器的宽带压力。
图4示出了根据本申请一实施例提供的另一种数据读写访问系统的结构示意图,具体包括:
客户端402和服务器集群404,其中所述服务器集群中的多个服务器之一为中间缓冲层406,所述中间缓冲层406设置有N个缓冲区,N为大于等于3的正整数;
所述客户端402,被配置为根据用户操作指令生成数据操作请求,将所述数据操作请求发送至中间缓冲层;
所述中间缓冲层406,被配置为在所述数据操作请求为数据写入请求的情况下,将待写入数据写入所述中间缓冲层406的第一缓冲区,并将所述第一缓冲区写入的待写入数据依次添加至第二缓冲区至第N缓冲区;在所述数据操作请求为数据读取请求的情况下,通过所述第二缓冲区至第N缓冲区中之一反馈与所述数据读取请求对应的目标数据。
实际应用中,对于一些数据读写访问请求数量较大的情况,显然在服务器内存中设置中间缓冲层已不能满足客户端的需求。因此,本实施例中将一个独立的服务器设置为中间缓冲层配置。
具体的,所述系统中包括多个客户端402,本申请中所述的客户端402是指多个客户端402中任意一个;所述服务器集群404,即所述服务器集群404中包括多个服务器,其中所述多个服务器中之一为中间缓冲层406,其他的服务器用于业务处理,如服务器408和服务器410;所述中间缓冲层406中设置有N个缓冲区,参见图2,从第一缓冲区至第N缓冲区顺次连接,其中,N为大于等于3的正整数。
本申请中,客户端402响应于用户的操作生成数据操作请求,并将生成的数据操作请求直接发送给中间缓冲层406,由客户端402与中间缓冲层406直接连接,一定程度上提高了数据读取速度。
中间缓冲层406对接收到的数据操作请求进行判断,其中所述数据操作请求的类型包括数据写入请求和数据读取请求:当所述数据操作请求为数据写入请求时,获取待写入数据,并将待写入数据写入中间缓冲层406的第一缓冲区,再由第一缓冲区将所述待写入数据发送给第二缓冲区至第N缓冲区,第二缓冲区至第N缓冲区接收并保存待写入数据,其中,第二缓冲区至第N缓冲区的数据可以累加,添加新的数据并不会影响到之前存储的数据;当所述数据操作请求为数据读取请求时,通过中间缓冲层406的第二缓冲区至第N缓冲区任意一个将目标数据反馈给客户端302。如此不仅实现了客户端与中间缓冲层进行数据读写交互,而且多个缓冲区的设置提高了数据的快速精确读写。
本实施例一个可选的实施方式中,所述中间缓冲层406,还被配置为通过选举机制从所述中间缓冲层406的N个缓冲区中选举出一个写缓冲区和N-1个读缓冲区,其中,所述第一缓冲区被标志为写缓冲区,所述第二缓冲区至第N缓冲区被标志为读缓冲区。
实际应用中,在中间缓冲层406通过中间缓冲层406与客户端402进行数据交互时,中间缓冲层406首先在中间缓冲层406中建立读缓冲区和写缓冲区,即对缓冲区的进行分类。根据数据写入量少、读取量多,在中间缓冲层406中选出一个写缓冲区,其他缓冲区为读缓冲区,并且将第一缓冲区标志为写缓冲区,将第二缓冲区至第N缓冲区标志为读缓冲区。此外,读缓冲区的数量可以根据数据读取请求的数量进行合理调整,这样可以有效地保证数据读写的速度;同时将写缓冲区设置为第一缓冲区,有利于接收到待写入数据后,将所述待写入数据添加至各个读缓冲区。
本实施例一个可选的实施方式中,所述中间缓冲层406,还被配置按照预设周期检测N个缓冲区的连接状态,其中所述连接状态包括在线状态与掉线状态,若第i缓冲区处于掉线状态,将所述第i缓冲区移除,其中i为小于等于N的正整数。
实际应用中,在中间缓冲层406中设立有检测机制,可以通过gossip对第一缓冲区至第N缓冲区按照预设周期进行检测,一旦在监测出有处于掉线状态的缓冲区,即第i缓冲区,需要将掉线的第i缓冲区进行移除,以免影响中间缓冲层104的正常工作。
本实施例一个可选的实施方式中,所述中间缓冲层406,还被配置为在i=1的情况下,将第二缓冲区调整为第一缓冲区,将第三缓冲区调整为第二缓冲区,直至将第N缓冲区调整为第N-1缓冲区,其中,调整后的所述第一缓冲区被标志为写缓冲区,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区,在2≤i<N的情况下,将第i+1缓冲区调整为第i缓冲区,直至将第N缓冲区调整为第N-1缓冲区,其中,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区。
具体实施时,若检测出第i缓冲区处于掉线状态,将对缓冲区进行调整,主要分为三种情况:第一缓冲区掉线、第N缓冲区掉线以及第二缓冲区至第N-1缓冲区中之一掉线。
当i=1时,即第一缓冲区处于掉线状态,将中间缓冲层406中第二缓冲区至第N缓冲区的编号进行调整,即将第二缓冲区调整为第一缓冲区、将第三缓冲区调整为第二缓冲区、……将第N缓冲区调整为第N-1缓冲区。需要说明的是,为了保证第一缓冲区为写缓冲区,其他的缓冲区为读缓冲区,需要将调整后的所述第一缓冲区被标志为写缓冲区,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区。
当2≤i<N时,此时只需要调整第i+1缓冲区至第N缓冲区的编号,即将第i+1缓冲区调整为第i缓冲区、……将第N缓冲区调整为第N-1缓冲区,同时还要保证第二缓冲区至第N-1缓冲区均为读缓冲区。
当i=N时,即最后一个缓冲区处于掉线状态,此时无需调整第一缓冲区至第N-1缓冲区的编号。
本申请中,在中间缓冲层406中存在缓冲区处于掉线状态的情况下,对缓冲区的编号进行调整,并适应地调整读缓冲区和写缓冲区,一定程度上保证了中间缓冲层406的正常运行。
本实施例一个可选的实施方式中,所述中间缓冲层406,还被配置为在所述第i缓冲区重新连接后处于在线状态的情况下,将所述第i缓冲区调整为第N缓冲区与所述第N-1缓冲区连接。
实际应用中,当所述第i缓冲区处于掉线状态后又重新连接成功,则将第i缓冲区重新加入至缓冲区的队伍中。需要说明的是,可以将第i缓冲区降入至缓冲区的队尾,即将第i缓冲区调整为第N缓冲区,并与第N-1缓冲区相连。此外,调整后的所述第N缓冲区被标志为读缓冲区。如此,避免了对在线的缓冲区的调整,而且还提高了缓冲区的利用率,从而一定程度上提高了中间缓冲层406的数据读写速度。
本实施例一个可选的实施方式中,参见图5,所述系统还包括:
数据库502;
所述中间缓冲层406,还被配置为通过所述第N缓冲区将所述待写入数据发送至数据库502;
所述数据库502,被配置为接收并存储所述待写入数据。
需要说明的是,所述数据库502与中间缓冲层406是互相独立的,数据库502与中间缓冲层406之间可以进行数据交互。
实际应用中,数据库502是用来长期存储管理大量数据的集合,可以理解为数据库中存储有全部的数据。为了保证数据库502中数据的完整性,在用户写入数据时,也要将用户写入的数据存储在数据库302。由于客户端402是与中间缓冲层406直接进行数据交互的,在客户端402发送数据写入请求后,由中间缓冲层406接收后,将待写入数据从第一缓冲区写入,并添加到第二缓冲区至第N缓冲区,然后再有第N缓冲区将待写入数据发送给数据库502。
本实施例一个可选的实施方式中,所述中间缓冲层406,还被配置为在所述数据操作请求为数据读取请求的情况下,若所述第二缓冲区至第N缓冲区无所述数据读取请求对应的目标数据,则将所述数据操作请求发送至数据库502;
所述数据库502,还被配置为根据接收到的数据操作请求查找对应的目标数据,将所述目标数据发送至客户端402;
所述客户端402,还被配置为根据接收到的目标数据进行展示,并将所述目标数据发送至中间缓冲层406。
实际应用中,在中间缓冲层406也即中间缓冲层406中存储有用户写入的数据和一些常用数据,但这些数据并不包含所有的数据。因此,中间缓冲层406接收到数据读取请求却无法反馈目标数据时有发生,即所述第二缓冲区至第N缓冲区无所述数据读取请求对应的目标数据。此时,中间缓冲层406通过中间缓冲层406将所述数据操作请求,即数据读取请求发送至数据库502,由数据库502响应所述数据操作请求,并将对应的目标数据返回给客户端402。客户端402在接收目标数据之后,不仅需要根据目标数据给用户进行展示,还需要将目标数据发送给中间缓冲层406进行保存。有利于不断丰富中间缓冲层406存储的数据,一定程度上提高了客户端读取数据时的速度。
本实施例一个可选的实施方式中,所述中间缓冲层406,还被配置为从所述数据读取请求中获取目标数据的信息标识,根据所述目标数据的信息标识在所述第二缓冲区至第N缓冲区中查找对应的目标数据,通过所述第二缓冲区至第N缓冲区中之一将所述目标数据反馈至客户端402;
所述客户端402,还被配置为接收所述目标数据并展示。
实际应用中,在确定所述数据操作请求为数据读取请求的情况下,需要对所述数据读取请求进行解析,从所述数据读取请求获取到目标数据的标识信息,在此基础上,中间缓冲层406根据目标数据的标识信息在第二缓冲区至第N缓冲区中进行查找,在查找到目标数据的情况下,根据第二缓冲区至第N缓冲区中各缓冲区的数据读取量,选择数读取量较少的缓冲区进行反馈目标数据。如此,可以在一定程度上提高数据查找速度,从而减少客户端接收到目标数据的时间以及用户等待的时间,提高用户体验性。
本申请提供的数据读取访问系统,包括客户端和服务器集群,其中所述服务器集群中的多个服务器之一为中间缓冲层,所述中间缓冲层设置有N个缓冲区,N为大于等于3的正整数;首先客户端根据用户操作指令生成数据操作请求,发送至中间缓冲层,中间缓冲层判断所述数据操作请求的类型是数据写入请求还是数据读取请求。若为数据写入请求,则将待写入数据写入中间缓冲层的第一缓冲区,并将写入的数据依次添加至第二缓冲区至第N缓冲区。若为数据操作请求,则通过第二缓冲区至第N缓冲区其中之一来反馈与数据读取请求相对应的目标数据。通过在中间缓冲层上设置中间缓冲层,以及在中间缓冲层中划分多个缓冲区,可以存储常用数据,实现了在数据读写量较大时,提高了客户端与中间缓冲层进行数据写入或数据读取的速度和精准度,一定程度上降低了数据库的宽带压力。
图6示出了根据本申请一实施例提供的一种数据读写访问的流程图,应用于中间缓冲层,所述中间缓冲层设置有N个缓冲区,N为大于等于3的正整数,需要说明的是,所述中间缓冲层可以配置在服务器的内存中,也可以是一个单独的服务器。
所述数据读写访问方法具体包括以下步骤:
步骤602:接收客户端发送的数据操作请求。
具体的,所述数据操作请求的类型包括数据写入请求和数据读取请求。在中间缓冲层接收到客户端发送的数据操作请求的基础上,首先要判断所述数据操作请求的意图是写入数据还是获取数据,即判断所述数据操作请求的类型,有利于第一缓冲层根据数据操作请求的类型进行相应的处理。
实际应用中,在通过中间缓冲层与客户端进行数据交互之前,首先需要建立中间缓冲层中的读缓冲区和写缓冲区,也即将所有缓冲区的进行分类,具体实现过程可以如下:
通过选举机制从所述中间缓冲层的N个缓冲区中选举出一个写缓冲区和N-1个读缓冲区,其中,所述第一缓冲区被标志为写缓冲区,所述第二缓冲区至第N缓冲区被标志为读缓冲区。
由于数据写入相对于数据读取来说数量少,在中间缓冲层中选出一个写缓冲区,其他缓冲区为读缓冲区,并且将第一缓冲区标志为写缓冲区,将第二缓冲区至第N缓冲区标志为读缓冲区。读缓冲区的数量可以根据数据读取量的多少进行适应性调整。如此,可以在数据读取量较大时,有效地保证数据读写的速度,同时将写缓冲区设置为第一缓冲区,有利于接收到待写入数据后,将所述待写入数据添加至各个读缓冲区。
步骤604:在所述数据操作请求为数据写入请求的情况下,根据所述数据写入请求获取待写入数据,将所述待写入数据写入所述中间缓冲层的第一缓冲区,并将所述第一缓冲区写入的待写入数据依次添加至第二缓冲区至第N缓冲区。
实际应用中,当所述数据操作请求为数据写入请求时,中间缓冲层需要获取所述数据写入请求中的待写入数据,将所述待写入数据写入至第一缓冲区,由第一缓冲区将所述待写入数据一次发送给第二缓冲区至第N缓冲区,第二缓冲区至第N缓冲区在接收待写入数据后进行保存,需要说明的是,每个缓冲区的数据是累加的,接收并保存待写入数据时并不会删除之前保存的数据。这样有利于丰富中间缓冲层的存储数据,进一步地提高了客户端读取数据时的速度。
进一步地,为了保证数据库中数据的完整,在将所述第一缓冲区写入的待写入数据依次添加至第二缓冲区至第N缓冲区之后,还需要通过所述第N缓冲区将所述待写入数据发送至数据库。
步骤606:在所述数据操作请求为数据读取请求的情况下,通过所述第二缓冲区至第N缓冲区中之一反馈与所述数据读取请求对应的目标数据。
需要说明的是,步骤606和步骤604不存在先后顺序,而是根据对同一数据操作请求的类型进行判断后,不同情况的不同处理方法。本实施例以步骤604在步骤606之后为例进行说明。
当所述数据操作请求为数据读取请求时,中间缓冲层通过第二缓冲区、第三缓冲区、……、第N缓冲区中的任意一个缓冲区将与所述数据读取请求对应的目标数据发送给客户端。由第二缓冲区至第N缓冲区都可以进行数据反馈,分散了数据读取量较大时中间缓冲层的压力,进一步提高了中间缓冲层反馈目标数据时的效率。
本实施例一个可选的实施方式中,所述通过所述第二缓冲区至第N缓冲区中之一反馈与所述数据读取请求对应的目标数据的具体实现过程可以如下:
从所述数据读取请求中获取目标数据的信息标识;
根据所述目标数据的信息标识在所述第二缓冲区至第N缓冲区中查找对应的目标数据;
通过所述第二缓冲区至第N缓冲区中之一将所述目标数据反馈至客户端。
在确定所述数据操作请求为数据读取请求的情况下,需要对所述数据读取请求进行解析,从所述数据读取请求获取到目标数据的标识信息,中间缓冲层根据目标数据的标识信息在第二缓冲区至第N缓冲区中进行查找,在查找到目标数据的情况下,根据第二缓冲区至第N缓冲区中各缓冲区的数据读取量,选择数据读取量较少的缓冲区进行反馈目标数据。如此,可以在一定程度上提高数据查找速度,从而减少客户端接收到目标数据的时间以及用户等待的时间,提高用户体验性。
实际应用中,为了保证数据库中数据的完整性和全面性,在所述数据操作请求为数据读取请求的情况下,若所述第二缓冲区至第N缓冲区无所述数据读取请求对应的目标数据,则将所述数据操作请求发送至数据库。
在所述数据操作请求为数据写入请求的情况下,中间缓冲层中的第一缓冲区至第N缓冲区都添加了待写入数据后,需要通过第N缓冲层将待写入数据发送给数据库。在此基础上,有利于数据库接收并保存待写入数据,保证了数据库中数据的完整性和全面性。
本实施例一个可选的实施方式中,中间缓冲层中设立有检测机制,可以按照预设周期检测N个缓冲区的连接状态,其中所述连接状态包括在线状态与掉线状态;若第i缓冲区处于掉线状态,将所述第i缓冲区移除,其中i为小于等于N的正整数。
具体的,中间缓冲层可以通过gossip对所有的缓冲区按照预设周期进行检测,一旦在监测出有处于掉线状态的缓冲区,即第i缓冲区,需要将掉线的第i缓冲区进行移除,以免影响中间缓冲层104的正常工作。
进一步地,所述将所述第i缓冲区移除之前,还包括:
在i=1的情况下,将第二缓冲区调整为第一缓冲区,将第三缓冲区调整为第二缓冲区,直至将第N缓冲区调整为第N-1缓冲区,其中,调整后的所述第一缓冲区被标志为写缓冲区,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区;
在2≤i<N的情况下,将第i+1缓冲区调整为第i缓冲区,直至将第N缓冲区调整为第N-1缓冲区,其中,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区。
实际应用中,在检测出所述第i缓冲区处于掉线状态时,需要对缓冲区进行调整,可以分为三种情况:当i=1时,此时需要调整第二缓冲区至第N缓冲区的编号,即将第二缓冲区调整为第一缓冲区、……将第N缓冲区调整为第N-1缓冲区,需要说明的是,为了保证第一缓冲区为写缓冲区,其他的缓冲区为读缓冲区,需要将调整后的所述第一缓冲区被标志为写缓冲区,调整后的所述第二缓冲区至第N-1缓冲区被标志为读缓冲区;当2≤i<N时,将第i+1缓冲区调整为第i缓冲区、……将第N缓冲区调整为第N-1缓冲区,同时还要保证第二缓冲区至第N-1缓冲区均为读缓冲区;当i=N时,即最后一个缓冲区处于掉线状态,此时无需调整缓冲区的编号。在有缓冲区掉线时,对缓冲区的编号进行调整,并适应地调整读缓冲区和写缓冲区,一定程度上保证了中间缓冲层的正常运行。
此外,在所述第i缓冲区重新连接后处于在线状态的情况下,将所述第i缓冲区调整为第N缓冲区与所述第N-1缓冲区连接。当第i缓冲区重新连接成功时,需要将第i缓冲区重新加入至缓冲区的队伍中,可以将第i缓冲区降入至缓冲区的队尾,即将第i缓冲区调整为第N缓冲区,并与第N-1缓冲区相连。同时,调整后的所述第N缓冲区被标志为读缓冲区。这样不仅避免了对在线的缓冲区的进行调整,还提高了缓冲区的利用率。
本申请提供的数据库访问方法,应用于中间缓冲层,所述中间缓冲层设置有N个缓冲区,N为大于等于3的正整数;所述数据读写访问方法包括:接收到数据操作请求后,判断所述数据操作请求的类型是数据写入请求还是数据读取请求。若为数据写入请求,则将待写入数据写入中间缓冲层的第一缓冲区,并将写入的数据依次添加至第二缓冲区至第N缓冲区。若为数据操作请求,则通过第二缓冲区至第N缓冲区其中之一来反馈与数据读取请求相对应的目标数据。通过设置中间缓冲层,以及在中间缓冲层中划分多个缓冲区,可以存储常用数据,实现了在数据读写量较大时,提高了客户端与中间缓冲层进行数据写入或数据读取的速度和精准度,一定程度上降低了服务器的宽带压力。
图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
其中,处理器720执行所述计算机指令时实现所述的数据读写访问方法的步骤。
本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述的数据读写访问方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据读写访问方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据读写访问方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述数据读写访问方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据读写访问方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据读写访问方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。