1
Ricepig 2013-07-24 00:19:42 +08:00
虽然聊天从业务上是有状态的,但是希望底层实现时能无状态吧。
这样就不用保存websocket了,只要保证新的websocket能建立并恢复到当初的样子就好了 |
2
pubby 2013-07-24 01:32:55 +08:00 via Android
不太了解tornado,
是否可以这样架构: 1、Tornado只负责和websocket以及用户交互服务 2、写个聊天业务进程,跟那些tornado进程网络通信,并负责聊天业务处理,只要知道用户在哪个tornado 上,就命令哪个去处理。把这个当成中枢,把那些tornado当成跑腿的 |
3
saharabear 2013-07-24 01:47:55 +08:00
我用php+数据库(内存数据库)做过聊天室,压力大的情况下,不如上一些专门的聊天服务器,比如jabber或者类似的专用协议,走http.
|
4
notedit 2013-07-24 02:16:41 +08:00 1
两个方案:
方案一:每个进程保存一部分连接,用redis的pub/sub 来进行信息的广播 方案二:在redis里面保存连接的文件描述符(int), 进行广播的时候 通过文件描述符生成链接对象 |
5
jayn1985 OP @notedit 第一个方案也想过,不过没深入往那边去考虑;就我自己提的那个方案,你的第二个方案倒是给了我一些启发,多谢指导:)
|
6
jayn1985 OP @saharabear 感谢你的回复,我只是想写个程序玩玩,还没到服务器压力巨大的那个地步:)
|