pomelo扩展模式一
来源:互联网 发布:mac的flash怎么更新 编辑:程序博客网 时间:2024/04/28 10:05
为何要讨论这个问题,当初期玩家不多的时候一个后台台可以承载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
{"id":"chat-server-1", "host":"127.0.0.1", "port":6050}, {"id":"chat-server-2", "host":"127.0.0.1", "port":6051},
app.js
增加对于增加的后台的支持
// 定义路由函数来把玩家路由到指定的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
这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐
0 0
- pomelo扩展模式一
- pomelo扩展模式二
- pomelo源码分析(一)
- Pomelo杂记(一)
- Pomelo杂记(一)
- Pomelo 新手入门(一)
- (一)主扩展模式
- 扩展接口设计模式(一)
- Pomelo 新手学习笔记(一)
- pomelo
- Pomelo聊天室源码分析(一)
- pomelo+cocos2d-js之初学笔记一
- 扩展系统功能——装饰模式(一)
- 扩展系统功能——装饰模式(一)
- 笔记整理----高薪课程一 ---扩展(享元模式))
- 扩展系统功能——装饰模式(一)
- pomelo集群配置模式下的日志问题
- 网易开源游戏服务器框架-Pomelo实践(一)
- 关于Qt Graphics编程的几点经验总结
- android Studio
- BLE-NRF51822教程9-动态广播
- mysql 5.6.25启动不起来
- IDEA 创建基于Maven的spring mvc框架
- pomelo扩展模式一
- iOS-SQLite数据库基本语句
- 使用vi编辑器遇到的问题
- BLE-NRF51822教程10—动态密码(配对码)
- java 基础记录
- tableView:cellForRowAtIndexPath:
- Mac下安装Lua。
- android之canvas.draw方法需要注意的地方
- BLE-NRF51822教程11-手机动态修改设备名