具体实施方式
本发明实施例提供了一种数据访问方法以及统一资源定位符服务器,能够提高网络文件系统的可靠性、系统性能以及可扩展性。
为便于说明,下面介绍本发明的一个具体实施例。如图1所示,为本发明实施例中的网络结构示意图,该网络包括:用户设备、用户接入设备和多个URL服务器,其中,用户设备用于发送用户访问请求,用户接入设备用于将用户设备接入到网络中,URL服务器用于处理用户设备发送的访问请求。
本实施例中,需要预先确定第一URL服务器,下面以第一URL服务器为例,对数据访问方法进行详细介绍。
如图2所示,本发明实施例中数据访问方法一个实施例包括:
201、第一URL服务器接收用户发送的数据访问请求;
本实施例中,当用户请求访问数据时,会通过网络中的用户接入设备发送数据访问请求,该数据访问请求中携带有需要访问的数据的URL地址。
本实施例中的网络文件系统由若干个独立的URL服务器组成,其中的第一URL服务器可以从用户接入设备接收到该用户发送的数据访问请求。
202、第一URL服务器判断该URL地址所指向的资源是否存储在第一URL服务器中,若是,则执行步骤203,若否,则执行步骤204;
当第一URL服务器解析得到数据访问请求中的URL地址之后,则可以判断该URL地址所指向的资源是否存储在第一URL服务器中。
URL地址指向的资源可以是网页页面、数据资源等,例如:HTTP访问时,URL指向一网页页面;FTP访问时,URL指向一数据资源。
203、根据数据访问请求对资源执行相应的读写操作;
若URL地址所指向的资源存储在第一URL服务器中,则第一URL服务器可以根据数据访问请求对该资源进行相应的读写操作,例如根据数据访问请求对资源进行修改,添加,或删除等。
本流程结束。
204、查询URL地址所指向的资源所在的第二URL服务器;
若URL地址所指向的资源不存储在第一URL服务器中,则第一URL服务器根据该URL地址查询对应的第二URL服务器。
205、向第二URL服务器转发数据访问请求。
当查询到对应的第二URL服务器之后,第一URL服务器可以向第二URL服务器转发数据访问请求,以使得第二URL服务器根据数据访问请求对资源执行相应的读写操作。
本流程结束。
本实施例中,第一URL服务器可以接收到用户发送的数据访问请求,若确定用户需要访问的数据在本地,则执行在本地进行数据处理,若确定用户需要访问的数据在第二URL服务器,则第一URL服务器会将数据访问请求发送至第二URL服务器进行处理,每个URL服务器中都保存有各自独立的数据以及元数据,每个URL服务器中的元数据都仅与本URL服务器中的数据相关联,而不会与第二URL服务器中的数据相关联,因此,即使某一个URL服务器出现故障也不会使得整个网络文件系统瘫痪,从而能够提高网络文件系统的可靠性;
其次,对于各URL服务器而言,若确定用户需要访问的数据不在本地,则会将数据访问请求转发至其他的URL服务器进行处理,即在网络文件系统中并不存在一个专门用于处理数据访问请求以及数据的服务器,因此并不存在瓶颈,从而能够提高系统效率,同时提高网络文件系统的可靠性;
再次,各URL服务器所存储的数据相对独立,数据访问请求也可以根据具体的需要在不同的URL服务器之间进行转发,即在网络文件系统中并不存在一个专门用于管理各URL服务器中的数据的服务器,所以当需要更大的数据容量时,可以直接增添新的URL服务器,只需修改各URL服务器中所保存的对应关系即可,因此在理论上可以无限的增加新的URL服务器,从而大大提高了网络文件系统的可扩展性。
为便于理解,下面以一具体实例对本发明实施例中的数据访问方法进行详细描述,请参阅图3,本发明实施例中数据访问方法另一实施例包括:
301、第一URL服务器接收用户发送的数据访问请求;
本实施例中,当用户请求访问数据时,会通过网络中的用户接入设备发送数据访问请求,该数据访问请求中携带有需要访问的数据的URL地址。
本实施例中,第一URL服务器可以为用户接入设备根据本地配置的各URL服务器的信息确定的URL服务器,该第一URL服务器在实际应用中可以有多种情况,例如:
(1)、该第一URL服务器为用户接入设备在各URL服务器中随机选择的一个URL服务器。
该方式下,用户接入设备无需进行计算操作,直接随机选择一个URL服务器即可,这样可以有效的减少用户接入设备的负荷。
(2)、该第一URL服务器为用户接入设备根据各URL服务器的物理位置,选择的与用户之间的物理距离最近的一个URL服务器。
该方式下,用户接入设备选取的URL服务器与用户之间的物理距离最近,所以可以更快的将数据访问请求发送至URL服务器,以便减少数据访问的延迟时间。
(3)、该第一URL服务器为用户接入设备根据各URL服务器当前的负载情况选择的负载最小的一个URL服务器。
该方式下,各URL服务器需要实时向用户接入设备上报各自的负载情况,用户接入设备选取负载最小的URL服务器来处理数据访问请求能够有效的均衡各URL服务器之间的负载。
需要说明的是,本实施例中的各URL服务器所展现的外部地址是相同的,该外部地址可以为互联网协议(IP,Intemet Protocol)地址,或者为非IP类的地址,例如采用线缆转换(InfiniBand)方式的地址等,以IP地址为例,各URL服务器(即整个网络文件系统)向用户体现出的地址可以为192.168.0.1,该地址经过域名转换服务器可以为“www.myweb.com”则用户在请求访问该网络文件系统中的数据时,在数据访问请求中所携带的URL地址可以为“http://www.myweb.com/html_2/dir22/1.html”。
302、使用URL地址在系统目录中进行匹配;
本实施例中,在每个URL服务器中均保存有设备标识与系统目录之间的对应关系,用于表示哪个系统目录的资源存储在哪个设备标识对应的设备中,例如可以如下表所示:
表1
设备标识 |
内部地址 |
URL文件系统目录 |
设备1 |
192.168.0.8 |
http://www.myweb.com/html_2/ |
设备2 |
192.168.0.9 |
http://www.myweb.com/html_2/dir22/ |
第一URL服务器可以根据数据访问请求中的URL地址在表1所示的对应关系中进行匹配。
303、查询URL地址最长匹配到的系统目录对应的设备标识;
当使用URL地址在系统目录中进行匹配之后,可以确定URL地址最长匹配到的系统目录,以URL地址中的斜杠之间的地址为一个比较单位,与该URL地址之间存在最多相同的比较单位的系统目录就是最长匹配到的系统目录。例如“http://www.myweb.com/html_2/dir22/1.html”在第一URL服务器中保存的上述表1中,与系统目录http://www.myweb.com/html_2/相同的比较单位为两个,与系统目录http://www.myweb.com/html_2/dir22/相同的比较单位为三个,因此,最长匹配到的系统目录为“http://www.myweb.com/html_2/dir22/”,之后,第一URL服务器可以再确定该系统目录对应的设备标识为“设备2”。
304、判断查询到的设备标识是否为第一URL服务器的设备标识,若是,则执行步骤305,若否,则执行步骤306;
本实施例中,第一URL服务器查询到设备标识之后,可以判断该查询到的设备标识是否为自身的设备标识,若是,则说明用户请求访问的资源存储在本地,若不是,则说明用户请求访问的数据不存储在本地。
305、根据数据访问请求对资源执行相应的读写操作;
若查询到的设备标识“设备2”是第一URL服务器的设备标识,则第一URL服务器可以根据数据访问请求对该资源进行相应的读写操作,例如根据数据访问请求对资源进行修改,添加,或删除等,具体过程为本领域技术人员的公知常识,此处不再赘述。
306、查询该设备标识对应的第二URL服务器;
若查询到的设备标识“设备2”不是第一URL服务器的设备标识,则再查询该设备标识对应的第二URL服务器,并确定该第二URL服务器的地址,例如根据表1可以确定第二URL服务器的地址为“192.168.0.9”。
需要说明的是,本实施例中是以IP地址作为内部地址为例进行说明的是,在实际应用中,URL服务器的内部地址还可以是其他类型的非IP类地址,例如采用线缆转换(InfiniBand)方式的地址等,在网络文件系统中,每一个URL服务器的内部地址都不相同,以使得不同的URL服务器之间可以进行内部通信。
307、向第二URL服务器转发数据访问请求。
当查询到对应的第二URL服务器的地址之后,第一URL服务器可以向第二URL服务器转发数据访问请求,以使得第二URL服务器根据数据访问请求对资源执行相应的读写操作。
需要说明的是,若某一URL服务器中存储的数据过多,或数据增长速度过快,则可以进行资源的转移,例如:
第一URL服务器判断本地存储的资源中是否存在满足预置的转移条件的待转移资源,若存在,则将待转移资源转移至第三URL服务器,并更新各URL服务器中保存的设备标识与系统目录之间的对应关系。
为便于理解,下面以实际应用为例进行说明:第一URL服务器中保存的是“http://www.myweb.com/html_2/”中的资源,假设“…/html_2/”下还有一级目录“…/html_2/dir33”,若该“…/dir33”目录中存储的资源的数据量达到了预置的门限值(例如为10GB),或者是该“…/dir33”目录中存储的资源的增长速度达到了预置门限(例如为1GB/天),为了减轻第一URL服务器的压力,则可以将该“…/dir33”目录中存储的资源确定为待转移资源,将该“…/dir33”目录中存储的资源转移至第三URL服务器,该第三URL服务器可以为现有网络文件系统中负载较轻的URL服务器,或者可以是新增的一个服务器。
本实施例中以第三URL服务器为新增的服务器为例进行说明,当第一URL服务器检测待转移资源时,若第三URL服务器上线,则第一URL服务器会向第三URL服务器发送数据转移请求,得到第三URL服务器的反馈之后,则第一URL服务器向第三URL服务器发送该待转移资源。
需要说明的是,第一URL服务器与第三URL服务器在数据转移的过程中均不可进行数据读写操作,具体可以将第一URL服务器与第三URL服务器暂时离线,或者是设置读写标识为“禁止”,在“禁止”的原因中还可以增加“正在进行数据转移”,当用户发送的数据访问请求正是要求访问第一URL服务器上的数据时,则第一URL服务器会向用户返回读写失败消息,在该读写失败消息中可以携带原因值为“正在进行数据转移”。
资源转移完成后,由于改变了系统目录,则还需要对整个网络文件系统中各URL所保存的设备标识与系统目录之间的对应关系进行更新,具体的更新操作从第一URL服务器开始,第一URL服务器根据待转移的资源以及本地保存的其他资源确定更新后的设备标识与系统目录之间的对应关系,可以如下表2所示:
表2
设备标识 |
内部地址 |
URL文件系统目录 |
设备1 |
192.168.0.8 |
http://www.myweb.com/html_2/ |
设备2 |
192.168.0.9 |
http://www.myweb.com/html_2/dir22/ |
设备3 |
192.168.0.10 |
http://www.myweb.com/html_2/dir33/ |
当第一URL服务器完成了对应关系的更新之后,可以将该更新后的对应关系发送至第二URL服务器(包括第三URL服务器),则各URL服务器更新各自保存的对应关系,发送对应关系时,可以只发送其中变化的部分,例如:只发送设备3与URL文件系统目录的对应关系。
需要说明的是,本实施例中,预置的转移条件仅为带转移资源的数据量达到预置门限,或待转移资源的数据量增长速度达到预置门限,可以理解的是,在实际应用中,具体的转移条件还可以有更多的情况,具体情况此处不作限定。
本实施例中,第一URL服务器可以接收到用户发送的数据访问请求,若确定用户需要访问的数据在本地,则执行在本地进行数据处理,若确定用户需要访问的数据在第二URL服务器,则第一URL服务器会将数据访问请求发送至第二URL服务器进行处理,每个URL服务器中都保存有各自独立的数据以及元数据,每个URL服务器中的元数据都仅于本URL服务器中的数据相关联,而不会与第二URL服务器中的数据相关联,因此,即使某一个URL服务器出现故障也不会使得整个网络文件系统瘫痪,从而能够提高网络文件系统的可靠性;
其次,对于各URL服务器而言,若确定用户需要访问的数据不在本地,则会将数据访问请求转发至其他的URL服务器进行处理,即在网络文件系统中并不存在一个专门用于处理数据访问请求以及数据的服务器,因此并不存在瓶颈,从而能够提高系统效率,同时提高网络文件系统的可靠性;
再次,当满足预置的转移条件时,第一URL服务器可以将待转移资源转移至其他的URL服务器,从而能够减少第一URL服务器的负载,均衡各URL服务器的性能;
更进一步,各URL服务器所存储的数据相对独立,数据访问请求也可以根据具体的需要在不同的URL服务器之间进行转发,即在网络文件系统中并不存在一个专门用于管理各URL服务器中的数据的服务器,所以当需要更大的数据容量时,可以直接增添新的URL服务器,只需修改各URL服务器中所保存的对应关系即可,因此在理论上可以无限的增加新的URL服务器,从而大大提高了网络文件系统的可扩展性。
下面介绍本发明实施例中的URL服务器,请参阅图4,本发明实施例中的URL服务器包括:
接收模块401,用于接收用户发送的数据访问请求,数据访问请求中携带有URL地址;
检测模块402,用于判断接收模块401接收到的数据访问请求中携带的URL地址所指向的资源是否存储在第一URL服务器中;
操作模块403,用于当检测模块402判断该URL地址所指向的资源存储在第一URL服务器中时,根据数据访问请求对URL地址所指向的资源执行相应的读写操作;
查询模块404,用于检测模块402判断该URL地址所指向的资源不存储在第一URL服务器中时,查询URL地址所指向的资源所在的第二URL服务器;
转发模块405,用于向查询模块404查询到的第二URL服务器转发数据访问请求,以使得第二URL服务器根据数据访问请求对资源执行相应的读写操作;
其中,检测模块402包括:
匹配单元4021,用于使用该URL地址在系统目录中进行匹配以查询该URL地址最长匹配到的系统目录;
设备标识查询单元4022,用于查询匹配单元4021最长匹配到的系统目录对应的设备标识;
确定单元4023,用于当设备标识查询单元4022查询到的设备标识为第一URL服务器的设备标识时,确定该URL地址所指向的资源存储在第一URL服务器中,若该设备标识不为第一URL服务器的设备标识时,则确定该URL地址所指向的资源不存储在第一URL服务器中。
本实施例中的URL服务器中还可以进一步包括:
转移校验模块406,用于判断是否存在满足预置的转移条件的待转移资源;
资源转移模块407,用于当转移校验模块406确定存在满足预置的转移条件的待转移资源时,将待转移资源转移至其他的URL服务器;
更新模块408,用于在资源转移模块407完成资源转移之后更新各URL服务器中保存的设备标识与系统目录之间的对应关系。
其中,更新模块408包括:
本地更新单元4081,用于根据待转移资源以及自身存储的其他资源更新本地保存的设备标识与系统目录之间的对应关系;
更新通告单元4082,用于将更新后的设备标识与系统目录之间的对应关系发送至第二URL服务器,使得第二URL服务器更新本地保存的设备标识与系统目录之间的对应关系。
为便于理解,下面以一具体应用场景对本发明实施例中的URL服务器实施例进行说明:
本实施例中,当用户请求访问数据时,会发送数据访问请求,该数据访问请求中携带有需要访问的数据的URL地址。
本实施例中的网络文件系统由若干个独立的URL服务器组成,其中的第一URL服务器的接收模块401会接收到该用户发送的数据访问请求。
本实施例中,在每个URL服务器中均保存有设备标识与系统目录之间的对应关系,用于表示哪个系统目录的资源存储在哪个设备标识对应的设备中,检测模块402可以使用URL地址在系统目录中进行匹配,之后可以确定URL地址最长匹配到的系统目录,再确定该系统目录对应的设备标识,从而判断该查询到的设备标识是否为自身的设备标识,若是,则说明用户请求访问的资源存储在本地,若不是,则说明用户请求访问的数据不存储在本地。
若检测模块402确定查询到的设备标识是第一URL服务器的设备标识,则操作模块403可以根据数据访问请求对该资源进行相应的读写操作,例如根据数据访问请求对资源进行修改,添加,或删除等,具体过程为本领域技术人员的公知常识,此处不再赘述。
若检测模块402确定查询到的设备标识不是第一URL服务器的设备标识,则查询模块404再查询该设备标识对应的第二URL服务器,并确定该第二URL服务器的地址。
当查询模块404查询到对应的第二URL服务器的地址之后,转发模块405可以向第二URL服务器转发数据访问请求,以使得第二URL服务器根据数据访问请求对资源执行相应的读写操作。
需要说明的是,若某一URL服务器中存储的数据过多,或数据增长速度过快,则可以进行资源的转移,例如:
转移校验模块406判断本地存储的资源中是否存在满足预置的转移条件的待转移资源,若存在,则资源转移模块407将待转移资源转移至第三URL服务器,更新模块408更新各URL服务器中保存的设备标识与系统目录之间的对应关系。
本实施例中,接收模块401可以接收到用户发送的数据访问请求,若检测模块402确定用户需要访问的数据在本地,则操作模块403执行在本地进行数据处理,若检测模块402确定用户需要访问的数据在第二URL服务器,则查询模块404以及转发模块405会将数据访问请求发送至第二URL服务器进行处理,每个URL服务器中都保存有各自独立的数据以及元数据,每个URL服务器中的元数据都仅于本URL服务器中的数据相关联,而不会与第二URL服务器中的数据相关联,因此,即使某一个URL服务器出现故障也不会使得整个网络文件系统瘫痪,从而能够提高网络文件系统的可靠性;
其次,对于各URL服务器而言,若确定用户需要访问的数据不在本地,则会将数据访问请求转发至其他的URL服务器进行处理,即在网络文件系统中并不存在一个专门用于处理数据访问请求以及数据的服务器,因此并不存在瓶颈,从而能够提高系统效率,同时提高网络文件系统的可靠性;
再次,当满足预置的转移条件时,资源转移模块407可以将待转移资源转移至其他的URL服务器,从而能够减少第一URL服务器的负载,均衡各URL服务器的性能;
更进一步,各URL服务器所存储的数据相对独立,数据访问请求也可以根据具体的需要在不同的URL服务器之间进行转发,即在网络文件系统中并不存在一个专门用于管理各URL服务器中的数据的服务器,所以当需要更大的数据容量时,可以直接增添新的URL服务器,只需修改各URL服务器中所保存的对应关系即可,因此在理论上可以无限的增加新的URL服务器,从而大大提高了网络文件系统的可扩展性。
下面介绍本发明实施例中的通信系统,请参阅图5,本发明实施例中的通信系统实施例包括至少两个URL服务器,分别为第一URL服务器501和第二URL服务器502。
其中,本实施例中的第一URL服务器501以及第二URL服务器502的具体结构以及功能可以与前述图4所示的URL服务器相同,此处不再赘述。
本实施例中仅以两个URL服务器为例进行说明,可以理解的是,在实际应用中还可以有更多的URL服务器,具体数量此处不作限定。
本实施例中,第一URL服务器501可以接收到用户发送的数据访问请求,若确定用户需要访问的数据在本地,则执行在本地进行数据处理,若确定用户需要访问的数据在第二URL服务器502,则第一URL服务器501会将数据访问请求发送至第二URL服务器502进行处理,每个URL服务器中都保存有各自独立的数据以及元数据,每个URL服务器中的元数据都仅于本URL服务器中的数据相关联,而不会与其它URL服务器中的数据相关联,因此,即使某一个URL服务器出现故障也不会使得整个网络文件系统瘫痪,从而能够提高网络文件系统的可靠性;
其次,对于各URL服务器而言,若确定用户需要访问的数据不在本地,则会将数据访问请求转发至其他的URL服务器进行处理,即在网络文件系统中并不存在一个专门用于处理数据访问请求以及数据的服务器,因此并不存在瓶颈,从而能够提高系统效率,同时提高网络文件系统的可靠性;
再次,各URL服务器所存储的数据相对独立,数据访问请求也可以根据具体的需要在不同的URL服务器之间进行转发,即在网络文件系统中并不存在一个专门用于管理各URL服务器中的数据的服务器,所以当需要更大的数据容量时,可以直接增添新的URL服务器,只需修改各URL服务器中所保存的对应关系即可,因此在理论上可以无限的增加新的URL服务器,从而大大提高了网络文件系统的可扩展性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,上述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种数据访问方法以及统一资源定位符服务器进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,因此,本说明书内容不应理解为对本发明的限制。