【技術實現步驟摘要】
本專利技術涉及通信
,尤其涉及一種數據推送方法和時序控制器以及數據推送系統。
技術介紹
在應用程序(Application,APP)里需要展示用戶數據,例如在游戲類的APP中需要展示玩家在游戲里的數據,包括玩家信息、好友列表、比賽戰績等。這些數據的產生來自游戲服務器,游戲服務器會在數據產生后推送一份給APP服務器,APP服務器再保存起來供用戶查詢。游戲服務器向APP服務器推送的數據量較大時,通常采用分包的方法來推送數據,即將一個較大的數據包拆分為多個較小的數據包推送至APP服務器。APP服務器就會在極短時間內接收到來自同一個用戶的多個數據包。由于APP服務器在處理每一個數據包時,都要對存儲服務器進行讀和寫兩次操作,在保存數據的時候就會遇到高并發讀寫沖突的問題,導致數據保存失敗或數據讀寫效率過低,APP服務器短時間內接收到多個數據包,APP服務器要進行針對每個數據包都進行一次讀寫操作,而這些讀操作和寫操作之間的順序是隨機的,因此可能會出現讀出來的數據不是所需要的數據,寫入的數據覆蓋了其他服務器所寫的數據,這種問題稱之為并發性讀寫沖突。現有技術中針對并發性讀寫沖突的一種解決方法是采用比較并交換(CompareAndSwap,CAS)操作的方法進行加鎖讀寫。具體的,APP服務器在對存儲服務器的某個位置上存儲的數據進行讀寫操作時采用CAS操作,CAS操作包含三個操作數:內存位置、預期原值和新值。如果內存位置的值與預期原值相匹配,那么APP服務器會自動將該位置值更新為新值。否則,APP服務器不做任何操作,因此通過加鎖讀寫的方式可以解決并發性讀寫沖突。但是本專 ...
【技術保護點】
一種數據推送方法,其特征在于,包括:接收交互式應用服務器分別發送的至少兩個數據包,將接收到的所述至少兩個數據包分別存儲到本地緩存隊列中;從所述本地緩存隊列中取出第一數據包,將所述第一數據包發送給應用程序服務器,由所述應用程序服務器使用所述第一數據包與存儲服務器進行讀寫處理;獲取在當前時刻所述應用程序服務器是否完成對所述第一數據包的讀寫處理;若在當前時刻所述應用程序服務器已經完成對所述第一數據包的讀寫處理,從所述本地緩存隊列中取出第二數據包,將所述第二數據包發送給所述應用程序服務器,由所述應用程序服務器使用所述第二數據包與所述存儲服務器進行讀寫處理。
【技術特征摘要】
1.一種數據推送方法,其特征在于,包括:接收交互式應用服務器分別發送的至少兩個數據包,將接收到的所述至少兩個數據包分別存儲到本地緩存隊列中;從所述本地緩存隊列中取出第一數據包,將所述第一數據包發送給應用程序服務器,由所述應用程序服務器使用所述第一數據包與存儲服務器進行讀寫處理;獲取在當前時刻所述應用程序服務器是否完成對所述第一數據包的讀寫處理;若在當前時刻所述應用程序服務器已經完成對所述第一數據包的讀寫處理,從所述本地緩存隊列中取出第二數據包,將所述第二數據包發送給所述應用程序服務器,由所述應用程序服務器使用所述第二數據包與所述存儲服務器進行讀寫處理。2.根據權利要求1所述的方法,其特征在于,所述至少兩個數據包是所述交互式應用服務器采用并發方式同時發送的;所述將接收到的所述至少兩個數據包分別存儲到本地緩存隊列中,包括:對接收到的所述至少兩個數據包分別進行依次順序編號,并按照編號順序將所述至少兩個數據包依次存儲到本地緩存隊列中。3.根據權利要求2所述的方法,其特征在于,所述從所述本地緩存隊列中取出第一數據包,包括:按照編號順序從所述本地緩存隊列中取出編號順序為首位的第一數據包,所述本地緩存隊列中取出所述第一數據包之后第二數據包處于編號順序的首位;所述從所述本地緩存隊列中取出第二數據包,包括:按照編號順序從所述本地緩存隊列中取出編號順序為首位的第二數據包。4.根據權利要求1所述的方法,其特征在于,所述至少兩個數據包是所述交互式應用服務器按照相鄰數據包之間的依賴順序發送的;所述將接收到的所述至少兩個數據包分別存儲到本地緩存隊列中,包括:從接收到的所述至少兩個數據包中確定相鄰數據包之間的依賴順序,并按照所述相鄰數據包之間的依賴順序將所述至少兩個數據包依次存儲到本地緩存隊列中。5.根據權利要求4所述的方法,其特征在于,所述從所述本地緩存隊列中取出第一數據包,包括:按照相鄰數據包之間的依賴順序從所述本地緩存隊列中取出不依賴于其它數據包的第一數據包,所述本地緩存隊列中與所述第一數據包具有依賴順序的數據包為第二數據包;所述從所述本地緩存隊列中取出第二數據包,包括:按照相鄰數據包之間的依賴順序從所述本地緩存隊列中取出與所述第一數據包具有依賴順序的第二數據包。6.根據權利要求1至5中任一項所述的方法,其特征在于,所述獲取在當前時刻所述應用程序服務器是否完成對所述第一數據包的讀寫處理,包括:判斷當前是否接收到所述應用程序服務器發送的對所述第一數據包的處理完成消息,若接收到所述對所述第一數據包的處理完成消息,則確定在當前時刻所述應用程序服務器已經完成對所述第一數據包的讀寫處理,若沒有接收到所述對所述第一數據包的處理完成消息,則確定在當前時刻所述應用程序服務器尚未完成對所述第一數據包的讀寫處理。7.根據權利要求1至5中任一項所述的方法,其特征在于,所述獲取在當前時刻所述應用程序服務器是否完成對所述第一數據包的讀寫處理,包括:將所述第一數據包發送給所述應用程序服務器的發送時間點記錄為起始時刻,判斷從所述起始時刻直至當前所經過的時間長度是否達到時長閾值,若所述時間長度達到所述時長閾值,則確定在當前時刻所述應用程序服務器已經完成對所述第一數據包的讀寫處理,若所述時間長度沒有達到所述時長閾值,則確定在當前時刻所述應用程序服務器尚未完成對所述第一數據包的讀寫處理。8.根據權利要求7所述的方法,其特征在于,所述時長閾值通過如下方式確定:獲取所述應用程序服務器與所述存儲服務器進行讀寫處理所需要的處理耗時;選擇大于或等于所述處理耗時的時間段作為所述時長閾值。9.一種時序控制器,其特征在于,包括:數據包存儲模塊,用于接收交互式應用服務器分別發送的至少兩個數據包,將接收到的所述至少兩個數據包分別存儲到本地緩存隊列中;第一發送模塊,用于從所述本地緩存隊列中取出第一數據包,將所述第一數據包發送給應用程序服務器,由所述應用程序服務器使用所述第一數據包與存儲服...
【專利技術屬性】
技術研發人員:馮鋒,
申請(專利權)人:騰訊科技深圳有限公司,
類型:發明
國別省市:廣東;44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。