13:00)新,且執(zhí)行步驟305。
[0046]步驟304,如果第一數據版本信息與第二數據版本信息相同,或者第二數據版本信息比第一數據版本信息新,則IDC利用用戶標識(即數據查詢請求消息中攜帶的用戶標識)在本地的數據庫中對應的用戶數據更新用戶標識在本地的緩存集群中對應的用戶數據,并從本地的緩存集群中查詢用戶標識對應的用戶數據,并返回攜帶了用戶標識對應的用戶數據的數據查詢響應消息。
[0047]在用戶A將數據I修改為數據4之前,IDC2的緩存集群2和數據庫2中將分別記錄用戶標識(用戶A)與對應的用戶數據(數據1、數據2和數據3),在用戶A將數據I修改為數據4之后,在第一數據版本信息與第二數據版本信息相同時,IDC2的緩存集群2中沒有記錄用戶標識(用戶A)對應的用戶數據,IDC2的數據庫2中記錄用戶標識(用戶A)與對應的用戶數據(數據4、數據2和數據3),在第二數據版本信息比第一數據版本信息新時,IDC2的緩存集群2中沒有記錄用戶標識(用戶A)對應的用戶數據,IDC2的數據庫2中記錄用戶標識(用戶A)與對應的用戶數據(數據4、數據2和數據3)。
[0048]基于此,IDC2在收到用于查詢用戶標識(用戶A)對應的用戶數據的數據查詢請求消息之后,利用該用戶標識(用戶A)在本地的數據庫2中對應的用戶數據(數據4、數據2和數據3)更新該用戶標識(用戶A)在本地的緩存集群2中對應的用戶數據,在用戶數據更新完成之后,該用戶標識(用戶A)在本地的緩存集群2中對應的用戶數據為數據4、數據2和數據3。之后,IDC2從本地的緩存集群2中查詢用戶標識(用戶A)對應的用戶數據(數據4、數據2和數據3),并返回攜帶了用戶數據(數據4、數據2和數據3)的數據查詢響應消息,即將數據4、數據2和數據3通過數據查詢響應消息返回給查詢用戶標識(用戶A)對應的用戶數據的用戶。
[0049]此外,IDC3的處理過程與IDC2的處理過程相同,在此不再重復贅述。
[0050]步驟305,如果第一數據版本信息比第二數據版本信息新,則IDC確定數據查詢請求消息對應的業(yè)務類型;如果該業(yè)務類型為第一業(yè)務類型,則執(zhí)行步驟306 ;如果該業(yè)務類型為第一業(yè)務類型,則執(zhí)行步驟307。
[0051]其中,該第一業(yè)務類型具體包括但不限于對業(yè)務實時性要求低的業(yè)務,如:生成好友業(yè)務或者刪除好友業(yè)務等;該第二業(yè)務類型具體包括但不限于對業(yè)務實時性要求高的業(yè)務,如:訂單金額修改業(yè)務等。
[0052]步驟306,IDC直接從當前本地的數據庫中查詢用戶標識對應的用戶數據,并返回攜帶了該用戶標識對應的用戶數據的數據查詢響應消息。
[0053]在用戶A將數據I修改為數據4之前,IDC2的緩存集群2和數據庫2中將分別記錄用戶標識(用戶A)與對應的用戶數據(數據1、數據2和數據3),在用戶A將數據I修改為數據4之后,在第一數據版本信息比第二數據版本信息新時,IDC2的緩存集群2中沒有記錄用戶標識(用戶A)對應的用戶數據,IDC2的數據庫2中將記錄用戶標識(用戶A)與對應的用戶數據(數據1、數據2和數據3)。基于此,IDC2在收到用于查詢用戶標識(用戶A)對應的用戶數據的數據查詢請求消息時,由于該數據查詢請求消息對應的業(yè)務類型對業(yè)務實時性要求低,因此,IDC2可以直接從當前本地的數據庫2中查詢該用戶標識(用戶A)對應的用戶數據(即數據1、數據2和數據3),并返回攜帶了該用戶數據(數據1、數據2和數據3)的數據查詢響應消息,即IDC2可以將數據1、數據2和數據3直接通過該數據查詢響應消息返回給查詢用戶標識(用戶A)對應的用戶數據的用戶。
[0054]此外,IDC3的處理過程與IDC2的處理過程相同,在此不再重復贅述。
[0055]步驟307,IDC向其它IDC發(fā)送攜帶用戶標識的數據庫查詢請求消息,由其它IDC在收到數據庫查詢請求消息后,查詢用戶標識在本地的數據庫中對應的用戶數據,并向IDC返回攜帶該用戶數據的數據庫查詢響應消息。
[0056]步驟308,IDC在收到數據庫查詢響應消息之后,利用該用戶標識對應的用戶數據(即數據庫查詢響應消息中攜帶的用戶數據)更新該用戶標識在本地的緩存集群中對應的用戶數據,從本地的緩存集群中查詢該用戶標識對應的用戶數據,并返回攜帶了該用戶標識對應的用戶數據的數據查詢響應消息。
[0057]在用戶A將數據I修改為數據4之前,IDC2的緩存集群2和數據庫2中將分別記錄用戶標識(用戶A)與對應的用戶數據(數據1、數據2和數據3),在用戶A將數據I修改為數據4之后,在第一數據版本信息比第二數據版本信息新時,IDC2的緩存集群2中沒有記錄用戶標識(用戶A)對應的用戶數據,IDC2的數據庫2中將記錄用戶標識(用戶A)與對應的用戶數據(數據1、數據2和數據3)。基于此,IDC2在收到用于查詢用戶標識(用戶A)對應的用戶數據的數據查詢請求消息時,由于該數據查詢請求消息對應的業(yè)務類型對業(yè)務實時性要求高,因此,IDC2向IDCl發(fā)送攜帶用戶標識(用戶A)的數據庫查詢請求消息,IDCl在收到數據庫查詢請求消息之后,查詢用戶標識(用戶A)在本地的數據庫I中對應的用戶數據(即數據4、數據2和數據3),并通過數據庫查詢響應消息將用戶標識(用戶A)對應的用戶數據(即數據4、數據2和數據3)返回給IDC2。進一步的,IDC2在收到數據庫查詢響應消息之后,利用該數據庫查詢響應消息中攜帶的該用戶標識(用戶A)對應的用戶數據(數據4、數據2和數據3)更新該用戶標識(用戶A)在本地的緩存集群2中對應的用戶數據,此時該用戶標識(用戶A)在本地的緩存集群2中對應的用戶數據為數據4、數據2和數據3。之后,IDC2從本地的緩存集群2中查詢用戶標識(用戶A)對應的用戶數據(數據4、數據2和數據3),并返回攜帶了用戶數據(數據4、數據2和數據3)的數據查詢響應消息,即IDC2將數據4、數據2和數據3通過數據查詢響應消息返回給查詢用戶標識(用戶A)對應的用戶數據的用戶。
[0058]此外,IDC3的處理過程與IDC2的處理過程相同,在此不再重復贅述。
[0059]綜上所述,本申請實施例中,在更新用戶數據時,IDC在本地的緩存集群中更新完畢用戶數據之后,向其它IDC發(fā)送的消息中包含用戶標識和數據版本信息,而不再包含所有用戶數據,由于用戶標識和數據版本信息的大小遠遠小于用戶數據的大小,因此IDC向其它IDC發(fā)送的消息中攜帶內容的遠遠小于異步消息中攜帶的用戶數據,從而可以減小網絡帶寬開銷,并保證用戶得到的用戶數據的一致性,使用戶查詢到最新的用戶數據的概率大大提聞。
[0060]實施例二
[0061]基于與上述方法同樣的申請構思,本申請實施例提供了一種IDC,應用于包括多個IDC的網絡中,各IDC內包括緩存集群和數據庫,如圖4所示,所述IDC具體包括:存儲模塊11,用于在收到來自其它IDC的攜帶了用戶標識和數據版本信息的消息時,在緩存集群中記錄該用戶標識與該數據版本信息之間的對應關系;查詢模塊12,用于在收到用于查詢用戶標識對應的用戶數據的數據查詢請求消息時,查詢所述用戶標識在本地的緩存集群中對應的第一數據版本信息,并查詢所述用戶標識在本地的數據庫中對應的第二數據版本信息;更新模塊13,用于當第一數據版本信息與第二數據版本信息相同,或第二數據版本信息比第一數據版本信息新時,利用所述用戶標識在本地的數據庫中對應的用戶數據更新所述用戶標識在本地的緩存集群中對應的用戶數據;緩存通信模塊14,用于從本地的緩存集群中查詢所述用戶標識對應的用戶數據,并返回攜帶了所述用戶標識對應的用戶數據的數據查詢響應消息。
[0062]優(yōu)選地,本申請實施例中,所述存儲模塊11,還用于在收到來自其它IDC的攜帶了用戶標識和數據版本信息的消息之后,刪除本地的緩存集群中記錄的該用戶標識對應的用戶數據。
[0063]優(yōu)選地,本申請實施例中,所述更新模塊13,還用于在收到用于更新用戶標識對應的用戶數據的數據更新請求消息時,更新該用戶標識在本地的緩存集群中對應的用戶數據;所述緩存通信模塊14,還用于確定當前的數據版本信息,并向其它IDC發(fā)送攜帶了該用戶標識和該數據版本信息的消息。
[0064]優(yōu)選地,本申請實施例中,所述更新模塊13,還用于在收到用于更新用戶標識對應的用戶數據的數據更新請求消息時,更新該用戶標識在本地的數據庫中對應的用戶數據;所述存儲模塊11,還用于確定當前的數據版本信息,并在本地的數據庫中記錄該用戶標識與該數據版本信息之間的對應關系;所述IDC還包括數據庫通信模塊15 ;其中,所述數據庫通信模塊15,用于通知其它IDC更新該用戶標識在本地的數據庫中對應的用戶數據,并在本地的數據庫中記錄該用戶標識與該數據版本信息之間的對應關系。
[0065]優(yōu)選地,本申請實施例中,所述緩存通信模塊14,還用于在第一數據版本信息比第二數據版本信息新時,確定所述數據查詢請求消息對應的業(yè)務類型;如果所述業(yè)務類型為第一業(yè)務類型,則直接從當前本地的數據庫中查詢所述用戶標識對應的用戶數據,并返回攜帶了所述用戶標識對應的用戶數據的數據查詢響應消息;如果所述業(yè)務類型為第二業(yè)務類型,則向其它IDC發(fā)送攜帶所述用戶標識的數據庫查詢請求消息,由其它IDC查詢所述用戶標識在本地的數據庫中對應的用戶數據,并向所述IDC返回攜帶所述用戶標識對應的用戶數據的數據庫查詢響應消息;在收到所述數據庫查詢響應消息之后,指示所述更新模塊13利用所述用戶標識對應的用戶數據更新所述用戶標識在本地的緩存集群中對應的用