Egg: 请问多个worker如何共用一个缓存?

Created on 25 Sep 2017  ·  6Comments  ·  Source: eggjs/egg

站点里想定时拉取一些数据,目前使用了schedule功能,type是all,即多个worker每个都会拉一次

现在想只有随机一个worker拉取,其他的都能访问,尝试设置成worker,但是遇到一个问题,这些worker如何共享一份数据? 将数据直接放在app对象里好像不行,测试发现每个worker都有独立的app对象。

问题:请问多个worker如何共用一个缓存?

Most helpful comment

@miaojiuchen 我使用的是 memcache 专门做状态机, 相关插件可以看 egg-memcache

All 6 comments

每个 worker 都是一个进程,自然是独立的。

简单的做法是:改为 worker 一个去拉取,拉完后通过 messenger 发给其他 worker。

高级的做法看 https://eggjs.org/zh-cn/advanced/cluster-client.html

@miaojiuchen 我使用的是 memcache 专门做状态机, 相关插件可以看 egg-memcache

通过 memcache / redis 外面来搞是最佳方式,因为 agent 的方式,在集群情况下就没辙了。

@atian25 请问下,我自己写的 egg-memcache 能加入到 eggjs group 中吗?

@skyfore 不一定必须要加到 egg 这边的,你看 koa 生态很多库都是开枝散叶的。这里很多库都想分出去了。

@atian25 恩,OK~

Was this page helpful?
0 / 5 - 0 ratings