一种访问图片的方法、系统和图片服务器的制造方法

文档序号:7980770阅读:148来源:国知局
一种访问图片的方法、系统和图片服务器的制造方法
【专利摘要】本发明提供了一种图片访问的方法、系统和图片服务器,其中方法包括:客户端依据请求的图片URL直接向图片所在的服务器发起访问以获取对应的图片,如果在设定时间内获取成功,则展现获取的图片,结束流程;否则执行步骤S2;S2、从缓存cache节点上获取图片URL对应的图片,如果获取成功,则展现获取的图片,结束流程;否则,执行步骤S3;S3、cache节点将请求的图片URL发送给图片服务器;S4、图片服务器将请求的图片URL放入不可直接访问图片集合,并在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取,将抓取到的图片存储在cache节点上。本发明能够提高实时访问图片的速度和可靠性。
【专利说明】—种访问图片的方法、系统和图片服务器
【【技术领域】】
[0001]本发明涉及计算机应用【技术领域】,特别涉及一种访问图片的方法、系统和图片服务器。
【【背景技术】】
[0002]随着网络技术的不断发展,网络上的信息量呈爆炸式的速度增长,通过网络获取信息的用户也不断增加,如何提高用户的访问速度和稳定性是一直以来的研究重点,特别是对于图片这种大数据量的信息。
[0003]诸如图片标注系统、图片搜索系统、图片展示系统等常常会面临大规模的用户对图片进行访问的情况,图片的获取、展现速度和效果是影响用户体验的最关键因素。现有技术中如果用户要访问某个图片,则通过客户端向图片服务器发送该图片的URL,图片服务器接收到该URL后到对应的网站上获取该URL对应的图片返回给客户端。然而常常因为图片所在网站的原因或者网络的原因会造成某些图片的URL不可访问,这就使得用户在实时请求访问图片时,可能造成图片访问失败或者访问速度过慢,也就是说,速度和可靠性无法得到保证。

【发明内容】

[0004]本发明提供了一种访问图片的方法、系统和图片服务器,以便于提高实时访问图片的速度和可靠性。
[0005]具体技术方案如下:
[0006]一种图片访问的方法,该方法包括:
[0007]S1、客户端依据请求的图片URL直接向图片所在的服务器发起访问以获取对应的图片,如果在设定时间内获取成功,则展现获取的图片,结束流程;如果在设定时间内获取失败,执行步骤S2 ;
[0008]S2、从缓存cache节点上获取所述图片URL对应的图片,如果获取成功,则展现获取的图片,结束流程;否则,执行步骤S3 ;
[0009]S3、所述cache节点将所述请求的图片URL发送给图片服务器;
[0010]S4、所述图片服务器将所述请求的图片URL放入不可直接访问图片集合,并在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取,将抓取到的图片存储在cache节点上。
[0011]根据本发明一优选实施例,所述图片服务器将抓取到的图片预处理成缩略图后存储在cache节点上。
[0012]根据本发明一优选实施例,所述cache节点是预先确定的哈希空间中的N个节点,所述N为大于I的整数。
[0013]根据本发明一优选实施例,所述图片服务器将抓取到的图片存储在cache节点上具体包括:对抓取到的图片的图片URL进行编码后哈希映射到所述哈希空间中,将所述抓取到的图片存储到哈希映射值右侧最临近的cache节点上;
[0014]所述从cache节点上获取所述图片URL对应的图片具体包括:对图片URL进行编码后哈希映射到所述哈希空间中,从哈希映射值右侧最临近的cache节点上获取对应的图片。
[0015]根据本发明一优选实施例,对图片URL进行编码具体包括:
[0016]将图片URL中的预设字符片段作为编码单元,其他单字符作为编码单元,所述预设字符片段为图片URL通常所共有的字符片段;
[0017]基于图片URL中的各编码单元采用线性编码算法进行编码,将编码后的内容中不可传输的字符替代为安全字符。
[0018]根据本发明一优选实施例,该方法还包括:
[0019]如果所述哈希空间中有cache节点故障或被删除,则将故障或被删除的cache节点上的图片转存到其右侧最临近的cache节点上;
[0020]如果所述哈希空间中新增cache节点,则将新增cache节点与其左侧最临近的cache节点之间的哈希映射值对应的图片存储在新增cache节点上。
[0021]根据本发明一优选实施例,该方法还包括:
[0022]当发生cache节点故障、新增或被删除后,所述图片服务器根据cache节点的负载情况在所述哈希空间上进行cache节点位置的动态调整;
[0023]所述动态调整包括:将负载超重的cache节点位置向左移动,或者,将负载超重的cache节点左侧最临近的cache节点位置向右移动。
[0024]根据本发明一优选实施例,所述步骤S4还包括:所述图片服务器将抓取到的图片存储在本地;
[0025]在所述步骤S4之前还包括:所述图片服务器查询本地是否存在所述请求的图片URL对应的图片,如果是,则直接将对应的图片存储在Cache节点上,并由Cache节点将对应的图片返回给客户端,结束流程;否则,继续执行所述步骤S4。
[0026]一种图片访问的系统,该系统包括:
[0027]客户端,用于依据请求的图片URL直接向图片所在的服务器发起访问以获取对应的图片,如果在设定时间内获取成功,则展现获取的图片;如果在设定时间内获取失败,则从缓存cache节点上获取所述图片URL对应的图片,如果获取成功,则展现获取的图片,否则触发cache节点提供所述请求的图片URL ;
[0028]cache节点,用于受到所述客户端的触发后,将所述请求的图片URL提供给图片服务器;
[0029]图片服务器,用于将所述图片URL放入不可直接访问图片集合,并在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取,将抓取到的图片存储在cache节点上。
[0030]根据本发明一优选实施例,所述cache节点是预先确定的哈希空间中的N个节点,所述N为大于I的整数。
[0031]一种图片访问的图片服务器,该图片服务器包括:
[0032]URL管理单元,用于获取到请求的图片URL后,将所述请求的图片URL放入不可直接访问图片集合;[0033]图片抓取单元,用于在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取;
[0034]图片存储单元,用于将所述图片抓取单元抓取到的图片存储在缓存cache节点上,以便客户端能够在直接向图片所在的服务器获取对应图片失败时从cache节点上获取所述图片URL对应的图片。
[0035]根据本发明一优选实施例,所述图片存储单元将所述图片抓取单元抓取到的图片预处理成缩略图后存储在cache节点上。
[0036]根据本发明一优选实施例,所述cache节点是预先确定的哈希空间中的N个节点,所述N为大于I的整数。
[0037]根据本发明一优选实施例,所述图片存储单元包括:
[0038]编码子单元,用于对所述图片抓取单元抓取到的图片的图片URL进行编码后哈希映射到所述哈希空间中;
[0039]存储子单元,用于将所述抓取到的图片存储到所述编码子单元得到的哈希映射值右侧最临近的cache节点上。
[0040]根据本发明一优选实施例,所述编码子单元具体将图片URL中的预设字符片段作为编码单元,其他单字符作为编码单元,所述预设字符片段为图片URL通常所共有的字符片段;基于图片URL中的各编码单元采用线性编码算法进行编码,将编码后的内容中不可传输的字符替代为安全字符。
[0041]根据本发明一优选实施例,该图片服务器还包括:
[0042]节点管理单元,用于如果所述哈希空间中有cache节点故障或被删除,则将故障或被删除的cache节点上的图片转存到其右侧最临近的cache节点上;如果所述哈希空间中新增cache节点,则将新增cache节点与其左侧最临近的cache节点之间的哈希映射值对应的图片存储在新增cache节点上。
[0043]根据本发明一优选实施例,该图片服务器还包括:
[0044]节点调整单元,用于当发生cache节点故障、新增或被删除后,根据cache节点的负载情况在所述哈希空间上进行cache节点位置的动态调整,所述动态调整包括:将负载超重的cache节点位置向左移动,或者,将负载超重的cache节点左侧最临近的cache节点位置向右移动。
[0045]所述图片存储单元,还用于将所述图片抓取单元抓取到的图片存储在本地;
[0046]所述URL管理单元在获取到请求的图片URL后,首先查询本地是否存在所述请求的图片URL对应的图片,如果是,则触发所述图片存储单元直接将对应的图片存储在Cache节点上,以便由Cache节点将对应的图片返回给客户端,否则,继续执行将所述请求的图片URL放入不可直接访问图片集合的操作。
[0047]由以上技术方案可以看出,本发明通过将实时访问不成功的图片放至不可直接访问图片集合中,图片服务器在网络空闲时对不可直接访问图片集合中的图片URL进行图片线下抓取并存于cache节点上,以便客户端在请求的图片URL在不可直接访问图片集合中时,能够从cache节点上获取对应图片。提高了图片访问的可靠性,相比较实时访问图片时可能出现的访问速度过慢的问题也提高了访问速度。【【专利附图】

【附图说明】】
[0048]图1为本发明实施例一提供的访问图片的方法流程图;
[0049]图2为本发明实施例二提供的存储图片至cache节点的方法流程图;
[0050]图3为本发明实施例二提供的一个hash空间示意图; [0051]图4为本发明实施例二提供的hash空间上删除一个cache节点的示意图;
[0052]图5为本发明实施例二提供的hash空间上新增一个cache节点的示意图;
[0053]图6为本发明实施例提供的图片访问的系统结构图;
[0054]图7为本发明实施例三提供的图片服务器结构图。
【【具体实施方式】】
[0055]为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0056]实施例一、
[0057]在本实施例中,采用了一个不可访问图片集合。如其字面所示,不可直接访问图片集合中的图片指的是那些图片所在网站异常或者图片访问速度很低的图片。另外,不可直接访问图片集合中的图片URL是可以调整的,因为互联网的环境本身就在不断的变化,有些网站可能会由于机器故障等原因关闭,从而导致一些原本可以访问的图片无法再访问,或者一些网站由于负载过重使得原先访问较快的图片变得访问很慢甚至不可访问。具体将在图1所示的访问图片的方法中体现,如图1所示,该方法可以包括以下步骤:
[0058]步骤101:客户端依据请求的图片URL直接向图片所在的服务器发起访问以获取对应的图片,如果在设定时间内获取成功,则执行步骤102 ;如果在设定时间内获取失败,执行步骤103。
[0059]客户端在进行图片访问时,首先直接向图片所在的服务器发起访问,这样对本发明涉及的图片访问系统带来较小的压力。本步骤中的设定时间能够保证能够从图片所在的服务器正常地获取图片,也就是说,通常情况下如果网站的服务器正常,则在该设定时间内客户端是能够成功获取图片的。如果在设定时间内图片所在服务器返回了指示获取失败的响应,例如返回400、404等响应,或者在设定时间内没有完成图片加载,说明加载速度过慢,也认为在设定时间内获取失败。
[0060]步骤102:展现获取的图片,结束流程。
[0061]步骤103:从缓存(cache)节点上获取请求的图片URL对应的图片,如果获取成功,则执行步骤102 ;否则执行步骤104。
[0062]如果客户端不能通过直接访问的方式获取对应图片,则从cache节点上获取请求的图片URL对应的图片,这些图片是图片服务器在网络空闲时进行线下抓取并存储在cache节点上的,该部分内容将在步骤105中详细描述。
[0063]此处如果在cache节点上存在图片URL对应的图片通常会获取成功,然而也可能即便cache节点上存在图片URL对应的图片,但可能因为图片所在的cache节点状态变化所引起的不可访问造成获取失败,此处同样可以认为在一定时间内如果cache节点返回指示获取失败的响应,或者在一定时间内没有完成图片加载,则认为获取失败。
[0064]步骤104:cache节点将请求的图片URL发送给图片服务器。[0065]如果cache节点上尚没有请求的图片URL对应的图片,则由cache节点通知给图片服务器进行线下抓取,即步骤105。
[0066]步骤105:图片服务器将请求的图片URL放入不可直接访问图片集合,并在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取,将抓取到的图片存储在cache节点上。
[0067]对于不可直接访问到的图片集合中的图片URL,图片服务器会在网络空闲的时候线下抓取对应图片,在本地存储的同时缓存在cache节点上,以便对不可直接访问图片集合中的图片能够有一定几率从cache节点上获取。这种方式能够在网站正常的情况下抓取到对应图片放至cache节点上备用,一方面cache节点采用缓存(存在内存中)的方式存储图片,相比较图片服务器中采用硬盘的方式存储图片,进行图片访问时速度更快,另一方面也避免了所有图片都从图片服务器上获取对图片服务器造成的性能压力。
[0068]另外,本步骤一种优选的实施方式是,图片服务器接收到请求的图片的URL后,首先在本地查询是否存在该图片URL对应的图片,如果有,则直接存储在Cache节点上,并由Cache节点返回给客户端。否则,将请求的图片URL放入不可直接访问图片集合,并在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取,将抓取到的图片存储在cache节点上。这样做的好处在于,通常图片服务器在本地的存储空间要比Cache节点大得多,在收到请求的图片的URL后,首先在本地进行查询,如果查询到,则说明图片在之前空闲的时候已经抓取过这张图片,不需要重新抓取了,也就不需要将这个图片URL再次放入不可直接访问图片集合,直接将这张图片返回给Cache节点并由Cache节点存储和返回给客户端,避免下次客户端请求这张图片时,再次请求图片服务器,从而减轻图片服务器的负担。
[0069]为了减少cache节点的存储压力,图片服务器可以将线下抓取到的图片预处理成缩略图后存储在cache节点上,当然如果不考虑存储压力也可以直接存储原始图片。
[0070]通常hash空间中的cache节点存在多个,图片服务器在将抓取到的图片缓存在cache节点上时可以按照现有技术中的方式,将图片URL进行编码后,取哈希值,按照预设的哈希值与cache节点的对应关系,将图片存储在哈希值对应的cache节点上。
[0071]由于cache节点存在故障宕机、添加或删除的可能,因此为了适应这些情况下仍能保证从cache节点上访问图片的可靠性,本发明还提供了 一种新的Cache选择方法,下面通过实施例二进行详细描述。
[0072]实施例二、
[0073]图2为本发明实施例二提供的存储图片至cache节点的方法流程图,首先说明以下hash空间的分配状况,预先确定hash空间,例如O至232或者O至264作为hash空间,对hash空间进行N等分,每个N等分点作为一个cache节点,如图3所示,圆形的点为初始分配后的cache节点。当图片服务器要将抓取到的图片缓存到cache节点上时,如图2所示,执行以下步骤:
[0074]步骤201:对图片URL进行编码后哈希映射到上述hash空间中。
[0075]在对图片URL进行编码时,需要唯一且能够在cache节点上找到对应的图片,另外也不希望图片URL以明文的形式展现,同时编码算法也不能太复杂以增加计算负担,因此在本发明实施例中可以采用一种改进的base64算法来对图片URL进行编码,具体可以包括:
[0076]首先将图片URL中的预设字符片段作为编码单元,其他单字符作为编码单元,其中预设字符片段为图片URL通常所共有的字符片段,例如“http://”、“.Com”、“.jpg”、“.gif”、“.png”等作为编码单元。
[0077]然后基于图片URL中的各编码单元采用base64算法进行编码,将编码后的内容中引起歧义或发生丢失等不可传输的字符替代为安全字符。例如,将“ + 和“=”分别采用”和替代。需要说明的是,在基于图片URL中的各编码单元进行编码时,除了base64之外也可以采用其他线性编码的算法。
[0078]步骤202:将该图片存储到hash映射值右侧最临近的cache节点上。
[0079]假设图片URL进行编码后hash映射值在hash空间上为图3中菱形的点,则将图片存储到hash映射值右侧最邻近的cache节点2上(如虚线箭头所示)。
[0080]步骤203:如果cache节点状态发生变化,则:如果有cache节点故障或者被删除,则将故障或者被删除的cache节点上的图片转存到其右侧最临近的cache节点上;如果新增cache节点,则将新增cache节点与其左侧最临近cache节点之间的hash映射值对应的图片存储在新增cache节点上。
[0081]如图4所示,假设cache节点2被删除,则cache节点2上的图片转存到cache节点3上,如图4中虚线箭头所示。这样其他cache节点上的图片都不会发生改变,不会给后端的图片服务器造成瞬间的压力。
[0082]如图5所示,假设在cache节点3和cache节点4之间新增cache节点6,则将cache节点3与cache节点6之间的hash映射值对应的图片存储在新增的cache节点6上。该部分图片在cache节点4上也存储有,但后续由于这部分图片的访问都发生在cache节点6上,cache节点4上的这部分图片会随着时间的推移老化被删除。
[0083]如果采用了实施例二中所示的方式将图片存储在对应cache节点上,那么在实施例一的步骤103中,客户端从cache节点上获取URL对应的图片时,首先对该URL进行编码后哈希映射到hash空间中,然后从该图片hash映射值右侧最临近的cache节点上获取该URL对应的图片。
[0084]另外,当cache节点故障、新增或被删除时,会造成cache节点之间由原来的等分点变成距离不均衡,这就会造成有些cache节点的负载较重,有些cache节点的负载较轻。这种情况下,图片服务器可以根据cache节点的负载情况在hash空间上进行cache节点位置的动态调整。
[0085]其中动态调整的方式可以为:将负载超重的cache节点位置向左移动,或者,将负载超重的cache节点左侧最临近的cache节点位置向右移动。
[0086]如果原先图3中所示的平衡状态中,cache节点3被删除,cache节点4的负载逐渐增加,超重时可以将cache节点的位置左移,或者,将cache节点2的位置右移。
[0087]在进行上述动态调整后,可能会存在访问图片时无法从cache节点上找到对应的图片,例如,cache节点3被删除后,cache节点4位置左移,左移部分的哈希值对应的图片在访问时会到cache节点5上查找,但却是在cache节点4上存储,这就会造成无法从cache节点上获取到对应图片。这种情况下,cache节点同样会将该图片URL发送至图片服务器(也就是说图片访问“穿透”至图片服务器),图片服务器抓取对应的图片并按照实施例二中所述方式存储至对应的cache节点上。接续上例,图片服务器通过这种方式就能够将cache节点4发生左移的部分的哈希值对应的图片逐渐存储到cache节点5上,后续从cache节点5上就能够直接访问这部分图片。
[0088]本发明所提供的图片访问的系统如图6所示,包括客户端、图片服务器和一个以上的cache。
[0089]客户端首先依据请求的图片URL直接向图片所在的服务器发起访问以获取对应的图片,如果在设定时间内获取成功,则展现获取的图片,结束操作;如果在设定时间内获取失败,则从cache节点上获取所述图片URL对应的图片,如果获取成功,则展现获取的图片,否则触发cache节点提供所述请求的图片URL。
[0090]cache节点受到所述客户端的触发后,将所述请求的图片URL提供给图片服务器。
[0091]图片服务器将所述图片URL放入不可直接访问图片集合,并在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取,将抓取到的图片存储在cache节点上。
[0092]其中cache节点是预先确定的哈希空间中的N个节点,优选地,初始时可以是哈希空间中的N等分点,所述N为大于I的整数。cache节点可以是独立的服务器,也可以是图片服务器中具有存储功能的单元,例如图片服务器中的硬盘。
[0093]下面通过实施例三对其中的图片服务器的结构进行详细描述。
[0094]实施例三、
[0095]图7为本发明实施例三提供的图片服务器结构图,如图7所示,该图片服务器具体包括:URL管理单元700、图片抓取单元710和图片存储单元720。
[0096]URL管理单元700,用于获取到请求的图片URL后,将请求的图片URL放入不可直接访问图片集合。
[0097]客户端在从cache节点上无法获取到对应图片时,由cache节点向图片服务器提供请求的图片URL,触发URL管理单元700执行操作。
[0098]图片抓取单元710,用于在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取。
[0099]图片存储单元720,用于将图片抓取单元710抓取到的图片存储在cache节点上,以便客户端能够在直接向图片所在的服务器获取对应图片失败时从cache节点上获取图片URL对应的图片。
[0100]为了减少cache节点的存储压力,图片存储单元720可以将图片抓取单元710抓取到的图片预处理成缩略图后存储在cache节点上,当然如果不考虑存储压力也可以直接存储原始图片。
[0101]上述cache节点可以是预先确定的哈希空间中的N个节点,N为大于I的整数。优选地,可以是哈希空间中的N等分点。
[0102]对应于这种情况,图片存储单元720在将抓取到的图片缓存在cache节点上时可以按照现有技术中的方式,将图片URL进行编码后,取哈希值,按照预设的哈希值与cache节点的对应关系,将图片存储在哈希值对应的cache节点上。由于cache节点存在故障岩机、添加或删除的可能,因此为了适应这些情况下仍能保证从cache节点上访问图片的可靠性,本发明还提供了一种新的图片存储单元的结构,如图7所示,图片存储单元720可以包括:编码子单元721和存储子单元722。[0103]编码子单元721,用于对图片抓取单元710抓取到的图片的图片URL进行编码后哈希映射到哈希空间中。
[0104]具体可以将图片URL中的预设字符片段作为编码单元,其他单字符作为编码单元,预设字符片段为图片URL通常所共有的字符片段;基于图片URL中的各编码单元采用线性编码算法进行编码,将编码后的内容中不可传输的字符替代为安全字符。其中预设字符片段为图片URL通常所共有的字符片段,例如“http://”、“.com”、' jpg”、“.gif”、“.png”等作为编码单元。
[0105]存储子单元722,用于将抓取到的图片存储到编码子单元721得到的哈希映射值右侧最临近的cache节点上。
[0106]为了适应cache节点状态变化的情况,该图片服务器还包括:节点管理单元730,用于如果哈希空间中有cache节点故障或被删除,则将故障或被删除的cache节点上的图片转存到其右侧最临近的cache节点上;如果哈希空间中新增cache节点,则将新增cache节点与其左侧最临近的cache节点之间的哈希映射值对应的图片存储在新增cache节点上。
[0107]另外,当cache节点故障、新增或被删除时,会造成cache节点之间由原来的等分点变成距离不均衡,这就会造成有些cache节点的负载较重,有些cache节点的负载较轻。这种情况下,图片服务器可以根据cache节点的负载情况在hash空间上进行cache节点位置的动态调整。此时,该图片服务器还包括:
[0108]节点调整单元740,用于当发生cache节点故障、新增或被删除后,根据cache节点的负载情况在哈希空间上进行cache节点位置的动态调整,动态调整包括:将负载超重的cache节点位置向左移动,或者,将负载超重的cache节点左侧最临近的cache节点位置向右移动。
[0109]另外,存在一种优选的实施方式,即图片存储单元720,还用于将图片抓取单元抓取到的图片存储在本地。
[0110]URL管理单元700在获取到请求的图片URL后,首先查询本地是否存在请求的图片URL对应的图片,如果是,则触发图片存储单元720直接将对应的图片存储在Cache节点上,以便由Cache节点将对应的图片返回给客户端,否则,继续执行将请求的图片URL放入不可直接访问图片集合的操作。
[0111]本发明提供的上述方式可以用于任意图片访问的应用中,在此以图片标注系统为例,在图片搜索中为了提高图片搜索的准确性和召回率,通过“众包”的方式对图片进行标注,标注的数据可以作为图片机器学习的样本数据。具体地,向用户组展示同一张图片,通过用户组对同一张图片进行关键词标注,当用户组标注的关键词满足一致性要求时,这个关键词就被标注系统作为该图片的一个标签,同时该关键词在后续就被作为“禁用词”不能继续进行标注。当禁用词越来越多时,就代表图片的信息越来越丰富,达到一定数量后,该图片的标注任务就完成了,就不再向用户展示该图片。在标注系统向用户组展示图片时,需要对图片进行访问,该访问过程就可以采用本发明的图片访问方式。
[0112]由以上描述可以看出,本发明提供的方法和装置具备以下优点:
[0113]I)相比较实时访问图片时出现的访问失败的问题,提高了图片访问的可靠性和效率,同时相比较实时访问图片时出现的访问速度过慢的问题也提高了访问速度。[0114]2)在本发明实施例中提供的cache机制,能够在节省存储资源的前提下,灵活适应cache故障、新增或删除所带来的影响,提高图片访问的流畅性。
[0115]3)支持大规模的用户访问,提高大规模访问情况下的访问速度。
[0116]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种图片访问的方法,其特征在于,该方法包括: 51、客户端依据请求的图片URL直接向图片所在的服务器发起访问以获取对应的图片,如果在设定时间内获取成功,则展现获取的图片,结束流程;如果在设定时间内获取失败,执行步骤S2 ; 52、从缓存cache节点上获取所述图片URL对应的图片,如果获取成功,则展现获取的图片,结束流程;否则,执行步骤S3 ; 53、所述cache节点将所述请求的图片URL发送给图片服务器; 54、所述图片服务器将所述请求的图片URL放入不可直接访问图片集合,并在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取,将抓取到的图片存储在cache节点上。
2.根据权利要求1所述的方法,其特征在于,所述图片服务器将抓取到的图片预处理成缩略图后存储在cache节点上。
3.根据权利要求1所述的方法,其特征在于,所述cache节点是预先确定的哈希空间中的N个节点,所述N为大于I的整数。
4.根据权利要求3所述的方法,其特征在于,所述图片服务器将抓取到的图片存储在cache节点上具体包括:对抓取到的图片的图片URL进行编码后哈希映射到所述哈希空间中,将所述抓取到的图片存储到哈希映射值右侧最临近的cache节点上; 所述从cache节点上获取所述图片URL对应的图片具体包括:对图片URL进行编码后哈希映射到所述哈希空间中,从哈希映射值右侧最临近的cache节点上获取对应的图片。
5.根据权利要求4所述的方法,其特征在于,对图片URL进行编码具体包括: 将图片URL中的预设字符片段作为编码单元,其他单字符作为编码单元,所述预设字符片段为图片URL通常所共有的字符片段; 基于图片URL中的各编码单元采用线性编码算法进行编码,将编码后的内容中不可传输的字符替代为安全字符。
6.根据权利要求4所述的方法,其特征在于,该方法还包括: 如果所述哈希空间中有cache节点故障或被删除,则将故障或被删除的cache节点上的图片转存到其右侧最临近的cache节点上; 如果所述哈希空间中新增cache节点,则将新增cache节点与其左侧最临近的cache节点之间的哈希映射值对应的图片存储在新增cache节点上。
7.根据权利要求6所述的方法,其特征在于,该方法还包括: 当发生cache节点故障、新增或被删除后,所述图片服务器根据cache节点的负载情况在所述哈希空间上进行cache节点位置的动态调整; 所述动态调整包括:将负载超重的cache节点位置向左移动,或者,将负载超重的cache节点左侧最临近的cache节点位置向右移动。
8.根据权利要求1所述的方法,其特征在于,所述步骤S4还包括:所述图片服务器将抓取到的图片存储在本地; 在所述步骤S4之前还包括:所述图片服务器查询本地是否存在所述请求的图片URL对应的图片,如果是,则直接将对应的图片存储在Cache节点上,并由Cache节点将对应的图片返回给客户端,结束流程;否则,继续执行所述步骤S4。
9.一种图片访问的系统,其特征在于,该系统包括: 客户端,用于依据请求的图片URL直接向图片所在的服务器发起访问以获取对应的图片,如果在设定时间内获取成功,则展现获取的图片;如果在设定时间内获取失败,则从缓存cache节点上获取所述图片URL对应的图片,如果获取成功,则展现获取的图片,否则触发cache节点提供所述请求的图片URL ; cache节点,用于受到所述客户端的触发后,将所述请求的图片URL提供给图片服务器; 图片服务器,用于将所述图片URL放入不可直接访问图片集合,并在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取,将抓取到的图片存储在cache节点上。
10.根据权利要求8所述的系统,其特征在于,所述cache节点是预先确定的哈希空间中的N个节点,所述N为大于I的整数。
11.一种图片访问的图片服务器,其特征在于,该图片服务器包括: URL管理单元,用于获取到请求的图片URL后,将所述请求的图片URL放入不可直接访问图片集合; 图片抓取单元,用于在网络空闲时利用不可直接访问图片集合中的图片URL进行线下抓取; 图片存储单元,用于将所述图片抓取单元抓取到的图片存储在缓存cache节点上,以便客户端能够在直接向图片所在的服务器获取对应图片失败时从cache节点上获取所述图片URL对应的图片。
12.根据权利要求11所述的图片服务器,其特征在于,所述图片存储单元将所述图片抓取单元抓取到的图片预处理成缩略图后存储在cache节点上。
13.根据权利要求11所述的图片服务器,其特征在于,所述cache节点是预先确定的哈希空间中的N个节点,所述N为大于I的整数。
14.根据权利要求13所述的图片服务器,其特征在于,所述图片存储单元包括: 编码子单元,用于对所述图片抓取单元抓取到的图片的图片URL进行编码后哈希映射到所述哈希空间中; 存储子单元,用于将所述抓取到的图片存储到所述编码子单元得到的哈希映射值右侧最临近的cache节点上。
15.根据权利要求14所述的图片服务器,其特征在于,所述编码子单元具体将图片URL中的预设字符片段作为编码单元,其他单字符作为编码单元,所述预设字符片段为图片URL通常所共有的字符片段;基于图片URL中的各编码单元采用线性编码算法进行编码,将编码后的内容中不可传输的字符替代为安全字符。
16.根据权利要求14所述的图片服务器,其特征在于,该图片服务器还包括: 节点管理单元,用于如果所述哈希空间中有cache节点故障或被删除,则将故障或被删除的cache节点上的图片转存到其右侧最临近的cache节点上;如果所述哈希空间中新增cache节点,则将新增cache节点与其左侧最临近的cache节点之间的哈希映射值对应的图片存储在新增cache节点上。
17.根据权利要求16所述的图片服务器,其特征在于,该图片服务器还包括: 节点调整单元,用于当发生cache节点故障、新增或被删除后,根据cache节点的负载情况在所述哈希空间上进行cache节点位置的动态调整,所述动态调整包括:将负载超重的cache节点位置向左移动,或者,将负载超重的cache节点左侧最临近的cache节点位置向右移动。
18.根据权利要求11所述的图片服务器,其特征在于,所述图片存储单元,还用于将所述图片抓取单元抓取到的图片存储在本地; 所述URL管理单元在获取到请求的图片URL后,首先查询本地是否存在所述请求的图片URL对应的图片,如果是,则触发所述图片存储单元直接将对应的图片存储在Cache节点上,以便由Cache节点将对应的图片返回给客户端,否则,继续执行将所述请求的图片URL放入不可直接访问图片集合的操作。
【文档编号】H04L29/08GK103544149SQ201210236360
【公开日】2014年1月29日 申请日期:2012年7月9日 优先权日:2012年7月9日
【发明者】阮星华 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1