前言
忙碌的人可以就此略过,有闲的人,可以浪费些空闲,看一看无关痛痒的文字。
实时Web,一般人可以玩得起,只要你具有一些JAVA编程知识,外加一些JS实践,也不是难事。
这里,简单设计一个基于socketio-netty的实时Web数据驱动平台,用以托管实时应用,同时也提供了前后端的设计思路,从中也可以看到多租户架构一些影子。
至于什么是Firebase,什么是socketio-netty,那就只有自行google。
设计思路
后端设计
- 一个应用实例对应一个IOHandler接口实现
- 用户上传实现代码,初始化一个应用实例,产生一个API KEY
- API KEY 客户端需要显示引用;API KEY是应用实例一一对应关系
- 服务器端提供java class 的hotswap(热部署),应用实例动态添加/删除/替换,做到无缝、平滑
- 暂时不考虑文件系统等,功能为先
socketio-netty支持多个namespace(或许称为频道更为合适)的添加,静态加载示范:
前端实践
- 一个页面,支持多个应用实例,支持多个API KEY
- 前端JS须定义
<script src="http://domain.com/yourfirebase.js"></script>
- API KEY使用方式和原生的socket.io客户端使用方式一模一样,无须多言。
WEB端管理维护
再来一个用户的系统后台管理就完备了:
- 上传JAVA接口实现代码,前期可只允许上传.java代码,以便代码监测使用(私有,则不需要)
- 查看应用实例,重新生成API KEY等
- 实例维护,暂停/停止/升级/替换/添加等,无缝、平滑等
- 其它常规操作
设计小结
基础功做好之后,很显然,您已经实现了一个多租户架构的实时WEB数据驱动平台(名头有些大哈),托管第三方实时应用,有点PAAS的味道。虽然针对的应用很窄,但更专业了。
至于计费,安全,权限等,暂时可以歇歇,想太多,走不了多远,太累,反而成就感会降低。系统进化演进的,大而全,不如小而精。
这中间,难免需要对socketio-netty做一些定制工作,以适应应用实例的管理工作。
至于实际应用,需要注意的地方还很多,这里不过是一个简单模型(去掉了非核心的部分)的描述,和Firebase没有半毛钱的关系。
虽然设计了,不知道实际有没有人需要这个东西,希望不是空中楼阁。
PS/碎碎语
socketio-netty最近的一些进展(与上面设计不相关):
- 增加示范在线演示
入口地址:http://socketio.yongboy.com/
在线聊天示范 访问
在线画板示范 访问
想了解socket.io或者想了解socketio-netty的,可以点击一下。
但愿别超出EC2的免费流量限额,可能随时会关闭。 - 增加使用者名单
http://code.google.com/p/socketio-netty/wiki/UsersCollections
至少,目前已经有一家公司使用于生产环境