加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 会话可以在Heroku上使用多个web dynos吗?

发布时间:2020-12-17 04:32:03 所属栏目:百科 来源:网络整理
导读:如果您在Heroku上运行带有多个Web dynos的Rails 3应用程序, 每次点击应用程序时,您是否通常使用不同的网络动态连接? 会话可以在不同的网络动态中运行吗? 它是否适用于不同的Rails会话存储(ActionDispatch :: Session :: CookieStore, ActiveRecord :: Sess
如果您在Heroku上运行带有多个Web dynos的Rails 3应用程序,

>每次点击应用程序时,您是否通常使用不同的网络动态连接?
>会话可以在不同的网络动态中运行吗?
>它是否适用于不同的Rails会话存储(ActionDispatch :: Session :: CookieStore,
ActiveRecord :: SessionStore和ActionDispatch :: Session :: CacheStore)

解决方法

简而言之 – 会话将适用于多个网络动态.

Sessions可以在Web dynos上运行 – 因为Rail的会话支持设计允许它.如果有的话,web dyno模型正是Rail的横向扩展方式.

1.每次点击应用程序时,您是否通常使用不同的网络dyno连接?

基于heroku文档:

The routing mesh is responsible for determining the location of your application’s web dynos within the dyno manifold and forwarding the HTTP request to one of these dynos. Dyno selection is performed using a random selection algorithm.

所以dyno选择是随机的……但是dyno必须安装你的应用程序.因此,如果您有多个dyno,那么您最终可能会连接到不同的dyno(这很重要,因为这有助于实现负载平衡和高可用性)

2.会话可以跨越不同的网络动态吗?

是.大多数Web堆栈通过执行以下操作来支持会话:

>分配会话ID – 这是一个唯一的ID,通常将其设置为会话cookie,以便浏览器始终将带有任何HTTP请求的id发送给原始主机
>提供将会话ID映射到实际会话数据的存储

因此,通过此过程,可以支持会话,因为每个入站HTTP请求都具有会话ID,当处理您的请求时,Web dyno可以访问该会话ID.

3.它适用于不同的Rails会话存储(ActionDispatch :: Session :: CookieStore,ActiveRecord :: SessionStore和ActionDispatch :: Session :: CacheStore)

ActionDispatch ::会议::的CookieStore
是. cookie存储将加密的会话数据存储为cookie.因此,您的浏览器会将所有会话数据(加密)发送回主机,然后解密,以便在您的应用中使用.

的ActiveRecord :: SessionStore
是. cookie存储将加密的会话数据存储在数据库表中.然后将ID指定为cookie.因此,您的浏览器将ID发送到主机,然后用于从数据库加载会话数据.由于所有Web dynos都与DB连接,这意味着它也受支持.

ActionDispatch ::会议:: CacheStore是的,但您需要缓存存储服务(例如MemCache插件). Cookie存储将加密的会话数据存储在缓存存储(memcache)中,缓存存储是所有Web dynos中的共享服务.然后将ID指定为cookie.因此,然后用于从缓存存储(memcache)加载会话数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读