本申请涉及互联网技术领域,尤其涉及一种访问请求的处理方法和装置。
背景技术:
互联网应用的全球化趋势日益明显,网站需要有相应的技术方案让全球的用户都能访问。现在,常用的技术方案有两种,一种就是全球都访问同一区域的服务器,这种方案的优点是实现简单,缺点是其他区域访问的时候会比较慢;另一种是建立多个分站,这种方案的优点是访问速度可以得到保证,但是涉及到写操作的时候,为了保证数据一致性,往往还是只允许在主站写数据,这时候的访问速度就无法保证。
综上所述,现有技术中,在不同区域访问网站时候,访问速度不能得到保证,特别是写操作的访问,例如:下单或登录等等,导致用户体验较差。
技术实现要素:
本申请的目的旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种访问请求的处理方法。该方法可以保证写操作只发生在一个区域的服务器上,避免了写竞争产生脏数据,而且每次处理用户的访问请求的都是距离用户最近的服务器,从而可以提高访问速度,实现应用的全球化部署,提高用户体验度。
本申请的第二个目的在于提出一种访问请求的处理装置。
为了实现上述目的,本申请第一方面实施例的访问请求的处理方法,包括:接收用户发送的访问请求,所述访问请求包含所述用户的用户标识;根据所述用户标识获得所述用户的注册地址,根据所述访问请求获得所述用户当前使用的地址;根据所述用户的注册地址和所述用户当前使用的地址确定处理所述访问请求的服务器。
本申请实施例的访问请求的处理方法中,接收用户发送的访问请求之后,根据上述用户的用户标识获得上述用户的注册地址,然后根据上述访问请求获得上述用户当前使用的地址,根据上述用户的注册地址和上述用户当前使用的地址确定处理上述访问请求的服务器,从而可以保证写操作只发生在一个区域的服务器上,避免了写竞争产生脏数据,而且 每次处理用户的访问请求的都是距离用户最近的服务器,进而可以提高访问速度,实现应用的全球化部署,提高用户体验度。
为了实现上述目的,本申请第二方面实施例的访问请求的处理装置,包括:接收模块,用于接收用户发送的访问请求,所述访问请求包含所述用户的用户标识;获得模块,用于根据所述用户标识获得所述用户的注册地址,根据所述接收模块接收的访问请求获得所述用户当前使用的地址;确定模块,用于根据所述用户的注册地址和所述用户当前使用的地址确定处理所述访问请求的服务器。
本申请实施例的访问请求的处理装置中,接收模块接收用户发送的访问请求之后,获得模块根据上述用户的用户标识获得上述用户的注册地址,根据上述访问请求获得上述用户当前使用的地址,然后确定模块根据上述用户的注册地址和上述用户当前使用的地址确定处理上述访问请求的服务器,从而可以保证写操作只发生在一个区域的服务器上,避免了写竞争产生脏数据,而且每次处理用户的访问请求的都是距离用户最近的服务器,进而可以提高访问速度,实现应用的全球化部署,提高用户体验度。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请访问请求的处理方法一个实施例的流程图;
图2为本申请访问请求的处理方法另一个实施例的流程图;
图3为本申请访问请求的处理装置一个实施例的结构示意图;
图4为本申请访问请求的处理装置另一个实施例的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1为本申请访问请求的处理方法一个实施例的流程图,如图1所示,该访问请求的处理方法可以包括:
步骤101,接收用户发送的访问请求,上述访问请求包含所述用户的用户标识。
步骤102,根据上述用户标识获得上述用户的注册地址,根据上述访问请求获得上述用户当前使用的地址。
步骤103,根据上述用户的注册地址和上述用户当前使用的地址确定处理上述访问请求的服务器。
本实施例中,根据上述用户的注册地址和上述用户当前使用的地址,来确定处理上述访问请求的服务器,可以保证写操作只发生在一处服务器上,从而可以避免写竞争产生脏数据,而且每次访问都是离用户最近的服务器。
上述访问请求的处理方法中,接收用户发送的访问请求之后,根据上述用户的用户标识获得上述用户的注册地址,然后根据上述访问请求获得上述用户当前使用的地址,根据上述用户的注册地址和上述用户当前使用的地址确定处理上述访问请求的服务器,从而可以保证写操作只发生在一个区域的服务器上,避免了写竞争产生脏数据,而且每次处理用户的访问请求的都是距离用户最近的服务器,进而可以提高访问速度,实现应用的全球化部署,提高用户体验度。
图2为本申请访问请求的处理方法另一个实施例的流程图,如图2所示,步骤103可以为:
步骤201,获得上述用户的注册地址所属的第一区域和上述用户当前使用的地址所属的第二区域。
步骤202,判断上述第一区域与上述第二区域是否相同。如果是,则执行步骤203;如果上述第一区域与上述第二区域不同,则执行步骤204。
步骤203,确定处理上述访问请求的服务器为上述第一区域的服务器。
也就是说,如果第一区域与第二区域相同,则继续访问第一区域,即上述用户的注册地址所属区域的服务器。
步骤204,确定处理上述访问请求的服务器为上述第二区域的服务器。
也就是说,如果第一区域与第二区域不同,则说明用户漫游到了一个新的区域,比如出差或者旅游,那么确定处理上述访问请求的服务器为上述第二区域的服务器。
进一步地,步骤204之后,还可以包括:
步骤205,在上述第二区域的服务器上添加上述用户的漫游信息,上述用户的漫游信息用于标识上述用户漫游到上述第二区域。
本实施例中,在上述第二区域的服务器上添加上述用户的漫游信息之后,如果上述用户下次再来访问第二区域,则如同在第二区域注册的用户一样。
步骤206,向上述第一区域的服务器发起数据漫游请求,在上述第一区域的服务器上添加上述用户的漫游信息,以标识上述用户当前已漫游到上述第二区域。
本实施例中,步骤205与步骤206可以并行执行,也可以先后执行,本实施例对步骤205与步骤206的执行顺序不作限定,图2中,以步骤205在步骤206之前执行为例示出。
步骤207,判断上述访问请求的类型;如果上述访问请求是读操作请求,则执行步骤208;如果上述访问请求是写操作请求,则执行步骤209。
步骤208,将上述用户的数据从上述第一区域的服务器拷贝到上述第二区域的服务器。
步骤209,将上述写操作请求的数据写入上述第二区域的服务器。
进一步地,如果检测到上述用户从第二区域漫游到了第三区域,则在上述第三区域的服务器上添加上述用户的漫游信息,以标识上述用户漫游到上述第三区域。
当上述访问请求是读操作请求时,将上述用户的数据从上述第二区域的服务器拷贝到第三区域的服务器,并更新第一区域的服务器上用户的漫游信息,以标识上述用户当前已漫游到上述第三区域。
进一步地,将上述用户的数据从上述第二区域的服务器拷贝到第三区域的服务器之后,还可以将上述用户的数据和上述用户的漫游信息从第二区域的服务器上删除,从而可以保证上述用户的最新数据在上述用户最新使用的服务器上。
进一步地,检测到上述用户结束漫游回到第一区域之后,删除上述用户漫游地所属区域的服务器上所述用户的漫游信息;如果上述用户的数据有更新,将上述用户的数据拷贝回第一区域的服务器,并删除第一区域的服务器上所述用户的漫游信息。
也就是说,在用户结束漫游回到第一区域之后,如果用户是从第二区域回到第一区域,则删除第二区域的服务器上该用户的漫游信息,如果上述用户的数据有更新,将上述用户的数据从第二区域的服务器拷贝回第一区域的服务器,并删除第一区域的服务器上该用户的漫游信息。
如果用户是从第三区域回到第一区域,则删除第三区域的服务器上该用户的漫游信息,如果上述用户的数据有更新,将上述用户的数据从第三区域的服务器拷贝回第一区域的服务器,并删除第一区域的服务器上该用户的漫游信息。
本申请提供的访问请求的处理方法主要借助全球唯一漫游标识-用户信息,通过离线分析和准实时处理(10s内)建立网站全球用户的漫游表。采用内存隔离技术标准化非堆存储(off-heap)本地化存储上述漫游表。当用户的漫游信息发生变更,通过分布式系统的可靠协调系统(例如:Zookeeper)监听路由表版本节点,采用拉(pull)的方式变更本地存储,并上报变更结果。整个用户漫游信息的变更是原子操作,为了保证所有应用漫游表 堆外内存的一致,可靠协调系统全局持有一把栓锁,当有应用更新失败或者因为网络原因失败,通过幂等和超时策略,保证最终漫游表的全球一致。当然这只是实现本申请提供的访问请求的处理方法的一个示例方案,本申请并不局限于该方案。
图3为本申请访问请求的处理装置一个实施例的结构示意图,本实施例中的访问请求的处理装置可以作为分布式系统中的总服务器,实现本申请图1和图2所示实施例的流程。如图3所示,上述访问请求的处理装置可以包括:接收模块31、获得模块32和确定模块33;
其中,接收模块31,用于接收用户发送的访问请求,上述访问请求包含上述用户的用户标识;
获得模块32,用于根据上述用户标识获得上述用户的注册地址,根据接收模块31接收的访问请求获得上述用户当前使用的地址;
确定模块33,用于根据上述用户的注册地址和上述用户当前使用的地址确定处理上述访问请求的服务器。
本实施例中,确定模块33根据上述用户的注册地址和上述用户当前使用的地址,来确定处理上述访问请求的服务器,可以保证写操作只发生在一处服务器上,从而可以避免写竞争产生脏数据,而且每次访问都是离用户最近的服务器。
图4为本申请访问请求的处理装置另一个实施例的结构示意图,与图3所示的访问请求的处理装置相比,不同之处在于,图4所示的访问请求的处理装置中,确定模块33可以包括:获得子模块331、判断子模块332和确定子模块333;
其中,获得子模块331,用于获得上述用户的注册地址所属的第一区域和上述用户当前使用的地址所属的第二区域;
判断子模块332,用于判断上述第一区域与上述第二区域是否相同;
确定子模块333,用于当判断子模块332确定上述第一区域与上述第二区域相同时,确定处理上述访问请求的服务器为第一区域的服务器;当判断子模块332确定第一区域与第二区域不同时,确定处理上述访问请求的服务器为第二区域的服务器。也就是说,如果第一区域与第二区域相同,则继续访问第一区域,即上述用户的注册地址所属区域的服务器;而如果第一区域与第二区域不同,则说明用户漫游到了一个新的区域,比如出差或者旅游,那么确定子模块333确定处理上述访问请求的服务器为上述第二区域的服务器。
进一步地,上述访问请求的处理装置还可以包括:添加模块34;
添加模块34,用于在确定模块33确定处理上述访问请求的服务器为第二区域的服务器之后,在上述第二区域的服务器上添加上述用户的漫游信息,上述用户的漫游信息用于 标识上述用户漫游到上述第二区域。
本实施例中,添加模块34在上述第二区域的服务器上添加上述用户的漫游信息之后,如果上述用户下次再来访问第二区域,则如同在第二区域注册的用户一样。
进一步地,上述访问请求的处理装置还可以包括:发起模块35和添加模块34;
其中,发起模块35,用于在确定模块33确定处理上述访问请求的服务器为上述第二区域的服务器之后,向上述第一区域的服务器发起数据漫游请求;
添加模块34,用于在上述第一区域的服务器上添加上述用户的漫游信息,以标识上述用户当前已漫游到第二区域。
进一步地,上述访问请求的处理装置还可以包括:
判断模块36,用于判断上述访问请求的类型;
拷贝模块37,用于当上述访问请求是读操作请求时,将上述用户的数据从第一区域的服务器拷贝到第二区域的服务器;
写入模块38,用于当上述访问请求是写操作请求时,将上述写操作请求的数据写入上述第二区域的服务器。
进一步地,上述访问请求的处理装置还可以包括:更新模块39;
添加模块34,还用于当检测到上述用户从第二区域漫游到了第三区域时,在上述第三区域的服务器上添加上述用户的漫游信息,以标识上述用户漫游到上述第三区域;
拷贝模块37,还用于当上述访问请求是读操作请求时,将上述用户的数据从第二区域的服务器拷贝到第三区域的服务器;
更新模块39,用于更新上述第一区域的服务器上所述用户的漫游信息,以标识上述用户当前已漫游到第三区域。
进一步地,上述访问请求的处理装置还可以包括:
删除模块310,用于在拷贝模块37将上述用户的数据从第二区域的服务器拷贝到第三区域的服务器之后,将上述用户的数据和上述用户的漫游信息从上述第二区域的服务器上删除,从而可以保证上述用户的最新数据在上述用户最新使用的服务器上。
进一步地,上述访问请求的处理装置还可以包括:删除模块310和拷贝模块37;
删除模块310,用于在检测到上述用户结束漫游回到第一区域之后,删除上述用户漫游地所属区域的服务器上所述用户的漫游信息;
拷贝模块37,用于当上述用户的数据有更新时,将上述用户的数据拷贝回第一区域的服务器;
删除模块310,还用于删除第一区域的服务器上所述用户的漫游信息。
上述访问请求的处理装置中,接收模块31接收用户发送的访问请求之后,获得模块32根据上述用户的用户标识获得上述用户的注册地址,根据上述访问请求获得上述用户当前使用的地址,然后确定模块33根据上述用户的注册地址和上述用户当前使用的地址确定处理上述访问请求的服务器,从而可以保证写操作只发生在一个区域的服务器上,避免了写竞争产生脏数据,而且每次处理用户的访问请求的都是距离用户最近的服务器,进而可以提高访问速度,实现应用的全球化部署,提高用户体验度。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(Programmable Gate Array;以下简称:PGA),现场可编程门阵列(Field Programmable Gate Array;以下简称:FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、 或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。