新手问题 高并发下,第三方登陆的疑问

benzhang · 2015年07月03日 · 最后由 benzhang 回复于 2015年07月08日 · 1540 次阅读

最近在做一个系统只有第三方的登陆,由于并发量比较大,估计大概会有400到500左右的并发量。但是由于是依赖于第三方的服务比如(Facebook, Twitter或者QQ),延时肯定比本地数据库要高。后台的服务器用的是unicorn,多进程服务器,所以如果要服务器不是太慢的话,得多开些进程才能够处理这样的并发量。但是问题就是如果并发量再增大的话,只能通过增加进程数量来解决吗?因为数据库连接也是有限的,这么多进程都连接同一个数据库,还得弄个连接池。当然如果用异步多线程来解决就很完美,比如puma之类的多线程服务器。由于没有在实际项目中用过puma,目前还在试验阶段。也想过要放到background job里去实现,但由于是登陆,不是很现实的样子。不知道大家有没什么好的建议?谢谢分享

共收到 4 条回复

怕登录的第三方接口调用阻塞影响业务的响应时间,可以考虑把登录交给单独的unicorn 比如在nginx配置第三方登录的路径走指定另外的unicorn. 或直接把登录和用户相关的抽出来,用另外一个子域名,做成passport服务

#1楼 @cxh116 非常感谢你的建议。对我很有帮助。我决定尝试一下把登陆抽取出来,用puma来实现。

可以将登陆的服务使用异步服务的方式处理。例如nodejs。也就是说你调用的第三方不会阻塞http的响应,unicorn肯定是不行的,unicorn的并发是多进程的,并发的能力取决于unicorn的进程数,一台机器上并发400多个进程性能会很差的。

#3楼 @jimrokliu 谢谢你的建议。我现在已经把IO高的部分分离出来了,也考虑是否要用nodejs去做这一块,但感觉对nodejs不是太有把握,现在用puma去跑了,测试结果还是蛮满意的。迟点看看能否整理点对比出来。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册