本申請涉及互聯(lián)網(wǎng)技術領域,尤其涉及一種訪問請求的處理方法和裝置。
背景技術:
互聯(lián)網(wǎng)應用的全球化趨勢日益明顯,網(wǎng)站需要有相應的技術方案讓全球的用戶都能訪問?,F(xiàn)在,常用的技術方案有兩種,一種就是全球都訪問同一區(qū)域的服務器,這種方案的優(yōu)點是實現(xiàn)簡單,缺點是其他區(qū)域訪問的時候會比較慢;另一種是建立多個分站,這種方案的優(yōu)點是訪問速度可以得到保證,但是涉及到寫操作的時候,為了保證數(shù)據(jù)一致性,往往還是只允許在主站寫數(shù)據(jù),這時候的訪問速度就無法保證。
綜上所述,現(xiàn)有技術中,在不同區(qū)域訪問網(wǎng)站時候,訪問速度不能得到保證,特別是寫操作的訪問,例如:下單或登錄等等,導致用戶體驗較差。
技術實現(xiàn)要素:
本申請的目的旨在至少在一定程度上解決相關技術中的技術問題之一。
為此,本申請的第一個目的在于提出一種訪問請求的處理方法。該方法可以保證寫操作只發(fā)生在一個區(qū)域的服務器上,避免了寫競爭產生臟數(shù)據(jù),而且每次處理用戶的訪問請求的都是距離用戶最近的服務器,從而可以提高訪問速度,實現(xiàn)應用的全球化部署,提高用戶體驗度。
本申請的第二個目的在于提出一種訪問請求的處理裝置。
為了實現(xiàn)上述目的,本申請第一方面實施例的訪問請求的處理方法,包括:接收用戶發(fā)送的訪問請求,所述訪問請求包含所述用戶的用戶標識;根據(jù)所述用戶標識獲得所述用戶的注冊地址,根據(jù)所述訪問請求獲得所述用戶當前使用的地址;根據(jù)所述用戶的注冊地址和所述用戶當前使用的地址確定處理所述訪問請求的服務器。
本申請實施例的訪問請求的處理方法中,接收用戶發(fā)送的訪問請求之后,根據(jù)上述用戶的用戶標識獲得上述用戶的注冊地址,然后根據(jù)上述訪問請求獲得上述用戶當前使用的地址,根據(jù)上述用戶的注冊地址和上述用戶當前使用的地址確定處理上述訪問請求的服務器,從而可以保證寫操作只發(fā)生在一個區(qū)域的服務器上,避免了寫競爭產生臟數(shù)據(jù),而且 每次處理用戶的訪問請求的都是距離用戶最近的服務器,進而可以提高訪問速度,實現(xiàn)應用的全球化部署,提高用戶體驗度。
為了實現(xiàn)上述目的,本申請第二方面實施例的訪問請求的處理裝置,包括:接收模塊,用于接收用戶發(fā)送的訪問請求,所述訪問請求包含所述用戶的用戶標識;獲得模塊,用于根據(jù)所述用戶標識獲得所述用戶的注冊地址,根據(jù)所述接收模塊接收的訪問請求獲得所述用戶當前使用的地址;確定模塊,用于根據(jù)所述用戶的注冊地址和所述用戶當前使用的地址確定處理所述訪問請求的服務器。
本申請實施例的訪問請求的處理裝置中,接收模塊接收用戶發(fā)送的訪問請求之后,獲得模塊根據(jù)上述用戶的用戶標識獲得上述用戶的注冊地址,根據(jù)上述訪問請求獲得上述用戶當前使用的地址,然后確定模塊根據(jù)上述用戶的注冊地址和上述用戶當前使用的地址確定處理上述訪問請求的服務器,從而可以保證寫操作只發(fā)生在一個區(qū)域的服務器上,避免了寫競爭產生臟數(shù)據(jù),而且每次處理用戶的訪問請求的都是距離用戶最近的服務器,進而可以提高訪問速度,實現(xiàn)應用的全球化部署,提高用戶體驗度。
本申請附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本申請的實踐了解到。
附圖說明
本申請上述的和/或附加的方面和優(yōu)點從下面結合附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1為本申請訪問請求的處理方法一個實施例的流程圖;
圖2為本申請訪問請求的處理方法另一個實施例的流程圖;
圖3為本申請訪問請求的處理裝置一個實施例的結構示意圖;
圖4為本申請訪問請求的處理裝置另一個實施例的結構示意圖。
具體實施方式
下面詳細描述本申請的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本申請,而不能理解為對本申請的限制。相反,本申請的實施例包括落入所附加權利要求書的精神和內涵范圍內的所有變化、修改和等同物。
圖1為本申請訪問請求的處理方法一個實施例的流程圖,如圖1所示,該訪問請求的處理方法可以包括:
步驟101,接收用戶發(fā)送的訪問請求,上述訪問請求包含所述用戶的用戶標識。
步驟102,根據(jù)上述用戶標識獲得上述用戶的注冊地址,根據(jù)上述訪問請求獲得上述用戶當前使用的地址。
步驟103,根據(jù)上述用戶的注冊地址和上述用戶當前使用的地址確定處理上述訪問請求的服務器。
本實施例中,根據(jù)上述用戶的注冊地址和上述用戶當前使用的地址,來確定處理上述訪問請求的服務器,可以保證寫操作只發(fā)生在一處服務器上,從而可以避免寫競爭產生臟數(shù)據(jù),而且每次訪問都是離用戶最近的服務器。
上述訪問請求的處理方法中,接收用戶發(fā)送的訪問請求之后,根據(jù)上述用戶的用戶標識獲得上述用戶的注冊地址,然后根據(jù)上述訪問請求獲得上述用戶當前使用的地址,根據(jù)上述用戶的注冊地址和上述用戶當前使用的地址確定處理上述訪問請求的服務器,從而可以保證寫操作只發(fā)生在一個區(qū)域的服務器上,避免了寫競爭產生臟數(shù)據(jù),而且每次處理用戶的訪問請求的都是距離用戶最近的服務器,進而可以提高訪問速度,實現(xiàn)應用的全球化部署,提高用戶體驗度。
圖2為本申請訪問請求的處理方法另一個實施例的流程圖,如圖2所示,步驟103可以為:
步驟201,獲得上述用戶的注冊地址所屬的第一區(qū)域和上述用戶當前使用的地址所屬的第二區(qū)域。
步驟202,判斷上述第一區(qū)域與上述第二區(qū)域是否相同。如果是,則執(zhí)行步驟203;如果上述第一區(qū)域與上述第二區(qū)域不同,則執(zhí)行步驟204。
步驟203,確定處理上述訪問請求的服務器為上述第一區(qū)域的服務器。
也就是說,如果第一區(qū)域與第二區(qū)域相同,則繼續(xù)訪問第一區(qū)域,即上述用戶的注冊地址所屬區(qū)域的服務器。
步驟204,確定處理上述訪問請求的服務器為上述第二區(qū)域的服務器。
也就是說,如果第一區(qū)域與第二區(qū)域不同,則說明用戶漫游到了一個新的區(qū)域,比如出差或者旅游,那么確定處理上述訪問請求的服務器為上述第二區(qū)域的服務器。
進一步地,步驟204之后,還可以包括:
步驟205,在上述第二區(qū)域的服務器上添加上述用戶的漫游信息,上述用戶的漫游信息用于標識上述用戶漫游到上述第二區(qū)域。
本實施例中,在上述第二區(qū)域的服務器上添加上述用戶的漫游信息之后,如果上述用戶下次再來訪問第二區(qū)域,則如同在第二區(qū)域注冊的用戶一樣。
步驟206,向上述第一區(qū)域的服務器發(fā)起數(shù)據(jù)漫游請求,在上述第一區(qū)域的服務器上添加上述用戶的漫游信息,以標識上述用戶當前已漫游到上述第二區(qū)域。
本實施例中,步驟205與步驟206可以并行執(zhí)行,也可以先后執(zhí)行,本實施例對步驟205與步驟206的執(zhí)行順序不作限定,圖2中,以步驟205在步驟206之前執(zhí)行為例示出。
步驟207,判斷上述訪問請求的類型;如果上述訪問請求是讀操作請求,則執(zhí)行步驟208;如果上述訪問請求是寫操作請求,則執(zhí)行步驟209。
步驟208,將上述用戶的數(shù)據(jù)從上述第一區(qū)域的服務器拷貝到上述第二區(qū)域的服務器。
步驟209,將上述寫操作請求的數(shù)據(jù)寫入上述第二區(qū)域的服務器。
進一步地,如果檢測到上述用戶從第二區(qū)域漫游到了第三區(qū)域,則在上述第三區(qū)域的服務器上添加上述用戶的漫游信息,以標識上述用戶漫游到上述第三區(qū)域。
當上述訪問請求是讀操作請求時,將上述用戶的數(shù)據(jù)從上述第二區(qū)域的服務器拷貝到第三區(qū)域的服務器,并更新第一區(qū)域的服務器上用戶的漫游信息,以標識上述用戶當前已漫游到上述第三區(qū)域。
進一步地,將上述用戶的數(shù)據(jù)從上述第二區(qū)域的服務器拷貝到第三區(qū)域的服務器之后,還可以將上述用戶的數(shù)據(jù)和上述用戶的漫游信息從第二區(qū)域的服務器上刪除,從而可以保證上述用戶的最新數(shù)據(jù)在上述用戶最新使用的服務器上。
進一步地,檢測到上述用戶結束漫游回到第一區(qū)域之后,刪除上述用戶漫游地所屬區(qū)域的服務器上所述用戶的漫游信息;如果上述用戶的數(shù)據(jù)有更新,將上述用戶的數(shù)據(jù)拷貝回第一區(qū)域的服務器,并刪除第一區(qū)域的服務器上所述用戶的漫游信息。
也就是說,在用戶結束漫游回到第一區(qū)域之后,如果用戶是從第二區(qū)域回到第一區(qū)域,則刪除第二區(qū)域的服務器上該用戶的漫游信息,如果上述用戶的數(shù)據(jù)有更新,將上述用戶的數(shù)據(jù)從第二區(qū)域的服務器拷貝回第一區(qū)域的服務器,并刪除第一區(qū)域的服務器上該用戶的漫游信息。
如果用戶是從第三區(qū)域回到第一區(qū)域,則刪除第三區(qū)域的服務器上該用戶的漫游信息,如果上述用戶的數(shù)據(jù)有更新,將上述用戶的數(shù)據(jù)從第三區(qū)域的服務器拷貝回第一區(qū)域的服務器,并刪除第一區(qū)域的服務器上該用戶的漫游信息。
本申請?zhí)峁┑脑L問請求的處理方法主要借助全球唯一漫游標識-用戶信息,通過離線分析和準實時處理(10s內)建立網(wǎng)站全球用戶的漫游表。采用內存隔離技術標準化非堆存儲(off-heap)本地化存儲上述漫游表。當用戶的漫游信息發(fā)生變更,通過分布式系統(tǒng)的可靠協(xié)調系統(tǒng)(例如:Zookeeper)監(jiān)聽路由表版本節(jié)點,采用拉(pull)的方式變更本地存儲,并上報變更結果。整個用戶漫游信息的變更是原子操作,為了保證所有應用漫游表 堆外內存的一致,可靠協(xié)調系統(tǒng)全局持有一把栓鎖,當有應用更新失敗或者因為網(wǎng)絡原因失敗,通過冪等和超時策略,保證最終漫游表的全球一致。當然這只是實現(xiàn)本申請?zhí)峁┑脑L問請求的處理方法的一個示例方案,本申請并不局限于該方案。
圖3為本申請訪問請求的處理裝置一個實施例的結構示意圖,本實施例中的訪問請求的處理裝置可以作為分布式系統(tǒng)中的總服務器,實現(xiàn)本申請圖1和圖2所示實施例的流程。如圖3所示,上述訪問請求的處理裝置可以包括:接收模塊31、獲得模塊32和確定模塊33;
其中,接收模塊31,用于接收用戶發(fā)送的訪問請求,上述訪問請求包含上述用戶的用戶標識;
獲得模塊32,用于根據(jù)上述用戶標識獲得上述用戶的注冊地址,根據(jù)接收模塊31接收的訪問請求獲得上述用戶當前使用的地址;
確定模塊33,用于根據(jù)上述用戶的注冊地址和上述用戶當前使用的地址確定處理上述訪問請求的服務器。
本實施例中,確定模塊33根據(jù)上述用戶的注冊地址和上述用戶當前使用的地址,來確定處理上述訪問請求的服務器,可以保證寫操作只發(fā)生在一處服務器上,從而可以避免寫競爭產生臟數(shù)據(jù),而且每次訪問都是離用戶最近的服務器。
圖4為本申請訪問請求的處理裝置另一個實施例的結構示意圖,與圖3所示的訪問請求的處理裝置相比,不同之處在于,圖4所示的訪問請求的處理裝置中,確定模塊33可以包括:獲得子模塊331、判斷子模塊332和確定子模塊333;
其中,獲得子模塊331,用于獲得上述用戶的注冊地址所屬的第一區(qū)域和上述用戶當前使用的地址所屬的第二區(qū)域;
判斷子模塊332,用于判斷上述第一區(qū)域與上述第二區(qū)域是否相同;
確定子模塊333,用于當判斷子模塊332確定上述第一區(qū)域與上述第二區(qū)域相同時,確定處理上述訪問請求的服務器為第一區(qū)域的服務器;當判斷子模塊332確定第一區(qū)域與第二區(qū)域不同時,確定處理上述訪問請求的服務器為第二區(qū)域的服務器。也就是說,如果第一區(qū)域與第二區(qū)域相同,則繼續(xù)訪問第一區(qū)域,即上述用戶的注冊地址所屬區(qū)域的服務器;而如果第一區(qū)域與第二區(qū)域不同,則說明用戶漫游到了一個新的區(qū)域,比如出差或者旅游,那么確定子模塊333確定處理上述訪問請求的服務器為上述第二區(qū)域的服務器。
進一步地,上述訪問請求的處理裝置還可以包括:添加模塊34;
添加模塊34,用于在確定模塊33確定處理上述訪問請求的服務器為第二區(qū)域的服務器之后,在上述第二區(qū)域的服務器上添加上述用戶的漫游信息,上述用戶的漫游信息用于 標識上述用戶漫游到上述第二區(qū)域。
本實施例中,添加模塊34在上述第二區(qū)域的服務器上添加上述用戶的漫游信息之后,如果上述用戶下次再來訪問第二區(qū)域,則如同在第二區(qū)域注冊的用戶一樣。
進一步地,上述訪問請求的處理裝置還可以包括:發(fā)起模塊35和添加模塊34;
其中,發(fā)起模塊35,用于在確定模塊33確定處理上述訪問請求的服務器為上述第二區(qū)域的服務器之后,向上述第一區(qū)域的服務器發(fā)起數(shù)據(jù)漫游請求;
添加模塊34,用于在上述第一區(qū)域的服務器上添加上述用戶的漫游信息,以標識上述用戶當前已漫游到第二區(qū)域。
進一步地,上述訪問請求的處理裝置還可以包括:
判斷模塊36,用于判斷上述訪問請求的類型;
拷貝模塊37,用于當上述訪問請求是讀操作請求時,將上述用戶的數(shù)據(jù)從第一區(qū)域的服務器拷貝到第二區(qū)域的服務器;
寫入模塊38,用于當上述訪問請求是寫操作請求時,將上述寫操作請求的數(shù)據(jù)寫入上述第二區(qū)域的服務器。
進一步地,上述訪問請求的處理裝置還可以包括:更新模塊39;
添加模塊34,還用于當檢測到上述用戶從第二區(qū)域漫游到了第三區(qū)域時,在上述第三區(qū)域的服務器上添加上述用戶的漫游信息,以標識上述用戶漫游到上述第三區(qū)域;
拷貝模塊37,還用于當上述訪問請求是讀操作請求時,將上述用戶的數(shù)據(jù)從第二區(qū)域的服務器拷貝到第三區(qū)域的服務器;
更新模塊39,用于更新上述第一區(qū)域的服務器上所述用戶的漫游信息,以標識上述用戶當前已漫游到第三區(qū)域。
進一步地,上述訪問請求的處理裝置還可以包括:
刪除模塊310,用于在拷貝模塊37將上述用戶的數(shù)據(jù)從第二區(qū)域的服務器拷貝到第三區(qū)域的服務器之后,將上述用戶的數(shù)據(jù)和上述用戶的漫游信息從上述第二區(qū)域的服務器上刪除,從而可以保證上述用戶的最新數(shù)據(jù)在上述用戶最新使用的服務器上。
進一步地,上述訪問請求的處理裝置還可以包括:刪除模塊310和拷貝模塊37;
刪除模塊310,用于在檢測到上述用戶結束漫游回到第一區(qū)域之后,刪除上述用戶漫游地所屬區(qū)域的服務器上所述用戶的漫游信息;
拷貝模塊37,用于當上述用戶的數(shù)據(jù)有更新時,將上述用戶的數(shù)據(jù)拷貝回第一區(qū)域的服務器;
刪除模塊310,還用于刪除第一區(qū)域的服務器上所述用戶的漫游信息。
上述訪問請求的處理裝置中,接收模塊31接收用戶發(fā)送的訪問請求之后,獲得模塊32根據(jù)上述用戶的用戶標識獲得上述用戶的注冊地址,根據(jù)上述訪問請求獲得上述用戶當前使用的地址,然后確定模塊33根據(jù)上述用戶的注冊地址和上述用戶當前使用的地址確定處理上述訪問請求的服務器,從而可以保證寫操作只發(fā)生在一個區(qū)域的服務器上,避免了寫競爭產生臟數(shù)據(jù),而且每次處理用戶的訪問請求的都是距離用戶最近的服務器,進而可以提高訪問速度,實現(xiàn)應用的全球化部署,提高用戶體驗度。
需要說明的是,在本申請的描述中,術語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。此外,在本申請的描述中,除非另有說明,“多個”的含義是兩個或兩個以上。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應被本申請的實施例所屬技術領域的技術人員所理解。
應當理解,本申請的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領域公知的下列技術中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(Programmable Gate Array;以下簡稱:PGA),現(xiàn)場可編程門陣列(Field Programmable Gate Array;以下簡稱:FPGA)等。
本技術領域的普通技術人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
此外,本申請各個實施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質中。
上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、 或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本申請的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
盡管上面已經示出和描述了本申請的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本申請的限制,本領域的普通技術人員在本申請的范圍內可以對上述實施例進行變化、修改、替換和變型。