具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在对本发明实施例具体描述前,对本发明实施例会用到的四个名词进行定义:
短期缓存,是指对内容对象进行短时间的缓存,缓存时长相对较短;
长期缓存,是指对内容对象进行长时间的缓存,缓存时长相对较长;
短期缓存对象,被短期缓存的内容对象认为是短期缓存对象;
长期缓存对象,被长期缓存的内容对象认为是长期缓存对象。
具体来说,短期缓存就是说被缓存的内容对象只能短时间的缓存,超过较短的缓存时长后所述被缓存的内容对象即被删除,如:所述较短的缓存时长为1天,被缓存的内容对象的缓存时间超过1天即被删除;长期缓存就是说被缓存的内容对象可以长时间的缓存,只有超过较长的缓存时长后才能被删除,如:所述较长的缓存时长为30天,只有被缓存的内容对象的缓存时间超过30天,才将被缓存的内容对象删除。短期缓存和长期缓存是相对来说的,具体短期缓存的时长和长期缓存的时长本发明实施例不做具体限制,使用者可以自行定义。
参见图1,本发明实施例提供了一种分布式缓存的方法,包括以下内容。
102,第一缓存设备接收用户发送来的第一内容对象请求消息,所述第一内容对象请求消息包含第一内容对象的标识和所述第一内容对象对应的源服务器的互联网协议(英文全称为Internet Protocol,英文缩写为IP)地址,所述第一内容对象请求消息用于获得所述第一内容对象。
104,如果所述第一缓存设备没有缓存所述第一内容对象,则根据所述第一内容对象的标识获得第二缓存设备的地址。
所述第一内容对象的标识是可以用于唯一地确定所述第一内容对象的信息,可选地,所述第一内容对象的标识可以是所述第一内容对象在被发布时所使用的统一资源标识符(英文全称为Uniform Resource Identifier,英文缩写为URI),也可以是对所述第一内容对象进行消息摘要算法第五版(英文全称为Message Digest Algorithm 5,英文缩写为MD5)计算后获得的“指纹”信息,本发明实施例不做具体限制。所述第一内容对象对应的源服务器的IP地址可以为互联网协议第四版(英文全称为Internet Protocol Version 4,英文缩写为IPv4)地址或互联网协议第六版(英文全称为Internet Protocol Version 6,英文缩写为IPv6)地址。
可选的,所述第二缓存设备的地址和所述第一缓存设备的地址可以为IPv4地址或IPv6地址或媒体访问控制(英文全称为Media Access Control,英文缩写为MAC)地址。
所述第一缓存设备预先保存第一网络中的其他缓存设备的地址。可选地,所述第一网络可以是接入网络中汇聚交换机(英文全称为Aggregation Switch,英文缩写为AGG SW)的用户侧所连接的某个虚拟局域网(英文全称为VirtualLocal Area Network,英文缩写为VLAN),也可以是AGG SW用户侧的整个网络。
可选地,所述第一缓存设备可以通过预先配置将所述第一网络中的其他缓存设备的地址保存起来,例如可以通过命令配置将所述第一网络中的其他缓存设备的地址保存到所述第一缓存设备中。
可选地,所述第一缓存设备预先保存的所述第一网络中的其他缓存设备的地址,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行相关协议获得,例如,当所述其他缓存设备的地址为IPv4地址时,可以通过在所述第一网络中的缓存设备和所述AGG SW之间运行内部网关协议(英文全称为Interior Gateway Protocol,英文缩写为IGP)来获得,所述IGP可以为中间系统到中间系统(英文全称为Intermediate System to Intermediate System,英文缩写为IS-IS)协议或开放式最短路径优先协议(英文全称为Open ShortestPath First Interior Gateway Protocol,英文缩写为OSPF)。当所述其他缓存设备的地址为IPv6地址时,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行开放最短路径优先协议版本3(英文全称为Open Short PathFirst Protocol Version 3,英文缩写为OSPFv3)或边界网关协议版本4+(英文全称为Boarder Gateway Protocol 4+,英文缩写为BGP4+)来获得。当所述其他缓存设备的地址为MAC地址时,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行地址解析协议(英文全称为Address ResolutionProtocol,英文缩写为ARP)协议获得。所述其他缓存设备的地址为IPv4地址举例来说,如图2所示,缓存设备1、缓存设备2及缓存设备3通过AGG SW连接骨干网,所述缓存设备1、缓存设备2及缓存设备3同属于一个VLAN,缓存设备1、缓存设备2及缓存设备3分别连接不同的用户,所述第一缓存设备可以为所述缓存设备1、缓存设备2及缓存设备3中任意一个,例如所述第一缓存设备为所述缓存设备1,则所述缓存设备1需要保存所述缓存设备2和缓存设备3的IPv4地址,通过所述缓存设备1、缓存设备2及缓存设备3分别与所述AGG SW之间运行IGP协议,所述AGG SW利用IGP协议通过所述AGG SW与所述缓存设备1直连链路将所述缓存设备2和缓存设备3的IPv4地址发布给所述缓存设备1,所述缓存设备1缓存所述缓存设备2和缓存设备3的IPv4地址。
如果所述第一缓存设备没有缓存所述第一内容对象,则需要向用于缓存所述第一内容对象的所述第二缓存设备请求所述第一内容对象。
首先根据所述第一内容对象的标识通过分布式哈希表(英文全称为Distributed Hash Table,英文缩写为DHT)技术获得第二缓存设备的地址,以便向所述第二缓存设备请求所述第一内容对象。可选地,一种获得所述第二缓存设备的地址的具体过程如下。
对所述第一内容对象的标识进行哈希(英文全称为HASH)运算得到第一哈希值;根据所述第一哈希值和所述第一缓存设备中存有的第一对应关系得到第二缓存设备的地址,其中所述第一对应关系为所述第一哈希值与所述第二缓存设备的地址的对应关系。
可选地,通过所述第一哈希值获得所述第二缓存设备的地址可以通过以下方式实现。对所述第一缓存设备保存的所述第一网络中其他缓存设备的地址及所第一缓存设备的地址进行排序,并对排序过的缓存设备的地址进行编号,形成带编号的缓存设备地址表,也就形成了编号和缓存设备的地址的对应关系,每个编号对应一个缓存设备的地址,假设第二编号和所述第二缓存设备对应,通过对所述第一内容对象的标识进行哈希运算得到和所述第二编号对应的所述第一哈希值,也就能通过所述第一哈希值获得所述第二缓存设备的地址。例如,所述编号可以为0到n,其中n为所述其他缓存设备的数量,n+1则为所述第一网络中包含所述第一缓存设备的缓存设备总数量。对所述第一内容对象的标识进行哈希运算得到的第一哈希值,可以通过对所述第一内容对象的标识利用安全散列算法(英文全称为Secure Hash Algorithm,英文缩写为SHA)得到一个数字,将所述数字通过对所述缓存设备的总数量n+1进行取模操作得到第一哈希值,所述第一哈希值即对应到所述编号0到n中的某个编号值,由于所述编号中的每个编号值对应一个缓存设备的地址,进一步,所述第一哈希值也就对应到了所述缓存设备地址表中某个缓存设备的地址,将所述某个缓存设备的地址作为第二缓存设备的地址。更具体来说,例如所述第一缓存设备保存了所述第一网络中其他9个缓存设备的地址,加上所述第一缓存设备的地址,所述第一缓存设备保存了共10个缓存设备的地址,对这所述10个缓存设备的地址进行排序,可以按照地址从大到小进行排序,最大的缓存设备地址对应的编号为0,最小的缓存设备的地址对应的编号为9,排序好的缓存设备的地址分别对应到0到9中一个编号。对所述第一内容对象的标识利用SHA计算获得一个数字,将所述获得的数字通过对10取模运算的方式映射到所述缓存设备地址表中某一缓存设备地址,当所述获得的数字为11时,将11对10取模运算得到的值为1,则可以认为编号为1的缓存设备地址对应的缓存设备可能长期缓存了所述第一内容对象,将编号为1的缓存设备的地址作为所述第二缓存设备的地址。
可选地,所述第一网络中包括所述缓存设备和所述第二缓存设备的多个缓存设备都使用相同的HASH算法并且保存有所述第一对应关系,这样当有用户通过所述第一网络中所述多个缓存设备中的任一缓存设备获取所述第一内容对象时,也都可以通过所述相同的HASH算法和所述第一对应关系得到所述第二缓存设备的地址,以便向所述第二缓存设备请求所述第一内容对象。例如,所述第一网络中的所述多个缓存设备中包括第四缓存设备,当有用户通过所述第四缓存设备获取所述第一内容对象时,所述第四缓存设备通过对所述第一内容对象的标识进行哈希运算得到第一哈希值;根据所述第一哈希值和所述第四缓存设备中存有的所述第一对应关系得到所述第二缓存设备的地址,进一步可以向所述第二缓存设备请求所述第一内容对象。所述多个缓存设备是所述第一网络中的部分或全部缓存设备。
可选地,当所述第一缓存设备缓存了所述第一内容对象时,直接将所述第一内容对象发送给所述用户。
106,根据所述第二缓存设备的地址向所述第二缓存设备请求所述第一内容对象。
108,当所述第二缓存设备没有缓存所述第一内容对象时,根据所述第一内容对象对应的源服务器的IP地址从所述源服务器获取所述第一内容对象。
可选地,所述第一内容对象对应的源服务器可以为骨干网中缓存所述第一内容对象的缓存设备,也可以是骨干网中存储所述第一内容对象的服务器。
可选地,当所述第二缓存设备缓存有所述第一内容对象时,所述第一缓存设备直接将获取的所述第一内容对象发送给所述用户。
110,所述第一缓存设备向所述第二缓存设备发送所述第一内容对象,以便于所述第二缓存设备缓存所述第一内容对象。
所述第二缓存设备接收到所述第一缓存设备发送来的所述第一内容对象后,将所述第一内容对象缓存起来。这样,本实施例中的方法将原本需要保存在第一缓存设备的第一内容对象保存至多个缓存设备中的某一个缓存设备,例如本实施例中的第二缓存设备。在进行这样的操作后,即使第一缓存设备在收到用户发送的所述第一内容对象请求消息时没有缓存所述第一内容对象,也可以有机会从所述第二缓存设备为用户获取所述第一内容对象,从而可以减少对位于上一级网络中的所述服务器的访问,提高获取所述第一内容对象的速度,减少占用上一级网络的带宽。
可选地,即使第一缓存设备在收到用户发送的所述第一内容对象请求消息时缓存有所述第一内容对象,所述第二缓存设备还可以担任所述第一内容对象的备份缓存设备,以便在第一缓存设备出现内容读取故障时从所述第二缓存设备获取所述第一内容对象。
可选地,所述第一缓存设备从所述源服务器获得所述第一内容对象后,缓存所述第一内容对象,所述第一缓存设备缓存所述第一内容对象的时长小于所述第二缓存设备缓存所述第一内容对象的时长。所述第一缓存设备把所述第一内容对象作为短期缓存对象缓存起来,所述第二缓存设备把所述第一内容对象作为长期缓存对象缓存起来。所述第一缓存设备缓存所述第一内容对象以便于后续连接到所述第一缓存设备的用户访问所述第一内容对象时,不需要再到所述第一内容对象对应的源服务器或长期缓存所述第一内容对象的缓存设备获取,直接可以将所述第一内容对象发送给所述用户,提升了用户访问网络的速度,进一步,由于不需要到内容对象对应的源服务器获取所述第一内容对象,也减少了对骨干网带宽的占用。具体举例来说,例如,所述第一缓存设备缓存所述第一内容对象的时长为1天,所述第二缓存设备缓存所述第一内容对象的时长为30天,这样实现的好处在于,当所述第一缓存设备连接的用户访问网络频繁时,可以将用户访问的所述第一内容对象分散存储在所第二缓存设备上,所述第一缓存设备缓存的时长较短,可以尽快释放所述第一缓存设备的Cache空间,以便于缓存其他内容对象,所述第二缓存设备缓存所述第一内容对象的时长较长,当连接所述第一缓存设备的用户访问所述第一内容对象时,可以通过到所述第二缓存设备获取所述第一内容对象,这样所述第一缓存设备和所述第二缓存设备对用户可以体现为一个缓存设备,增大了缓存设备缓存的能力,提升了用户访问网络的速度,并且避免了频繁到所述第一内容对象对应的源服务器获取所述内容对象,减少了对骨干网带宽的占用,所述第二缓存设备缓存所述第一内容对象的时长可以为所述第一缓存设备缓存所述第一内容对象时长的2倍或2倍以上,本发明实施例不做具体限制。
可选地,所述第一缓存设备接收第三缓存设备发送来的第二内容对象请求消息,所述第二内容对象请求消息包含第二内容对象的标识,所述第二内容对象请求消息用于获得所述第二内容对象,所述第三缓存设备向所述第一缓存设备发送第二内容对象请求消息之前,通过所述第二内容对象标识获得所述第一缓存设备的地址,具体包括:
所述第三缓存设备对所述第二内容对象的标识进行哈希运算得到第二哈希值;
根据所述第二哈希值和所述第三缓存设备中存有的第二对应关系得到第一缓存设备的地址,其中所述第二对应关系为所述第二哈希值与第一缓存设备的地址的对应关系,所述第二对应关系的建立过程可以参见本发明实施例中所述第一对应关系的建立过程;
所述第一缓存设备向所述第三缓存设备发送响应消息,当所述第一缓存设备没有缓存所述第二内容对象时,所述响应消息不包含所述第二内容对象,当所述第一缓存设备缓存所述第二内容对象时,所述响应消息包含所述第二内容对象。
当所述第一缓存设备没有缓存所述第二内容对象时,所述第一缓存设备接收所述第三缓存设备发送来的第二内容对象,其中所述第二内容对象为所述第三缓存设备从与所述第二内容对象对应的源服务器获取的;
所述第一缓存设备作为所述第二内容对象的长期缓存设备缓存所述第二内容对象。
所述第一缓存设备、所述第二缓存设备、所述第三缓存设备和所述第四缓存设备位于接入网络中。
所述第一缓存设备、所述第二缓存设备、所述第三缓存设备和所述第四缓存设备可以为内容存储节点或具有缓存功能的路由器或具有缓存功能的交换机或具有缓存功能的其他网络设备。
参见图3,本发明实施例提供了另一种分布式缓存的方法,包括以下内容。
302,第一缓存设备接收用户发送来的第一内容对象请求消息,所述第一内容对象请求消息包含第一内容对象的标识,所述第一内容对象请求消息用于获得所述第一内容对象;
304,如果所述第一缓存设备没有缓存所述第一内容对象,则根据所述第一内容对象的标识获得第二缓存设备的地址;
306,所述第一缓存设备根据所述第二缓存设备的地址向所述第二缓存设备请求所述第一内容对象;
308,当所述第二缓存设备缓存有所述第一内容对象时,所述第一缓存设备接收所述第二缓存设备发送的所述第一内容对象;
310,所述第一缓存设备将所述第一内容对象发送给所述用户。
所述第一内容对象的标识是可以用于唯一地确定所述第一内容对象的信息,可选地,所述第一内容对象的标识可以是所述第一内容对象在被发布时所使用的URI,也可以是对所述第一内容对象进行MD5计算后获得的“指纹”信息,本发明实施例不做具体限制。
可选的,所述第二缓存设备的地址和所述第一缓存设备的地址可以为IPv4地址或IPv6地址或MAC地址。
所述第一缓存设备预先保存第一网络中的其他缓存设备的地址。可选地,所述第一网络可以是接入网络中AGG SW的用户侧所连接的某个VLAN,也可以是AGG SW用户侧的整个网络。
可选地,所述第一缓存设备可以通过预先配置将所述第一网络中的其他缓存设备的地址保存起来,例如可以通过命令配置将所述第一网络中的其他缓存设备的地址保存到所述第一缓存设备中。
可选地,所述第一缓存设备预先保存的所述第一网络中的其他缓存设备的地址,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行相关协议获得,例如,当所述其他缓存设备的地址为IPv4地址时,可以通过在所述第一网络中的缓存设备和所述AGG SW之间运行IGP来获得,所述IGP可以为IS-IS协议或OSPF。当所述其他缓存设备的地址为IPv6地址时,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行OSPFv3或BGP4来获得。当所述其他缓存设备的地址为MAC地址时,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行ARP协议获得。所述其他缓存设备的地址为IPv4地址举例来说,如图2所示,缓存设备1、缓存设备2及缓存设备3通过AGG SW连接骨干网,所述缓存设备1、缓存设备2及缓存设备3同属于一个VLAN,缓存设备1、缓存设备2及缓存设备3分别连接不同的用户,所述第一缓存设备可以为所述缓存设备1、缓存设备2及缓存设备3中任意一个,例如所述第一缓存设备为所述缓存设备1,则所述缓存设备1需要保存所述缓存设备2和缓存设备3的IPv4地址,通过所述缓存设备1、缓存设备2及缓存设备3分别与所述AGG SW之间运行IGP协议,所述AGG SW利用IGP协议通过所述AGG SW与所述缓存设备1直连链路将所述缓存设备2和缓存设备3的IPv4地址发布给所述缓存设备1,所述缓存设备1缓存所述缓存设备2和缓存设备3的IPv4地址。
如果所述第一缓存设备没有缓存所述第一内容对象,则需要向用于缓存所述第一内容对象的所述第二缓存设备请求所述第一内容对象。
首先根据所述第一内容对象的标识通过DHT技术获得第二缓存设备的地址,以便向所述第二缓存设备请求所述第一内容对象。可选地,一种获得所述第二缓存设备的地址的具体过程如下。
对所述第一内容对象的标识进行哈希运算得到第一哈希值;根据所述第一哈希值和所述第一缓存设备中存有的第一对应关系得到第二缓存设备的地址,其中所述第一对应关系为所述第一哈希值与所述第二缓存设备的地址的对应关系。
可选地,通过所述第一哈希值获得所述第二缓存设备的地址可以通过以下方式实现。对所述第一缓存设备保存的所述第一网络中其他缓存设备的地址及所述第一缓存设备的地址进行排序,并对排序过的缓存设备的地址进行编号,形成带编号的缓存设备地址表,也就形成了编号和缓存设备的地址的对应关系,每个编号对应一个缓存设备的地址,假设第二编号和所述第二缓存设备对应,通过对所述第一内容对象的标识进行哈希运算得到和所述第二编号对应的所述第一哈希值,也就能通过所述第一哈希值获得所述第二缓存设备的地址。例如,所述编号可以为0到n,其中n为所述其他缓存设备的数量,n+1则为所述第一网络中包含所述第一缓存设备的缓存设备总数量。对所述第一内容对象的标识进行哈希运算得到的第一哈希值,可以通过对所述第一内容对象的标识利用SHA得到一个数字,将所述数字通过对所述缓存设备的总数量n+1进行取模操作得到第一哈希值,所述第一哈希值即对应到所述编号0到n中的某个编号值,由于所述编号中的每个编号值对应一个缓存设备的地址,进一步,所述第一哈希值也就对应到了所述缓存设备地址表中某个缓存设备的地址,将所述某个缓存设备的地址作为第二缓存设备的地址。更具体来说,例如所述第一缓存设备保存了所述第一网络中其他9个缓存设备的地址,加上所述第一缓存设备的地址,所述第一缓存设备保存了共10个缓存设备的地址,对这所述10个缓存设备的地址进行排序,可以按照地址从大到小进行排序,最大的缓存设备地址对应的编号为0,最小的缓存设备的地址对应的编号为9,排序好的缓存设备的地址分别对应到0到9中一个编号。对所述第一内容对象的标识利用SHA计算获得一个数字,将所述获得的数字通过对10取模运算的方式映射到所述缓存设备地址表中某一缓存设备地址,当所述获得的数字为11时,将11对10取模运算得到的值为1,则可以认为编号为1的缓存设备地址对应的缓存设备可能长期缓存了所述第一内容对象,将编号为1的缓存设备的地址作为所述第二缓存设备的地址。
可选地,所述第一网络中包括所述缓存设备和所述第二缓存设备的多个缓存设备都使用相同的HASH算法并且保存有所述第一对应关系,这样当有用户通过所述第一网络中的所述多个缓存设备中的任一缓存设备获取所述第一内容对象时,也都可以通过所述相同的HASH算法和所述第一对应关系得到所述第二缓存设备的地址,以便向所述第二缓存设备请求所述第一内容对象。例如,所述第一网络中的所述多个缓存设备包括第四缓存设备,当有用户通过所述第四缓存设备获取所述第一内容对象时,所述第四缓存设备通过对所述第一内容对象的标识进行哈希运算得到第一哈希值;根据所述第一哈希值和所述第四缓存设备中存有的第一对应关系得到第二缓存设备的地址,进一步可以向所述第二缓存设备请求所述第一内容对象。所述多个缓存设备是所述第一网络中的部分或全部缓存设备。
可选地,当所述第一缓存设备缓存了所述第一内容对象时,直接将所述第一内容对象发送给所述用户。
所述第一缓存设备、所述第二缓存设备和所述第四缓存设备位于接入网络中。
所述第一缓存设备、所述第二缓存设备和所述第四缓存设备可以为内容存储节点或具有缓存功能的路由器或具有缓存功能的交换机或具有缓存功能的其他网络设备。
可见,本发明实施例提供了一种新的缓存方法,缓存设备可以通过到网络中的其他缓存设备为用户获取内容对象,从而避免了频繁到接入网络的上一级骨干网获取内容对象,提升了用户获取内容对象的速度,进一步也减少对骨干网带宽的占用。
参见图4,本发明实施例提供了一种缓存设备,包括以下内容。
所述缓存设备包括第一请求接收单元402、处理单元404、请求发送单元406、获取单元408和内容对象发送单元410,其中:
所述第一请求接收单元402,用于接收用户发送来的第一内容对象请求消息,所述第一内容对象请求消息包含第一内容对象的标识和所述第一内容对象对应的源服务器的IP地址,所述第一内容对象请求消息用于获得所述第一内容对象;
所述处理单元404,用于在所述缓存设备没有缓存所述第一内容对象时,根据所述第一内容对象的标识获得第二缓存设备的地址;
所述请求发送单元406,用于根据所述第二缓存设备的地址向所述第二缓存设备请求所述第一内容对象;
所述获取单元408,用于当所述第二缓存设备没有缓存所述第一内容对象时,根据所述第一内容对象对应的源服务器的IP地址从所述源服务器获取所述第一内容对象;
所述内容对象发送单元410,用于向所述第二缓存设备发送所述第一内容对象,以便于所述第二缓存设备缓存所述第一内容对象。
所述第一内容对象的标识是可以用于唯一地确定所述第一内容对象的信息,可选地,所述第一内容对象的标识可以是所述第一内容对象在被发布时所使用的URI,也可以是对所述第一内容对象进行MD5计算后获得的“指纹”信息,本发明实施例不做具体限制。所述第一内容对象对应的源服务器的IP地址可以为IPv4地址或IPv6地址。
可选的,所述第二缓存设备的地址和所述缓存设备的地址可以为IPv4地址或IPv6地址或MAC地址。
需要说明的是,在本实施例中,“所述缓存设备”是指包括第一请求接收单元402、处理单元404、请求发送单元406、获取单元408和内容对象发送单元410的缓存设备,而不是指“第二缓存设备”。
所述缓存设备预先保存第一网络中的其他缓存设备的地址。可选地,所述第一网络可以是AGG SW的用户侧所连接的某个VLAN,也可以是AGGSW用户侧的整个网络。
可选地,所述缓存设备可以通过预先配置将所述第一网络中的其他缓存设备的地址保存起来,例如可以通过命令配置将所述第一网络中的其他缓存设备的地址保存到所述缓存设备中。
可选地,所述缓存设备预先保存的所述第一网络中的其他缓存设备的地址,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行相关协议获得,例如,当所述其他缓存设备的地址为IPv4地址时,可以通过在所述第一网络中的缓存设备和所述AGG SW之间运行IGP来获得,所述IGP可以为IS-IS协议或OSPF。当所述其他缓存设备的地址为IPv6地址时,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行OSPFv3或BGP4+来获得。当所述其他缓存设备的地址为MAC地址时,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行ARP协议获得。所述其他缓存设备的地址为IPv4地址举例来说,如图2所示,缓存设备1、缓存设备2及缓存设备3通过AGG SW连接骨干网,所述缓存设备1、缓存设备2及缓存设备3同属于一个VLAN,缓存设备1、缓存设备2及缓存设备3分别连接不同的用户,所述缓存设备可以为所述缓存设备1、缓存设备2及缓存设备3中任意一个,例如所述缓存设备为所述缓存设备1,则所述缓存设备1需要保存所述缓存设备2和缓存设备3的IPv4地址,通过所述缓存设备1、缓存设备2及缓存设备3分别与所述AGG SW之间运行IGP协议,所述AGG SW利用IGP协议通过所述AGG SW与所述缓存设备1直连链路将所述缓存设备2和缓存设备3的IPv4地址发布给所述缓存设备1,所述缓存设备1缓存所述缓存设备2和缓存设备3的IPv4地址。
如果所述缓存设备没有缓存所述第一内容对象,所述请求发送单元406需要向用于缓存所述第一内容对象的所述第二缓存设备请求所述第一内容对象。
首先所述处理单元404根据所述第一内容对象的标识通过DHT技术获得第二缓存设备的地址,以便向所述第二缓存设备请求所述第一内容对象。可选地,一种获得所述第二缓存设备的地址的具体过程如下。
对所述第一内容对象的标识进行哈希运算得到第一哈希值;根据所述第一哈希值和所述缓存设备中存有的第一对应关系得到第二缓存设备的地址,其中所述第一对应关系为所述第一哈希值与所述第二缓存设备的地址的对应关系。
可选地,通过所述第一哈希值获得所述第二缓存设备的地址可以通过以下方式实现。对所述缓存设备保存的所述第一网络中其他缓存设备的地址及所缓存设备的地址进行排序,并对排序过的缓存设备的地址进行编号,形成带编号的缓存设备地址表,也就形成了编号和缓存设备的地址的对应关系,每个编号对应一个缓存设备的地址,假设第二编号和所述第二缓存设备对应,通过对所述第一内容对象的标识进行哈希运算得到和所述第二编号对应的所述第一哈希值,也就能通过所述第一哈希值获得所述第二缓存设备的地址。例如,所述编号可以为0到n,其中n为所述其他缓存设备的数量,n+1则为所述第一网络中包含所述缓存设备的缓存设备总数量。对所述第一内容对象的标识进行哈希运算得到的第一哈希值,可以通过对所述第一内容对象的标识利用SHA得到一个数字,将所述数字通过对所述缓存设备的总数量n+1进行取模操作得到第一哈希值,所述第一哈希值即对应到所述编号0到n中的某个编号值,由于所述编号中的每个编号值对应一个缓存设备的地址,进一步,所述第一哈希值也就对应到了所述缓存设备地址表中某个缓存设备的地址,将所述某个缓存设备的地址作为第二缓存设备的地址。更具体来说,例如所述缓存设备保存了所述第一网络中其他9个缓存设备的地址,加上所述缓存设备的地址,所述缓存设备保存了共10个缓存设备的地址,对这所述10个缓存设备的地址进行排序,可以按照地址从大到小进行排序,最大的缓存设备地址对应的编号为0,最小的缓存设备的地址对应的编号为9,排序好的缓存设备的地址分别对应到0到9中一个编号。对所述第一内容对象的标识利用SHA计算获得一个数字,将所述获得的数字通过对10取模运算的方式映射到所述缓存设备地址表中某一缓存设备地址,当所述获得的数字为11时,将11对10取模运算得到的值为1,则可以认为编号为1的缓存设备地址对应的缓存设备可能长期缓存了所述第一内容对象,将编号为1的缓存设备的地址作为所述第二缓存设备的地址。
可选地,所述第一网络中的包括所述缓存设备和所述第二缓存设备的多个缓存设备都使用相同的HASH算法并且保存有所述第一对应关系,这样当有用户通过所述第一网络中所述多个缓存设备中的任一缓存设备获取所述第一内容对象时,也都可以通过所述相同的HASH算法和所述第一对应关系得到所述第二缓存设备的地址,以便向所述第二缓存设备请求所述第一内容对象。例如,所述第一网络中的所述多个缓存设备包括第四缓存设备,当有用户通过所述第四缓存设备获取所述第一内容对象时,所述第四缓存设备通过对所述第一内容对象的标识进行哈希运算得到第一哈希值;根据所述第一哈希值和所述第四缓存设备中存有的第一对应关系得到第二缓存设备的地址,进一步可以向所述第二缓存设备请求所述第一内容对象。所述多个缓存设备是所述第一网络中的部分或全部缓存设备。
所述第二缓存设备接收到所述内容对象发送单元410发送来的所述第一内容对象后,将所述第一内容对象缓存起来。这样,将原本需要保存在所述缓存设备的第一内容对象保存至多个缓存设备中的某一个缓存设备,例如本实施例中的第二缓存设备。在进行这样的操作后,即使所述缓存设备在收到用户发送的所述第一内容对象请求消息时没有缓存所述第一内容对象,也可以有机会从所述第二缓存设备为用户获取所述第一内容对象,从而可以减少对位于上一级网络中的所述服务器的访问,提高获取所述第一内容对象的速度,减少占用上一级网络的带宽。
可选地,即使第一缓存设备在收到用户发送的所述第一内容对象请求消息时缓存有所述第一内容对象,所述第二缓存设备还可以担任所述第一内容对象的备份缓存设备,以便在第一缓存设备出现内容读取故障时从所述第二缓存设备获取所述第一内容对象。
可选地,所述缓存设备还包括缓存单元,用于当所述获取单元408根据所述第一内容对象标识从所述第一内容对象对应的源服务器获取所述第一内容对象之后,缓存所述第一内容对象,缓存所述第一内容对象的时长小于所述第二缓存设备缓存所述第一内容对象的时长。所述缓存设备把所述第一内容对象作为短期缓存对象缓存起来,所述第二缓存设备把所述第一内容对象作为长期缓存对象缓存起来。所述缓存设备的缓存单元缓存所述第一内容对象以便于后续连接到所述缓存设备的用户访问所述第一内容对象时,不需要再到所述第一内容对象对应的源服务器或长期缓存所述第一内容对象的缓存设备获取,直接可以将所述第一内容对象发送给所述用户,提升了用户访问网络的速度,进一步,由于不需要到内容对象对应的源服务器获取所述第一内容对象,也减少了对骨干网带宽的占用。具体举例来说,例如,所述缓存单元缓存所述第一内容对象的时长为1天,所述第二缓存设备缓存所述第一内容对象的时长为30天,这样实现的好处在于,当所述缓存设备连接的用户访问网络频繁时,可以将用户访问的所述第一内容对象分散存储在所第二缓存设备上,所述缓存设备缓存的时长较短,可以尽快释放所述缓存设备的Cache空间,以便于缓存其他内容对象,所述第二缓存设备缓存所述第一内容对象的时长较长,当连接所述缓存设备的用户访问所述第一内容对象时,可以通过到所述第二缓存设备获取所述第一内容对象,这样所述缓存设备和所述第二缓存设备对用户可以体现为一个缓存设备,增大了缓存设备缓存的能力,提升了用户访问网络的速度,并且避免了频繁到所述第一内容对象对应的源服务器获取所述内容对象,减少了对骨干网带宽的占用,所述第二缓存设备缓存所述第一内容对象的时长可以为所述缓存设备缓存所述第一内容对象时长的2倍或2倍以上,本发明实施例不做具体限制。
可选地,所述缓存设备包括第二请求接收单元和响应发送单元,其中:
所述第二请求接收单元,用于接收第三缓存设备发送来的第二内容对象请求消息,所述第二内容对象请求消息包含第二内容对象的标识,所述第二内容对象请求消息用于获得所述第二内容对象,所述第三缓存设备向所述缓存设备发送第二内容对象请求消息之前,通过所述第二内容对象标识获得所述缓存设备的地址,具体包括:
所述第三缓存设备对所述第二内容对象的标识进行哈希运算得到第二哈希值;
根据所述第二哈希值和所述第三缓存设备中存有的第二对应关系得到所述缓存设备的地址,其中所述第二对应关系为所述第二哈希值与所述缓存设备的地址的对应关系;
所述响应发送单元,用于向所述第三缓存设备发送响应消息,当所述缓存设备没有缓存所述第二内容对象时,所述响应消息不包含所述第二内容对象,当所述缓存设备缓存所述第二内容对象时,所述响应消息包含所述第二内容对象。
进一步,所述缓存设备还可以包括:
内容对象接收单元,用于当所述缓存单元没有缓存所述第二内容对象时,接收所述第三缓存设备发送来的第二内容对象,其中所述第二内容对象为所述第三缓存设备从与所述第二内容对象对应的源服务器获取的;
相应地,所述缓存单元还用于缓存所述第二内容对象。
可选地,当所述第二缓存设备缓存有所述第一内容对象时,所述第一缓存设备直接将获取的所述第一内容对象发送给所述用户。
可选地,所述第一内容对象对应的源服务器可以为骨干网中缓存所述第一内容对象的缓存设备,也可以是骨干网中存储所述第一内容对象的服务器。
可选地,本发明实施例提供的上述单元可以合并为一个或者多个。可选地,在实现时,所述第一请求接收单元402、所述请求发送单元406、所述内容对象发送单元410、所述第二请求接收单元和所述响应发送单元由一个或多个物理接口实现,所述处理单元404可以为处理器,所述缓存单元可以为Cache。所述一个或多个物理接口、处理器和Cache协同工作,使所述缓存设备完成了本实施例中执行的操作。
可选地,所述第一内容对象对应的源服务器可以为骨干网中缓存所述第一内容对象的存储设备,也可以是骨干网中存储所述第一内容对象的服务器。
所述缓存设备和所述第二缓存设备可以为内容存储节点或具有缓存功能的路由器或具有缓存功能的交换机或具有缓存功能的其他网络设备。
可选地,所述缓存设备可以是本发明实施例提供的一种分布式缓存的方法中的所述第一缓存设备。
参见图5,本发明实施例提供了一种缓存设备,包括以下内容。
所述缓存设备包括第一请求接收单元502、处理单元504、请求发送单元506、内容对象接收单元508和内容对象发送单元510,其中:
所述第一请求接收单元502,用于接收用户发送来的第一内容对象请求消息,所述第一内容对象请求消息包含第一内容对象的标识,所述第一内容对象请求消息用于获得所述第一内容对象;
所述处理单元504,用于当所述缓存设备没有缓存所述第一内容对象时,则根据所述第一内容对象的标识获得第二缓存设备的地址;
所述请求发送单元506,用于根据所述第二缓存设备的地址向所述第二缓存设备请求所述第一内容对象;
所述请求接收单元508,用于当所述第二缓存设备缓存有所述第一内容对象时,接收所述第二缓存设备发送的所述第一内容对象;
所述内容对象发送单元510,用于将所述第一内容对象发送给所述用户。
所述第一内容对象的标识是可以用于唯一地确定所述第一内容对象的信息,可选地,所述第一内容对象的标识可以是所述第一内容对象在被发布时所使用的URI,也可以是对所述第一内容对象进行MD5计算后获得的“指纹”信息,本发明实施例不做具体限制。
可选的,所述第二缓存设备的地址和所述缓存设备的地址可以为IPv4地址或IPv6地址或MAC地址。
所述缓存设备预先保存第一网络中的其他缓存设备的地址。可选地,所述第一网络可以是AGG SW的用户侧所连接的某个VLAN,也可以是AGGSW用户侧的整个网络。
可选地,所述缓存设备可以通过预先配置将所述第一网络中的其他缓存设备的地址保存起来,例如可以通过命令配置将所述第一网络中的其他缓存设备的地址保存到所述缓存设备中。
可选地,所述缓存设备预先保存的所述第一网络中的其他缓存设备的地址,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行相关协议获得,例如,当所述其他缓存设备的地址为IPv4地址时,可以通过在所述第一网络中的缓存设备和所述AGG SW之间运行IGP来获得,所述IGP可以为IS-IS协议或OSPF。当所述其他缓存设备的地址为IPv6地址时,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行OSPFv3或BGP4+来获得。当所述其他缓存设备的地址为MAC地址时,可以通过在所述第一网络中每个缓存设备和所述AGG SW之间运行ARP协议获得。所述其他缓存设备的地址为IPv4地址举例来说,如图2所示,缓存设备1、缓存设备2及缓存设备3通过AGG SW连接骨干网,所述缓存设备1、缓存设备2及缓存设备3同属于一个VLAN,缓存设备1、缓存设备2及缓存设备3分别连接不同的用户,所述缓存设备可以为所述缓存设备1、缓存设备2及缓存设备3中任意一个,例如所述缓存设备为所述缓存设备1,则所述缓存设备1需要保存所述缓存设备2和缓存设备3的IPv4地址,通过所述缓存设备1、缓存设备2及缓存设备3分别与所述AGG SW之间运行IGP协议,所述AGG SW利用IGP协议通过所述AGG SW与所述缓存设备1直连链路将所述缓存设备2和缓存设备3的IPv4地址发布给所述缓存设备1,所述缓存设备1缓存所述缓存设备2和缓存设备3的IPv4地址。
如果所述缓存设备没有缓存所述第一内容对象,则所述请求发送单元506需要向用于缓存所述第一内容对象的所述第二缓存设备请求所述第一内容对象。首先所述处理单元504根据所述第一内容对象的标识通过DHT技术获得第二缓存设备的地址,以便向所述第二缓存设备请求所述第一内容对象。可选地,一种获得所述第二缓存设备的地址的具体过程如下。
对所述第一内容对象的标识进行哈希运算得到第一哈希值;根据所述第一哈希值和所述缓存设备中存有的第一对应关系得到第二缓存设备的地址,其中所述第一对应关系为所述第一哈希值与所述第二缓存设备的地址的对应关系。
可选地,通过所述第一哈希值获得所述第二缓存设备的地址可以通过以下方式实现。对所述缓存设备保存的所述第一网络中其他缓存设备的地址及所述缓存设备的地址进行排序,并对排序过的缓存设备的地址进行编号,形成带编号的缓存设备地址表,也就形成了编号和缓存设备的地址的对应关系,每个编号对应一个缓存设备的地址,假设第二编号和所述第二缓存设备对应,通过对所述第一内容对象的标识进行哈希运算得到和所述第二编号对应的所述第一哈希值,也就能通过所述第一哈希值获得所述第二缓存设备的地址。例如,所述编号可以为0到n,其中n为所述其他缓存设备的数量,n+1则为所述第一网络中包含所述缓存设备的缓存设备总数量。对所述第一内容对象的标识进行哈希运算得到的第一哈希值,可以通过对所述第一内容对象的标识利用SHA得到一个数字,将所述数字通过对所述缓存设备的总数量n+1进行取模操作得到第一哈希值,所述第一哈希值即对应到所述编号0到n中的某个编号值,由于所述编号中的每个编号值对应一个缓存设备的地址,进一步,所述第一哈希值也就对应到了所述缓存设备地址表中某个缓存设备的地址,将所述某个缓存设备的地址作为第二缓存设备的地址。更具体来说,例如所述缓存设备保存了所述第一网络中其他9个缓存设备的地址,加上所述缓存设备的地址,所述缓存设备保存了共10个缓存设备的地址,对这所述10个缓存设备的地址进行排序,可以按照地址从大到小进行排序,最大的缓存设备地址对应的编号为0,最小的缓存设备的地址对应的编号为9,排序好的缓存设备的地址分别对应到0到9中一个编号。对所述第一内容对象的标识利用SHA计算获得一个数字,将所述获得的数字通过对10取模运算的方式映射到所述缓存设备地址表中某一缓存设备地址,当所述获得的数字为11时,将11对10取模运算得到的值为1,则可以认为编号为1的缓存设备地址对应的缓存设备可能长期缓存了所述第一内容对象,将编号为1的缓存设备的地址作为所述第二缓存设备的地址。
可选地,所述第一网络中包括所述缓存设备和所述第二缓存设备的多个缓存设备都使用相同的HASH算法并且保存有所述第一对应关系,这样当有用户通过所述第一网络中的所述多个缓存设备中任一缓存设备获取所述第一内容对象时,也都可以通过所述相同的HASH算法和所述第一对应关系得到所述第二缓存设备,以便向所述第二缓存设备请求所述第一内容对象。例如,所述多个缓存设备中包括第四缓存设备,当有用户通过所述第四缓存设备获取所述第一内容对象时,所述第四缓存设备通过对所述第一内容对象的标识进行哈希运算得到第一哈希值;根据所述第一哈希值和所述第四缓存设备中存有的第一对应关系得到第二缓存设备的地址,进一步可以向所述第二缓存设备请求所述第一内容对象。所述多个缓存设备是所述第一网络中的部分或全部缓存设备。
可选地,当所述第一缓存设备缓存了所述第一内容对象时,直接将所述第一内容对象发送给所述用户。
所述第一缓存设备、所述第二缓存设备和所述第四缓存设备位于接入网络中。
所述缓存设备、所述第二缓存设备和所述第四缓存设备可以为内容存储节点或具有缓存功能的路由器或具有缓存功能的交换机或具有缓存功能的其他网络设备。
可选地,本发明实施例提供的上述单元可以合并为一个或者多个。可选地,在实现时,所述第一请求接收单元502、所述请求发送单元506、所述内容对象接收单元508和所述内容对象发送单元510由一个或多个物理接口实现,所述处理单元504可以为处理器。所述一个或多个物理接口和处理器使所述缓存设备完成了本实施例中执行的操作。
可选地,当所述缓存设备缓存了所述第一内容对象时,所述内容对象发送单元510直接将所述第一内容对象发送给所述用户。
可选地,所述缓存设备可以是本发明实施例提供的另一种分布式缓存的方法中的所述第一缓存设备。
可见,本发明实施例提供了一种新的缓存设备,所述缓存设备可以通过到网络中的其他缓存设备为用户获取内容对象,从而避免了频繁到接入网络的上一级骨干网获取内容对象,提升了用户获取内容对象的速度,进一步也减少对骨干网带宽的占用。
本发明实施例中提到的第一缓存设备、第一内容对象请求消息、第一内容对象中的“第一”只是用来做名字标识,并不代表顺序上的第一;第二缓存设备、第二内容对象、第二编号和第二内容对象请求消息中的“第二”也只是用来做名字标识,并不代表顺序上的第二;第三缓存设备中的“第三”只是用来做名字标识,并不代表顺序上的第三;第四缓存设备中的“第四”只是用来做名字标识,并不代表顺序上的第四。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。