使用資料庫來均勻非配任務

2021-09-01 01:58:06 字數 517 閱讀 9850

最近做的乙個專案中,有乙個計算模組非常的消耗cpu資源,所以就從開始就規劃成了乙個併發的模組。併發就難免要處理任務的分配,在這個專案中使用了乙個非常簡單的方式做了這個任務分配,後來在stack overflow上也看見這個方法。感覺還有意思的。

具體的做法就是先將任務持久化到資料庫中,table的名字是xx_task結構可以是:

id     

c1      

c2     

然後每個計算例項主動來這個表中領取任務,為了避免兩個計算例項領取到相同的任務可以按照任務的id對任務集合做乙個hash。然後每個計算例項去自己的任務子集中拿屬於自己的任務。比如,部署了7個計算例項,那麼編號為1的計算例項領取任務的sql可以這樣寫:

select * from xx_task where id mod 7 = 0

只要任務的id是連續的,那麼就可以保證均勻的分配任務了。當然,這個方法有個弊端,就是沒有master,如果乙個計算例項crash了,那麼它的任務就沒人做了。所以對於那種高可用要求的場景可能就不太合適了。

使用sqlite資料庫來管理資料

python自帶有sqlite資料庫,只需要在firefox上載入sqlite manager就可以有檢視化的資料庫 也就是將以前通過pickle來進行資料的io變為通過資料庫來進行io。資料庫的建立 同時建立了兩張表athlete 儲存姓名和生日 和timing data 儲存時間 兩張表通過id...

使用FMDB框架來載入資料庫

1 開啟資料庫 先要獲取沙盒的資料庫檔名,並建立資料庫檔名,定資料庫 property nonatomic,strong fmdatabase db 0.獲得沙盒中的資料庫檔名 nsstring filename nssearchpathfordirectoriesindomains nsdocum...

SequoiaDB 巨杉資料庫 資料庫引數配置

引數配置 sequoiadb 支援命令列方式及配置檔案方式進行引數配置。命令列方式配置 在啟動 sequoiadb 時傳入配置引數值 sequoiadb businessname yyy catalogaddr ubuntu wjm 30003,ubuntu wjm 30013,ubuntu wjm...