服务器通过长连接调用向客户端发消息,用pomelo做mobile app的server端, 谈谈我的想法...

目前项目基本运行ok,对pomelo主要有以下修改或者扩展:

【pomelo】-->对pomelo框架库的修改

【project】-->自己项目上层的处理1,【pomelo】socket.io配置为240秒一次心跳2,【pomelo】当业务子进程挂掉的时候,自动恢复child process3,【project】session,uid信息同步保存到mysql中,以便在多connector的时候查询到用户所处的connector,投递notify消息。放弃使用pomelo中的channel服务,调用rpcInvoke直接通过connector发送消息。4,【project】禁止非认证route,只在connector才能route到api服务器5,【project】对api服务器添加filter,只用通过认证的session才能调用接口

========old=====

这两天研究了一下pomelo,感觉是一个设计很好的框架. 而且发现基于nodejs socket.io方案可以很好的解决目前android客户端最麻烦的一个问题: 实时在线推送. (因为google的推送服务在国内网络不好用, google自己的推送基本是没指望了). socket.io和connector解决了长连接以及大量用户在线的问题. 当然附加的传输协议压缩也是一个亮点,比原始的http+json节约太多流量了,这点对移动端很重要.

但是这里有个问题还困扰着我,就是原有pomelo里面channel的概念.在push消息的时候,是基于channel的: ChannelService.prototype.pushMessageByUids()等.

但是channel又不是在整个服务器组中全局共享的,而是属于单个backend后台业务服务器. 那么就可能出现本来在同组(类似于qq群)中的用户被分配到了不同backend服务器中.那么push消息就会出问题.

解决的方案就是push是面向connector上的session的.换个角度来设计, 就是backend中完全没有channel. 类似于channel这种群组是存放在mysql中的.每个backend处理的时候,是和mysql这个数据共享者打交道,计算出要发送的对象userIdList, 最后再通过connector上存在的session把它们push出去.

提出这个问题的原因是,如果把pomelo设计为移动终端app的后台server.那么用户就不象游戏那种,单位时间上始终是在某个特定channel中的. 在这种设计中,用户是可以同时存在于多个channel(qq群)中的. 当然mysql不一定是最合适的群组管理者,但我觉得在这种应用中是需要一个全局的用户分组管理服务器的,因为在移动应用中,用户的身份圈子有太多种类了.

发这贴出来,希望能和大家讨论一下这种应用的可行性.

欢迎留言交流:)

pomelo 是由网易开发的基于node.js开发的高性能、分布式游戏服务器框架, 也可作为高实时web应用框架。 Pomelo的应用范围 pomelo最适合的应用领域是网页游戏、社交游戏、移动游戏的服务,开发者会发现pomelo可以用如此少的代码达到强大的扩展性和伸缩性。当然还不仅仅是游戏,很多人断言未来的web时代是实时web应用的时代, 我们发现用pomelo开发高实时web应用也如此合适, 而且伸缩性比其它框架好。目前不推荐将pomelo用于大型的MMO rpg游戏开发,尤其是3d游戏, 还是需要象bigworld这样的商用引擎来支撑。 Pomelo的理念 pomelo的第一个理念是让游戏(高实时web应用)服务器的开发变得非常简单, 而不是解决某类算法或系统上的难题。这个设计理念跟rails是很类似的;第二个理念是重视性能和可伸缩性,用户用pomelo开发出来的游戏天生具有很强的伸缩性,扩展也很容易。我们在性能优化上也花了很多功夫,并且会持续进行;第三个理念是让第三方很容易扩展,框架用了很多插件式的设计, 组件component、路由规则、甚至管理控制台都可以完全由第三方扩展。 Pomelo的框架组成 pomelo包括三部分: 框架, pomelo的核心, 与以往单进程的游戏框架不同, 它是高性能、分布式的游戏服务器框架,并且使用很简单 库, 包括了开发游戏的常用工具库, 如人工智能(ai), 寻路, aoi等 工具包, 包括管理控制台, 命令行工具, 压力测试工具等 pomelo特性 快速、易上手的游戏开发模型和api 高可伸缩的多进程架构, 支持MMO的场景分区和其它各类分区策略 方便的服务器扩展机制,可快速扩展服务器类型和数量 方便的请求、响应、广播、服务器通讯机制, 无需任何配置 注重性能,在性能、可伸缩性上了大量的测试、优化 提供了较多扩展组件,包括游戏开发常用的库和工具包 提供了完整的MMO demo代码(客户端html5),可以作为很好的开发参考 基于socket.io开发,支持socket.io支持的多种语言客户端 为什么使用pomelo? 高并发、高实时的游戏服务器的开发是很复杂的工作。跟web应用一样, 一个好的开源容器或开发框架可以大大减少游戏开发的复杂性,让开发变得更加容易。遗憾的是目前在游戏服务器开发领域一直没有太好的开源解决方案。 pomelo将填补这个空白, 打造一款完全开源的高性能(并发)游戏服务器框架。 pomelo的优势有以下几点: 架构的可伸缩性好。 采用多进程单线程的运行架构,扩展服务器非常方便, node.js的网络io优势提供了高可伸缩性。 使用非常容易, 开发模型与web应用的开发类似,基于convention over configuration的理念, 几乎零配置, api的设计也很精简, 很容易上手。 框架的松耦合和可扩展性好, 遵循node.js微模块的原则, framework本身只有很少的代码,所有component、库、工具都可以用npm module的形式扩展进来。任何第三方都可以根据自己的需要开发自定义module。 提供完整的开源MMO游戏demo参考(基于HTML 5)。 一个超过1万行代码的游戏demo,使开发者可以随时借鉴demo的设计与开发思路。 在线演示:http://pomelo.netease.com/demo.html 标签:开发框架  游戏框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值