我正在 Heroku Stack 上运行 Rails 应用程序(包括 Memcached、DJ 异步工作程序、MongoDB 持久存储)。
现在,我们使用 Twitter Oauth 作为我们网站上的唯一身份验证选项。(我们计划最终扩展到 FB 连接、OpenID 和/或电子邮件/密码)。
您可能知道,Ruby/Rails 应用程序不支持开箱即用的并发。在 Heroku 上,您可以启动额外的应用程序实例 (dynos),这会增加您的并发性(并发能力 = dynos 的数量),但每个实例的成本为 36 美元/月。
一般来说,这不是问题,因为站点上的平均请求需要 <100 毫秒。
Twitter OAuth 除外。对 Twitter 的 OAuth 相关请求平均需要大约 3,500 毫秒。
所以基本上,当任何人登录整个应用程序实例时,都会延迟 3-4 秒。
有什么体面的方法可以缓解这种情况吗?将这些动作放在异步 DJ 工作者中会不会很奇怪?它可能会使登录速度变慢一些,但至少如果一群人同时登录和/或 Twitter 非常慢,这些过程不会影响应用程序的其余部分/其他 Web 请求吗?
还有其他想法吗?