[發明專利]一種處理異步任務的方法和系統有效
| 申請號: | 201310276883.4 | 申請日: | 2013-07-03 |
| 公開(公告)號: | CN103345423A | 公開(公告)日: | 2013-10-09 |
| 發明(設計)人: | 李鵬濤 | 申請(專利權)人: | 北京京東尚科信息技術有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46 |
| 代理公司: | 中原信達知識產權代理有限責任公司 11219 | 代理人: | 劉光明;陸錦華 |
| 地址: | 100080 北京*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 處理 異步 任務 方法 系統 | ||
技術領域
本發明涉及一種處理異步任務的方法和系統。
背景技術
物流配送行業,配送人員通常使用個人數字助理(PDA)設備,通過無線網絡進行多種配送任務操作,如收貨,驗貨,妥投等。對于大型物流配送系統,存在大量配送人員同時進行系統操作的場景,造成大并發系統調用,對于業務邏輯復雜,后臺計算比較慢的情況,采用直接同步調用存在諸多問題,因此一般都采用將同步調用轉變為異步調用方式來解決。
不僅僅是物流配送系統,對于一般互聯網產品,在大并發情況下,同樣會采取異步處理方案,而采用異步任務處理程序(Worker)模式,是最為廣泛采用的方式。
現有的異步任務處理程序(Worker)解決方案,都是基于數據庫的實現,其中包含的主要動作是插入對應的任務表,根據調度算法,使對應的worker處理相關的任務。以物流配送系統為例,主要的處理流程有:配送人員操作的PDA通過無線網絡調用PDA網關應用,網關將系統同步調用轉變為插入異步任務,任務插入成功即返回,以提高系統處理能力;異步任務處理程序(worker)從系統對應的數據庫取出對應的任務進行處理,完成后對任務進行標識。該方案對數據庫的依賴非常大,對于每次系統調用,要進行數據庫插入、選擇,以及多次的更新操作,在系統壓力特別大的情況下,會造成數據庫連接數不足,處理緩慢的情況。在網絡狀況不佳的情況下,有時造成相同的操作數據被重復提交,對于重復任務容易出現多個worker同時處理相同的任務,這有可能造成數據庫死鎖,從而使系統崩潰。
發明內容
有鑒于此,本發明提供一種處理異步任務的方法和系統,有助于克服現有技術中的上述種種不足。
為實現上述目的,根據本發明的一個方面,提供了一種處理異步任務的方法。
本發明的處理異步任務的方法包括:網關將接收到的任務數據插入Redis中的任務數據隊列;異步任務處理程序從所述任務數據隊列中獲取任務數據,然后根據獲取的任務數據執行任務。
可選地,所述將接收到的任務數據插入Redis中的任務數據隊列的步驟包括:對任務數據字符串取一致性哈希值,對該哈希值按照任務數據隊列的數目取模,將任務數據插入序號為該模的任務數據隊列;所述根據獲取的任務數據執行任務的步驟包括:從任務數據隊列中取出預設數目條任務數據并進行去重處理,根據剩余的任務數據執行任務,在執行各件任務時,先將任務數據字符串的一致性哈希值作為鍵名保存到所述Redis中,在保存成功的情況下執行該任務然后刪除作為鍵名的該一致性哈希值,在保存不成功的情況下放棄執行該任務。
可選地,在所述保存成功的情況下,還包括:所述異步任務處理程序向Redis提供過期時間,從所述保存完成時起經過該過期時間后,Redis刪除作為鍵名的所述一致性哈希值。
可選地,所述異步任務處理程序從所述Redis中的隊列中獲取任務數據之前,還包括:所述異步任務處理程序判斷所述Redis中的任務數據隊列的數目是否超出預設閾值;若是,則進行所述根據獲取的任務數據執行任務的步驟,否則不進行該步驟,而是將獲取任務數據保存到數據庫內,然后啟動基于該數據庫的處理程序。
根據本發明的另一方面,提供了一種處理異步任務的系統。
本發明的處理異步任務的系統包括:網關裝置,用于將接收到的任務數據插入Redis中的任務數據隊列;異步任務處理裝置,用于從所述任務數據隊列中獲取任務數據,然后根據獲取的任務數據執行任務。
可選地,所述網關裝置還用于:對任務數據字符串取一致性哈希值,對該哈希值按照任務數據隊列的數目取模,將任務數據插入序號為該模的任務數據隊列;所述異步任務處理裝置還用于:從任務數據隊列中取出預設數目條任務數據并進行去重處理,根據剩余的任務數據執行任務,在執行各件任務時,先將任務數據字符串的一致性哈希值作為鍵名保存到所述Redis中,在保存成功的情況下執行該任務然后刪除作為鍵名的該一致性哈希值,在保存不成功的情況下放棄執行該任務。
可選地,所述異步任務處理裝置還用于:向Redis提供過期時間,以供所述Redis從所述保存完成時起經過該過期時間后,刪除作為鍵名的所述一致性哈希值。
可選地,所述異步任務處理裝置還用于:判斷所述Redis中的任務數據隊列的數目是否超出預設閾值;若是,則根據獲取的任務數據執行任務,否則將獲取任務數據保存到數據庫內,然后啟動基于該數據庫的處理程序。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京京東尚科信息技術有限公司,未經北京京東尚科信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310276883.4/2.html,轉載請聲明來源鉆瓜專利網。





