多進(jìn)程處理任務(wù),但每個(gè)任務(wù)涉及的數(shù)據(jù)庫(kù)可能不一樣(多租戶),怎么維護(hù)數(shù)據(jù)連接呢
目的是開(kāi)多個(gè)worker進(jìn)程處理不同租戶的異步任務(wù)
最大總連接數(shù) = 進(jìn)程數(shù)量 * 租戶數(shù)量
租戶有1000,進(jìn)程10個(gè),那么每個(gè)進(jìn)程維護(hù)的數(shù)量就是1萬(wàn)
用 https://github.com/illuminate/database 或者 https://www.kancloud.cn/manual/think-orm/1257998 ,他們都支持多數(shù)據(jù)庫(kù)啊。
比如thinkorm,使用使用哪個(gè)數(shù)據(jù)庫(kù)就直接調(diào)用 Db::connect('db1')->table('table1')->where()....
;
數(shù)據(jù)初始化放在onWorkerStart里調(diào)用 Db::setConfig(config('thinkorm'));
。
我覺(jué)得你可以直接用webman http://wtbis.cn/doc/webman ,隊(duì)列任務(wù)、多數(shù)據(jù)庫(kù)都有文檔,直接用
這個(gè)辦法我明白,只是每個(gè)租戶都是不同的數(shù)據(jù),這樣一來(lái)每個(gè)進(jìn)程都可能需要有db1....db1000
可能在每次請(qǐng)求 取到租戶的數(shù)據(jù)庫(kù)名稱,然后 在執(zhí)行 Db::query('use database xxxx'); 了