pomelo扩展模式一
2016-03-04 14:32
260 查看
为何要讨论这个问题,当初期玩家不多的时候一个后台台可以承载N个人(假设N=100),但是随着人越来越多,那么这个前台就承载不了了,比如第N+1人进来时候如何处理呢?
这个时候就需要增加服务来支持了。
以下以聊天室为基础,进行探索。
首先当后台不够的时候(chatroom),我们需要增加一个后台,如下图所示
我们的想法自然是bk1上的玩家可以和bk2上的玩家进行通讯,实际上这样做行不能,bk1上的玩家只能和bk1上的玩家进行通讯,bk2上的玩家与bk1上的玩家是隔开的。即使是通过同一个cs也不行。这种情可以考虑单独扩容,比如人数从100人支持到200人,假设cs能承载的情况下,需要增加一个后台bk2服务,但在bk2上的玩家是无法与bk1上的玩家直接通讯的,人数却可以提升到2N,如果cs够的话,可以增加n个bk服务。以支持更多的玩家,这就好比QQ聊天室里的房间,房间1,房间2,的玩家无法直接对话。但是却可以开好多房间,前台可以分类,如pomelo讨论组,nodejs讨论组,每个组下分房间1…房间n。
实验代码如下:
server.json
增加一个chat-server
app.js
增加对于增加的后台的支持
这样子的话玩家分被平均分配到每个bk上,这样就实现了独立房间的扩展!是不是很酷!
https://www.processon.com/i/568c6ea4e4b0e51d149a085f
这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐
这个时候就需要增加服务来支持了。
以下以聊天室为基础,进行探索。
首先当后台不够的时候(chatroom),我们需要增加一个后台,如下图所示
我们的想法自然是bk1上的玩家可以和bk2上的玩家进行通讯,实际上这样做行不能,bk1上的玩家只能和bk1上的玩家进行通讯,bk2上的玩家与bk1上的玩家是隔开的。即使是通过同一个cs也不行。这种情可以考虑单独扩容,比如人数从100人支持到200人,假设cs能承载的情况下,需要增加一个后台bk2服务,但在bk2上的玩家是无法与bk1上的玩家直接通讯的,人数却可以提升到2N,如果cs够的话,可以增加n个bk服务。以支持更多的玩家,这就好比QQ聊天室里的房间,房间1,房间2,的玩家无法直接对话。但是却可以开好多房间,前台可以分类,如pomelo讨论组,nodejs讨论组,每个组下分房间1…房间n。
实验代码如下:
server.json
增加一个chat-server
[code] {"id":"chat-server-1", "host":"127.0.0.1", "port":6050}, {"id":"chat-server-2", "host":"127.0.0.1", "port":6051},
app.js
增加对于增加的后台的支持
[code]// 定义路由函数来把玩家路由到指定的bk上 var chatRoute = function(session, msg, app, cb) { var chatServers = app.getServersByType('chat'); if(!chatServers || chatServers.length === 0) { cb(new Error('can not find chat servers.')); return; } if(!session){ cb(null, chatServers[0].id); return; } //put user into channel var res = Util.dispath(session.get('rid'), chatServers); cb(null, res.id); }; app.route('chat', chatRoute);
这样子的话玩家分被平均分配到每个bk上,这样就实现了独立房间的扩展!是不是很酷!
https://www.processon.com/i/568c6ea4e4b0e51d149a085f
这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐
相关文章推荐
- Windows下Spark单机环境配置
- 【转】Android Support v4、v7、v13的区别和应用场景
- 大浪淘沙公司面试题
- iOS之多线程精髓
- 双向链表中基本函数的实现
- BLE-NRF51822教程9-动态广播
- Linux 下jsoncpp安装
- grape api参数为array
- 软件测试的一般步骤
- BLE-NRF51822教程8-软件定时器的使用
- 关于Qt Graphics编程的几点经验总结
- poj 3276Face The Right Way—反转(开关问题)
- 腾讯云金融机房硬件配置大揭秘
- grape api参数为array
- hdu -1698 很水的线段树 lazy
- vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
- strtoul函数的使用(将字符串转换成无符号长整型数)
- 比较下 下面的代码 隐式等待
- ios 热修复
- [转]看懂ExtJS的API