CNode

Sync sessions data among workers

Wwillwen发布于14 年前最后回复14 年前15 回复7215 浏览0 收藏

从开始使用春哥的node-cluster以来,就一直出现一个很严重的问题,就是server的session数据没有办法同步,而目前小问在博客程序Camplus中要是用的session详细数据用数据库存储。不过小问觉得还可以用process message模型来同步Workers之间的信息。下一个版本的webjs中的Session API也要改一改:

web.use(web.session({ get: fun.. , set: fun }));

中间件加入Session Getter/Setter参数。

//set data
req.session("foo", "something");
//get data
req.session("foo");

不知道大家还有什么奇葩方法不。。 请尽量避免硬性存储

查看回复

回复 (15)

S
sunshine1988#1·14 年前

要共享session的话 还要放内存里 就用memcache之类的吧~

L
leizongmin#2·14 年前
引用 bobchennan表示用的nodejs自带Cluster,共享方式是直接用redis存储。。。

@WillWen 小问应该测试一下两种实现方案那个好,虽然“软存储”看上去不用依赖redis之类的数据库,但是基于cluster的message来传送session数据效率如何?是否会比前者更高效?

坐等结果。。。

W
willwen#3·14 年前
引用 bobchennan表示用的nodejs自带Cluster,共享方式是直接用redis存储。。。

@leizongmin 这是肯定的,不过如果是在自动生成的App Template,这个可以起到示范效果,然后用上面这样的API也能无缝接数据库。

B
bobchennan#5·14 年前

表示用的nodejs自带Cluster,共享方式是直接用redis存储。。。

W
willwen#6·14 年前
引用 bobchennan表示用的nodejs自带Cluster,共享方式是直接用redis存储。。。

目前也是用这种解决方案,不过我想用软存储的方式实现Session(放在内存)。。

S
sunshine1988#7·14 年前
引用 sunshine1988要共享session的话 还要放内存里 就用memcache之类的吧

@WillWen 嘿嘿 不知道现在node的memcache客户端实现情况怎么样 你如果研究使用的话 希望分享下心得哦 推荐个模块啥的!

S
sumory#8·14 年前

session里不建议放很多数据,数据一多一致性有效性什么的都要费心去维护,session又是如此敏感和重要,要小心控制。

J
JacksonTian#9·14 年前

小问,session数据不要放在node内存中,不然访问量一大,内存就告警。必须用redis或者memcached。

F
fengmk2#12·14 年前

小问,你这样使用内存只能是在开发环境下,生产环境是不行的。

D
DoubleSpout#13·14 年前

小问,你可以看下www.rrestjs.com,我是简单实现了多进程session同步,但是只是开发环境,真正上线还是存在第三方介质中吧。

W
willwen#15·14 年前
引用 fengmk2小问,你这样使用内存只能是在开发环境下,生产环境是不行的。

嗯,所以通常在'mode'设置成'pro'的时候,我会提示内存警告。

参与回复
登录后即可参与回复。登录