CN109587235A - 一种基于网络库的数据访问方法、客户端、系统及介质 - Google Patents
一种基于网络库的数据访问方法、客户端、系统及介质 Download PDFInfo
- Publication number
- CN109587235A CN109587235A CN201811456065.1A CN201811456065A CN109587235A CN 109587235 A CN109587235 A CN 109587235A CN 201811456065 A CN201811456065 A CN 201811456065A CN 109587235 A CN109587235 A CN 109587235A
- Authority
- CN
- China
- Prior art keywords
- data
- access request
- server
- client
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
Abstract
本发明公开了一种基于网络库的数据访问方法、客户端、系统及介质。该方法的步骤包括:利用网络库生成对目标数据的若干个访问请求;向服务器发送其中一个访问请求,并在接收到服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求;接收由服务器返回的各访问请求对应的答复数据。本方法在服务器对当前访问请求尚未返回答复数据前,继续发送多条访问请求,相对节省了客户端与服务器之间通信所产生的RTT时间开销,进而提高了客户端与服务器之间的通信效率。此外,本发明还提供一种客户端、基于网络库的数据访问系统及介质,有益效果同上所述。
Description
技术领域
本发明涉及数据传输领域,特别是涉及一种基于网络库的数据访问方法、客户端、系统及介质。
背景技术
网络库是指通过编程语言实现的异步事件库,本质上用于提供异步事件通知(Asynchronous Event Notification,AEN),即根据发生的网络事件,调用相应的回调函数进行处理。
当前在客户端与服务器进行通信的拓扑结构下,网络库通常安装于客户端中,在此基础上,客户端通过网络库向服务器发起访问请求,服务器在收到该请求后,对其进行响应处理,并将处理后的结果作为答复数据返回至客户端以供客户端使用。在基于网络库实现客户端与服务器之间数据交互的情况下,为了确保客户端与服务器之间通信的有序性,以降低发生通信错误的概率,在网络库每次向服务器发送访问请求后,均需要等待该服务器返回相应的答复数据后才能够再次向服务器发送下一个访问请求,因此服务器完成每一个访问请求时,均会产生一定的RTT(Round-Trip Time,往返时间),而在实际应用场景下,客户端所发起访问请求的数量较大,并且相对频繁,因此以当前方式进行客户端与服务器间的数据交互,往往会产生较大的RTT时间开销,进而降低客户端与服务器之间的通信效率。
由此可见,提供一种基于网络库的数据访问方法,以相对减少客户端与服务器之间通信所产生的RTT时间开销,进而提高客户端与服务器之间的通信效率,是本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种基于网络库的数据访问方法、客户端、系统及介质,以相对减少客户端与服务器之间通信所产生的RTT时间开销,进而提高客户端与服务器之间的通信效率。
为解决上述技术问题,本发明提供一种基于网络库的数据访问方法,应用于客户端,方法包括:
利用网络库生成对目标数据的若干个访问请求;
向服务器发送其中一个访问请求,并在接收到服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求;
接收由服务器返回的各访问请求对应的答复数据。
优选的,在接收到服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求具体为:
依照预设频率执行对其它访问请求的发送任务,并在各次的发送任务中,均向服务器连续发送预设数量的其它访问请求。
优选的,网络库为libevent网络库;
相应的,访问请求为Range类型的HTTP访问请求。
优选的,在接收由服务器返回的各访问请求对应的答复数据之后,方法还包括:
将依照答复数据中的数据偏移量将各答复数据组合为完整的结果数据。
此外,本发明还提供一种基于网络库的数据访问方法,应用于服务器端,方法包括:
当接收到由客户端传入的访问请求时,若此时正在发送对前序访问请求的答复数据,则将当前接收到的访问请求写入缓存;
对缓存中的访问请求进行响应,生成相应的答复数据,并将答复数据返回至客户端。
优选的,对缓存中的访问请求进行响应,生成相应的答复数据具体为:
通过开启N条处理线程对缓存中的访问请求进行并行响应,生成相应的答复数据;其中,N为大于1的整数。
此外,本发明还提供一种客户端,客户端包括存储器、处理器和总线,存储器上存储有可在处理器上运行的基于网络库的数据访问程序,基于网络库的数据访问程序通过总线被处理器接收并执行时实现如上述的方法。
优选的,客户端为组成CDN网络或者区块链网络的节点。
此外,本发明还提供一种基于网络库的数据访问系统,系统包括:
客户端,用于利用网络库生成对目标数据的若干个访问请求;向服务器发送其中一个访问请求,并在接收到服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求;接收由服务器返回的各访问请求对应的答复数据;
服务器端,用于当接收到由客户端传入的访问请求时,若此时正在发送对前序访问请求的答复数据,则将当前接收到的访问请求写入缓存;对缓存中的访问请求进行响应,生成相应的答复数据,并将答复数据返回至客户端。
此外,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有基于网络库的数据访问程序,基于网络库的数据访问程序可被一个或者多个处理器执行,以实现如上述的基于网络库的数据访问方法。
此外,本发明还提供一种计算机程序产品,其特征在于,包括计算机指令,当其在计算机上运行时,使得计算机可以执行上述的基于网络库的数据访问方法。
本发明所提供的基于网络库的数据访问方法,首先由客户端根据用户的访问操作生成相应的访问请求,进而利用网络库向服务器发送其中一个访问请求,并在接收到由服务器对应返回的当前访问请求对应的答复数据前继续发送其它访问请求,最后通过服务器对各访问请求进行处理,并向客户端返回相应的答复数据。相比于现有技术中,需要等待服务器返回与当前访问请求相应的答复数据后才能再次向服务器发送下一个访问请求而言,本方法在服务器对当前访问请求尚未返回答复数据前,继续发送多条访问请求,相对节省了客户端与服务器之间通信所产生的RTT时间开销,进而提高了客户端与服务器之间的通信效率。此外,本发明还提供一种客户端、基于网络库的数据访问系统及介质,有益效果同上所述。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用于客户端的基于网络库的数据访问方法的流程图;
图2为本发明实施例提供的一种应用于服务器端的基于网络库的数据访问方法的流程图;
图3为本发明实施例提供的一种客户端的结构图;
图4为本发明实施例提供的一种客户端与服务器之间的交互时序图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
实施例一
本发明提供一种应用于客户端的基于网络库的数据访问方法。
参照图1,图1为本发明实施例提供的一种应用于客户端的基于网络库的数据访问方法的流程图。
在实施例一中,该方法包括:
步骤S10:利用网络库生成对目标数据的若干个访问请求。
首先,对网络库进行解释,网络库是指通过编程语言实现的异步事件库,本质上用于提供异步事件通知,本申请中的网络库可以具体为ACE库、ASIO库、libevent网络库、libev网络库、libu网络库等,用户可以根据实际的使用需求而选定,在此不做限定。
需要说明的是,本步骤中用户的访问操作通常是用户根据对服务器中数据的具体需求而对客户端进行的一系列控制,最终目的是通过客户端获取服务器中的相应数据。因此在本步骤中,利用网络库根据用户的访问操作,即用户对于数据的需求生成相应的访问请求,用于在后续步骤中与服务器进行交互。另外,上述所提及的用户需求数据的具体类型应根据实际情况而定,在此不做限定。
步骤S11:向服务器发送其中一个访问请求,并在接收到服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求。
可以理解的是,本步骤的主要执行内容是客户端对预先安装于其自身的网络库进行控制,具体可以通过网络库调用预设的配置文件,进而实现客户端与服务器的一次应答回合内,连续向服务器发送根据用户的操作内容生成的各项访问请求的功能。此处所指的连续发送,是针对于客户端单次仅发送一条访问请求并等待服务器返回处理结果后再发送下一条访问请求而言的连续,也就是说,在本申请中,客户端在单次下应至少向服务器发送两条或两条以上访问请求,但是在此并不限定单次的请求发送数量以及各次发送访问请求的间隔周期。另外,需要强调的是,本步骤中利用网络库向服务器连续发送访问请求的实现方式是预先在网络库的配置文件中配置将访问请求连续发送至服务器的相关逻辑代码,由于不同的网络库配置文件的内容结构存在差异,并且对于配置文件的逻辑代码编写是本领域技术人员所知的内容,故在此不做赘述。
步骤S12:接收由服务器返回的各访问请求对应的答复数据。
本步骤是当服务器对客户端发送的访问请求完成处理,并将答复数据返回至客户端时,客户端进行的操作内容。本步骤中的接收,是指当有答复数据返回至客户端时,客户端就进行接收,此处的答复数据即为用户所需求的数据。
本发明所提供的基于网络库的数据访问方法,首先由客户端根据用户的访问操作生成相应的访问请求,进而利用网络库向服务器发送其中一个访问请求,并在接收到由服务器对应返回的当前访问请求对应的答复数据前继续发送其它访问请求,最后通过服务器对各访问请求进行处理,并向客户端返回相应的答复数据。相比于现有技术中,需要等待服务器返回与当前访问请求相应的答复数据后才能再次向服务器发送下一个访问请求而言,本方法在服务器对当前访问请求尚未返回答复数据前,继续发送多条访问请求,相对节省了客户端与服务器之间通信所产生的RTT时间开销,进而提高了客户端与服务器之间的通信效率。
实施例二
在上述实施例的基础上,本发明还提供以下一系列优选的实施方式。
作为一种优选的实施方式,在接收到服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求具体为:
依照预设频率执行对其它访问请求的发送任务,并在各次的发送任务中,均向服务器连续发送预设数量的其它访问请求。
需要说明的是,考虑到服务器接收访问请求并进行处理需要占用服务器自身的资源,并且服务器可能同时响应多个客户端发送的访问请求,因此为了避免过多的占用服务器的资源,以此确保服务器工作的稳定性,本实施方式中的客户端依照预设频率向服务器发送访问请求,并且每次均发送预设数量的访问请求至服务器,以此相对确保各个客户端发送的访问请求之间存在一定的时间间隙,降低了多台客户端同时与服务器进行交互情况下,服务器单位时间内的负载,相对保证了服务器的工作性能。本步骤中的预设频率以及预设数量应根据服务器的具体性能而定,在此不做限定。
此外,作为一种优选的实施方式,网络库为libevent网络库;
相应的,访问请求为Range类型的HTTP访问请求。
需要说明的是,本实施方式是考虑到当前的客户端向服务器访问的数据内容往往相对庞大,例如用户通过客户端点播视频数据、音频流数据等类型的数据,应相对确保客户端向服务器发起访问请求的整体效率以及客户端获取答复数据的效率。本实施方式中的访问请求为Rang类型的HTTP访问请求,即请求头具有Range参数的HTTP访问请求,通过Range类型的HTTP访问请能够仅访问完整数据中的部分数据片段,优势在于每部分数据片段较小,即使出现错误重传的情况也不会额外造成很大的资源开销以及时间开销,相对提高客户端获取答复数据的效率;在此基础上,由于libevent网络库在本质上是用C语言编写的、轻量级的开源高性能事件通知库。具有事件驱动、高性能、轻量级、开放源码,支持跨平台等特点,能够相对提高客户端与服务器之间数据交互的稳定性,进而保证客户端向服务器发起访问请求的整体效率,并且可以根据交互需求灵活快捷的编写相应的配置文件。综上,本实施方式能够适应客户端向服务器访问的数据内容相对庞大的使用场景,相对确保了客户端向服务器发起访问请求的整体效率以及客户端获取答复数据的效率。
下面,对于libevent网络库(以2.1.8版本为例)所调用的配置文件的源代码编码过程进行说明:
1.去掉libevent网络库应用层http.c文件里evhttp_make_request接口中的if(TAILQ_FIRST(&evcon->requests)==req)判断逻辑,以此避免判断是否返回当前访问请求的答复数据,进而能够及时的将http请求连续发送给服务器;
2.修改http.c文件evhttp_connection_cb函数,当客户端连接服务器成功后需要将队列里的所有请求发送给服务器,而不是只发送队列里最靠前的一个请求给服务器,具体实现如下:
其中TAILQ_FOREACH为新增逻辑
3.修改http.c文件evhttp_write_connectioncb函数,去掉EVUTIL_ASSERT(evcon->state==EVCON_WRITING)判断;
4.修改http.c文件里evhttp_connection_done函数,当上一个请求发送完后,需要将队列里剩余的所有请求同时发送给服务器,而不是只将队列里最靠前的一个请求发给服务器。并且将evcon->state状态由EVCON_WRITING改为EVCON_READING_FIRSTLINE
此外,在上述实施方式的基础上,作为一种优选的实施方式,在接收由服务器返回的各访问请求对应的答复数据之后,方法还包括:
依照答复数据中的数据偏移量将各答复数据组合为完整的结果数据。
可以理解的是,由于在上述实施方式中,客户端向服务器发起的是Range类型的HTTP访问请求,因此服务器针对于每一个访问请求所返回的答复数据仅为完整数据中的部分数据片段,进而为了确保最终获取的答复数据可用,本申请依照答复数据中的数据偏移量将各答复数据组合为完整的结果数据。需要说明的是,数据偏移量存在于答复数据的数据包的固定位置,表征当前答复数据在完整数据中的具体位置。本实施方式将各答复数据按序组合为完整的结果数据,相对确保了结果数据的可用性。
此外,在上述实施方式的基础上,作为一种优选的实施方式,服务器具体为CDN服务器。
需要说明的是,CDN服务器是构成CDN网络的服务器设备,CDN的全称是ContentDelivery Network,即内容分发网络,是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,能够相对提高对用户客户端访问请求的响应速度和命中率,进而提高服务器与客户端之间的通信效率。
实施例三
本发明对应提供一种应用于服务器端的基于网络库的数据访问方法。
参照图2,图2为本发明实施例提供的一种应用于服务器端的基于网络库的数据访问方法的流程图。
在实施例三中,该方法包括:
步骤S20:当接收到由客户端传入的访问请求时,若此时正在发送对前序访问请求的答复数据,则将当前接收到的访问请求写入缓存。
步骤S21:对缓存中的访问请求进行响应,生成相应的答复数据,并将答复数据返回至客户端。
本方法当接收到由客户端传入的访问请求时,若此时正在发送对前序访问请求的答复数据,则将当前接收到的访问请求写入缓存,能够相对避免因当前访问请求丢失而导致客户端无法正常访问相应答复数据的情况发生,提高了对访问请求响应的可靠性。
需要说明的是,服务器对缓存中的各访问请求进行响应的方式可以具体为“先来先服务”的顺序处理,即先到达服务器缓存中的访问请求先被服务器处理,此种处理方式适合各访问请求均为需要快速响应的“时效性请求”的情况,例如对视频或音频数据的点播;服务器对缓存中的各访问请求进行响应的方式也可以是预先对各到来的访问请求设置相应的优先级,进而按照优先级的顺序响应访问请求,此种处理方式适合在“时效性请求”以及“非时效性请求”混合响应的情况下使用,具体应根据实际使用场景以及交互需求而定,在此不做具体限定。
如果是“先来先服务”的顺序,则可以在访问请求中添加时间标签,按照时间标签确定处理顺序;如果是按照优先级的顺序进行处理,则可以在访问请求中设置优先级标签和时间标签,进而在按照优先级的顺序处理访问请求的基础上,将具有相同优先级的访问请求按照时间标签中的时间顺序进行处理。
本发明所提供的基于网络库的数据访问方法,首先由客户端根据用户的访问操作生成相应的访问请求,进而利用网络库向服务器发送其中一个访问请求,并在接收到由服务器对应返回的当前访问请求对应的答复数据前继续发送其它访问请求,最后通过服务器对各访问请求进行处理,并向客户端返回相应的答复数据。相比于现有技术中,需要等待服务器返回与当前访问请求相应的答复数据后才能再次向服务器发送下一个访问请求而言,本方法在服务器对当前访问请求尚未返回答复数据前,继续发送多条访问请求,相对节省了客户端与服务器之间通信所产生的RTT时间开销,进而提高了客户端与服务器之间的通信效率。
在实施例三的基础上,作为一种优选的实施方式,对缓存中的访问请求进行响应,生成相应的答复数据具体为:
通过开启N条处理线程对缓存中的访问请求进行并行响应,生成相应的答复数据;其中,N为大于1的整数。
由于考虑到在当前的实际应用中,服务器往往是采用单线程的方式顺序处理到来的访问请求,但是由于与服务器交互的客户端数量往往较多,因此服务器仅通过单线程响应客户端访问请求的整体效率有限,容易造成访问请求在缓存中堆积的情况,进而加剧对服务器中缓存资源的消耗,导致服务器工作稳定性下降。本实施方式通过服务器预先开启多条线程的方式并行处理缓存中的各访问请求,相对提高了在单位时间内的处理效率,进而能够相对避免缓存中访问请求堆积的情况发生,保证服务器工作的稳定性。
实施例四
在上文中对于基于网络库的数据访问方法的实施例进行了详细的描述,本发明还提供一种与该方法对应的客户端,由于客户端部分的实施例与方法部分的实施例相互对应,因此客户端部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
请参考图3,图3为本发明实施例提供的一种客户端的结构图。
本发明实施例提供的客户端1包括存储器11、处理器12和总线13,存储器11上存储有可在处理器12上运行的基于网络库的数据访问程序,基于网络库的数据访问程序通过总线13被处理器接收并执行时实现如基于网络库的数据访问方法的操作内容。
该客户端1可以是组成CDN网络或者区块链网络的节点。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是客户端1的内部存储单元,例如该客户端1的硬盘。存储器11在另一些实施例中也可以是客户端1的外部存储设备,例如客户端1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括客户端1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于客户端1的应用软件及各类数据,例如基于网络库的数据访问程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行基于网络库的数据访问程序等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本发明所提供的客户端,首先根据用户的访问操作生成相应的访问请求,进而利用网络库向服务器发送其中一个访问请求,并在接收到由服务器对应返回的当前访问请求对应的答复数据前继续发送其它访问请求,最后接收服务器对各访问请求进行处理,并向客户端返回的答复数据。本客户端是通过控制网络库调用预设的配置文件实现其连续发送访问请求的功能,相比于现有技术中,需要等待服务器返回与当前访问请求相应的答复数据后才能再次向服务器发送下一个访问请求而言,本客户端在服务器对当前访问请求尚未返回答复数据前,继续发送多条访问请求,相对节省了客户端与服务器之间通信所产生的RTT时间开销,进而提高了客户端与服务器之间的通信效率。
实施例五
本发明还提供一种基于网络库的数据访问系统,系统包括:
客户端,用于利用网络库生成对目标数据的若干个访问请求;向服务器发送其中一个访问请求,并在接收到服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求;接收由服务器返回的各访问请求对应的答复数据;
服务器端,用于当接收到由客户端传入的访问请求时,若此时正在发送对前序访问请求的答复数据,则将当前接收到的访问请求写入缓存;对缓存中的访问请求进行响应,生成相应的答复数据,并将答复数据返回至客户端。
本发明所提供的基于网络库的数据访问系统,首先由客户端根据用户的访问操作生成相应的访问请求,进而利用网络库向服务器发送其中一个访问请求,并在接收到由服务器对应返回的当前访问请求对应的答复数据前继续发送其它访问请求,最后通过服务器对各访问请求进行处理,并向客户端返回相应的答复数据。相比于现有技术中,需要等待服务器返回与当前访问请求相应的答复数据后才能再次向服务器发送下一个访问请求而言,本系统在服务器对当前访问请求尚未返回答复数据前,继续发送多条访问请求,相对节省了客户端与服务器之间通信所产生的RTT时间开销,进而提高了客户端与服务器之间的通信效率。
下面通过实际场景对客户端与服务器之间的通信交互进行进一步说明。请参考图4,图4为本发明实施例提供的一种客户端与服务器之间的交互时序图。
在实际场景下客户端与服务器之间通信交互的内容包括:
1.客户端发送第一访问请求(range1 Req)给服务器;
2.在收到服务器回复的第一答复数据(range1 Resp)前,客户端继续发送第二访问请求(range2 Req)给服务器;
3.服务器收到第二访问请求(range2 Req)时,发现此时正在发送第一答复数据(range1 Resp)给客户端,所以会先将第二访问请求(range2 Req)缓存起来,等第一答复数据(range1 Resp)发送完后马上将第二访问请求(range2 Req)对应的数据发送给客户端;
4.客户端同样会在收到第二答复数据(range2 Resp)前,将第三访问请求(range3Req)发送给服务器。
上述场景下客户端与服务器之间通信交互,最基本的实现了客户端向服务器连续发送访问请求的操作逻辑,相对减少了客户端与服务器之间通信所产生的RTT时间开销,提高了客户端与服务器之间的通信效率。
实施例五
本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有基于网络库的数据访问程序,基于网络库的数据访问程序可被一个或者多个处理器执行,以实现如上述的基于网络库的数据访问方法。
本发明所提供的计算机可读存储介质,执行时首先由客户端根据用户的访问操作生成相应的访问请求,进而利用网络库向服务器发送其中一个访问请求,并在接收到由服务器对应返回的当前访问请求对应的答复数据前继续发送其它访问请求,最后通过服务器对各访问请求进行处理,并向客户端返回相应的答复数据。相比于现有技术中,需要等待服务器返回与当前访问请求相应的答复数据后才能再次向服务器发送下一个访问请求而言,本计算机可读存储介质在服务器对当前访问请求尚未返回答复数据前,继续发送多条访问请求,相对节省了客户端与服务器之间通信所产生的RTT时间开销,进而提高了客户端与服务器之间的通信效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于网络库的数据访问方法,应用于客户端,其特征在于,所述方法包括:
利用网络库生成对目标数据的若干个访问请求;
向服务器发送其中一个所述访问请求,并在接收到所述服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求;
接收由所述服务器返回的各所述访问请求对应的答复数据。
2.如权利要求1所述的方法,其特征在于,所述在接收到所述服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求具体为:
依照预设频率执行对所述其它访问请求的发送任务,并在各次的所述发送任务中,均向所述服务器连续发送预设数量的所述其它访问请求。
3.如权利要求1或2所述的方法,其特征在于,所述网络库为libevent网络库;
相应的,所述访问请求为Range类型的HTTP访问请求。
4.如权利要求3所述的方法,其特征在于,在所述接收由所述服务器返回的各所述访问请求对应的答复数据之后,所述方法还包括:
将所述依照所述答复数据中的数据偏移量将各所述答复数据组合为完整的结果数据。
5.一种基于网络库的数据访问方法,应用于服务器端,其特征在于,所述方法包括:
当接收到由客户端传入的访问请求时,若此时正在发送对前序访问请求的答复数据,则将当前接收到的访问请求写入缓存;
对所述缓存中的所述访问请求进行响应,生成相应的答复数据,并将所述答复数据返回至所述客户端。
6.如权利要求5所述的方法,其特征在于,所述对所述缓存中的所述访问请求进行响应,生成相应的答复数据具体为:
通过开启N条处理线程对所述缓存中的所述访问请求进行并行响应,生成相应的所述答复数据;其中,N为大于1的整数。
7.一种客户端,其特征在于,所述客户端包括存储器、处理器和总线,所述存储器上存储有可在所述处理器上运行的基于网络库的数据访问程序,所述基于网络库的数据访问程序通过所述总线被所述处理器接收并执行时实现如权利要求1-4任一项所述的方法。
8.根据权利要求7所述的客户端,其特征在于,所述客户端为组成CDN网络或者区块链网络的节点。
9.一种基于网络库的数据访问系统,其特征在于,所述系统包括:
客户端,用于利用网络库生成对目标数据的若干个访问请求;向服务器发送其中一个所述访问请求,并在接收到所述服务器返回的当前访问请求对应的答复数据前继续发送其它访问请求;接收由所述服务器返回的各所述访问请求对应的答复数据;
服务器端,用于当接收到由客户端传入的访问请求时,若此时正在发送对前序访问请求的答复数据,则将当前接收到的访问请求写入缓存;对所述缓存中的所述访问请求进行响应,生成相应的答复数据,并将所述答复数据返回至所述客户端。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于网络库的数据访问程序,所述基于网络库的数据访问程序可被一个或者多个处理器执行,以实现如权利要求1至4中任一项或如权利要求5或6中的基于网络库的数据访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811456065.1A CN109587235A (zh) | 2018-11-30 | 2018-11-30 | 一种基于网络库的数据访问方法、客户端、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811456065.1A CN109587235A (zh) | 2018-11-30 | 2018-11-30 | 一种基于网络库的数据访问方法、客户端、系统及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109587235A true CN109587235A (zh) | 2019-04-05 |
Family
ID=65926555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811456065.1A Pending CN109587235A (zh) | 2018-11-30 | 2018-11-30 | 一种基于网络库的数据访问方法、客户端、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109587235A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297898A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 异步编译方法及装置 |
CN111131458A (zh) * | 2019-12-25 | 2020-05-08 | 深圳市网心科技有限公司 | 心跳保活方法、电子设备、系统及介质 |
CN111143177A (zh) * | 2019-12-04 | 2020-05-12 | 中国建设银行股份有限公司 | Ibm主机的rmf iii数据的收集方法、系统、装置及存储介质 |
CN112272190A (zh) * | 2020-11-10 | 2021-01-26 | 网易(杭州)网络有限公司 | 一种数据访问方法和装置 |
CN113489786A (zh) * | 2021-07-01 | 2021-10-08 | 北京玩蟹科技有限公司 | 一种长连接网络弱网重连方法、重发方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100011091A1 (en) * | 2008-07-10 | 2010-01-14 | Blackwave Inc. | Network Storage |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN105429718A (zh) * | 2015-10-28 | 2016-03-23 | 西安电子科技大学 | 基于多并发的无线频谱监测方法 |
CN107634984A (zh) * | 2017-08-07 | 2018-01-26 | 国网河南省电力公司 | 一种基于单向传输通道的文件同步方法 |
CN108804238A (zh) * | 2018-03-29 | 2018-11-13 | 中国工程物理研究院计算机应用研究所 | 一种基于远程过程调用的软总线通信方法 |
-
2018
- 2018-11-30 CN CN201811456065.1A patent/CN109587235A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100011091A1 (en) * | 2008-07-10 | 2010-01-14 | Blackwave Inc. | Network Storage |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN105429718A (zh) * | 2015-10-28 | 2016-03-23 | 西安电子科技大学 | 基于多并发的无线频谱监测方法 |
CN107634984A (zh) * | 2017-08-07 | 2018-01-26 | 国网河南省电力公司 | 一种基于单向传输通道的文件同步方法 |
CN108804238A (zh) * | 2018-03-29 | 2018-11-13 | 中国工程物理研究院计算机应用研究所 | 一种基于远程过程调用的软总线通信方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297898A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 异步编译方法及装置 |
CN111143177A (zh) * | 2019-12-04 | 2020-05-12 | 中国建设银行股份有限公司 | Ibm主机的rmf iii数据的收集方法、系统、装置及存储介质 |
CN111143177B (zh) * | 2019-12-04 | 2023-08-11 | 中国建设银行股份有限公司 | Ibm主机的rmf iii数据的收集方法、系统、装置及存储介质 |
CN111131458A (zh) * | 2019-12-25 | 2020-05-08 | 深圳市网心科技有限公司 | 心跳保活方法、电子设备、系统及介质 |
CN112272190A (zh) * | 2020-11-10 | 2021-01-26 | 网易(杭州)网络有限公司 | 一种数据访问方法和装置 |
CN113489786A (zh) * | 2021-07-01 | 2021-10-08 | 北京玩蟹科技有限公司 | 一种长连接网络弱网重连方法、重发方法 |
CN113489786B (zh) * | 2021-07-01 | 2023-11-14 | 北京玩蟹科技有限公司 | 一种长连接网络弱网重连方法、重发方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109587235A (zh) | 一种基于网络库的数据访问方法、客户端、系统及介质 | |
CN101015187B (zh) | 在网络协议处理的卸载中支持连接建立的设备和方法 | |
CN100468377C (zh) | 在网络协议处理的卸载中支持存储器管理的设备和方法 | |
CN107690622A (zh) | 实现硬件加速处理的方法、设备和系统 | |
CN103412786B (zh) | 一种高性能服务器架构系统及数据处理方法 | |
CN110177118A (zh) | 一种基于rdma的rpc通信方法 | |
EP0889623A2 (en) | System and method for efficient remote disk I/O | |
CN104735077B (zh) | 一种使用环形缓存和环形队列实现udp高效并发的方法 | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度系统及服务器集群 | |
US8539089B2 (en) | System and method for vertical perimeter protection | |
CN102831018B (zh) | 低延迟先进先出消息交换系统 | |
CN101662483A (zh) | 云计算网络的缓存系统及其方法 | |
CN101964799A (zh) | 点到网隧道方式下地址冲突的解决方法 | |
EP1589424A2 (en) | Vertical perimeter framework for providing application services in multi-CPU environments | |
US8832215B2 (en) | Load-balancing in replication engine of directory server | |
CN109697120A (zh) | 用于应用迁移的方法、电子设备 | |
CN113259415B (zh) | 一种网络报文处理方法、装置及网络服务器 | |
CN110535811B (zh) | 远端内存管理方法及系统、服务端、客户端、存储介质 | |
CN105357271B (zh) | 一种信息处理方法及对应装置 | |
CN114598746B (zh) | 基于智能网卡的服务器间负载均衡性能优化方法 | |
CN105681426A (zh) | 异构系统 | |
CN110445580A (zh) | 数据发送方法及装置、存储介质、电子装置 | |
CN110535959A (zh) | 一种传输数据的方法、装置和计算机可读存储介质 | |
CN107920035B (zh) | 用于确定性交换式以太网的多核处理器类型装置、系统及运载工具 | |
CN109951332B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190405 |