多数据库怎么维护连接

z985342160

多进程处理任务,但每个任务涉及的数据库可能不一样(多租户),怎么维护数据连接呢

目的是开多个worker进程处理不同租户的异步任务

最大总连接数 = 进程数量 * 租户数量

租户有1000,进程10个,那么每个进程维护的数量就是1万

阅读 248
1个回答

keytehu

https://github.com/illuminate/database 或者 https://www.kancloud.cn/manual/think-orm/1257998 ,他们都支持多数据库啊。
比如thinkorm,使用使用哪个数据库就直接调用 Db::connect('db1')->table('table1')->where()....;
数据初始化放在onWorkerStart里调用 Db::setConfig(config('thinkorm'));

我觉得你可以直接用webman https://www.workerman.net/doc/webman ,队列任务、多数据库都有文档,直接用

  • z985342160 2021-11-06

    这个办法我明白,只是每个租户都是不同的数据,这样一来每个进程都可能需要有db1....db1000

  • 二当家的 2021-12-21

    可能在每次请求 取到租户的数据库名称,然后 在执行 Db::query('use database xxxx'); 了