Rails Unicorn fork 的多个进程之间数据是否可以共享

xiongmaojames · 2015年10月07日 · 最后由 est 回复于 2015年10月08日 · 3475 次阅读

1、我了解到进程之间都是独立的,unicorn fork 的 多个进程 数据共享是如何解决的 2、之前是做 java /c# 的 ,服务端是多线程的模型,数据都是共用 的,我们只需要关注并发带来的问题 3、这样的问题,我搜了很久,无果!如果你愿意告诉我你解决搜索资料的方法,我非常感谢!

感谢! 这类的讨论和资料我看了一些!仍然有一些困惑,我慢慢道来哈!一、假如我的应用中需要用到验证码,那么我申请一个 hash 对象把验证码都存起来,那会不会 出现 申请的时候,在一个进程里面执行,验证的时候在另一个进程里面执行?
如果是 ,那就是你说的,需要借助数据库或者文件之类的办法,共享!

那上次我提到的 session 实际上并不是 unicorn 维护的,应该是 rack 在维护 session , 所以 session ,我写 rails 程序的时候并不需要关心对吧?

感谢,感谢!

验证码问题跟 Session 问题其实可以归类为一个问题,因为 Web 服务基于请求响应模式,在两次请求之间通过 Session 去保存临时状态,所以你的验证码状态可以通过 Session 来保存,而 Rails 为了可以水平扩张,默认使用 Cookie based 的 Session 保存机制,也就是说,Session 存储在 Cookie 中,Cookie 存储在客户端,客户端每次请求的 request 都会附带 Cookie 信息,在 server 端收到 cookie 然后还原出完整的 session,取得前一次请求中的验证码状态,这个机制刚刚好解决了你提出的验证码问题。

关于其他需要共享的状态信息,一般通过数据库或者其他持久化机制去保存。

哦 cookie based

  1. 通过数据共享组件,比如 db,redis 等解决
  2. “服务端是多线程的模型,数据都是共用 的 ” —— 这就不要吹嘘什么并发了吧。单机都抗住了,都没跨机器。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号