不知道哪位兄弟做过,能否指点下
16 回复
- session外存储,比如使用redis,这样多节点间可以共享
- 负载均衡使用nginx,转发请求到各个node chat节点
- redis存储用户基本信息,如状态信息、好友关系
- node chat节点间通信使用redis的pub/sub
- 前端使用socket.io或者自己封装长连接
- 做好客户端断开重练和服务端node chat节点的动态增删
pomelo …
https://github.com/NetEase/pomelo/wiki/tutorial1–%E5%88%86%E5%B8%83%E5%BC%8F%E8%81%8A%E5%A4%A9
NB,说的太全面了! 1.session用redis做外存,怎么保证session的同步啊?因为reids的读写都是异步的,而且要经过socket传输,所以不可避免的会出现session不同步的情况。 2.redis当做rpc通信使用,这个想法很有创意,不知道有没有测试过其性能啊?
这也是我之前考虑的问题,不过还没有很好的解决方式……
@halfblood session里尽量不要存经常变动的信息,而且只有一个节点负责session的话没有同步问题啊,所有客户端都是使用同一个redis节点里的session。redis的pub/sub性能可以啦。
@sumory 如果允许用户修改session,即使不是临界资源也会不同步的。比如一个用户连续两个有先后顺序请求,第一个请求对session做了修改,而第二次请求需要获取修改后的session信息。但是session的读写完全是异步的,不能保证第二次请求获取的session就是最新的。