前言
忙碌的人可以就此略過,有閑的人,可以浪費(fèi)些空閑,看一看無關(guān)痛癢的文字。
實(shí)時(shí)Web,一般人可以玩得起,只要你具有一些JAVA編程知識,外加一些JS實(shí)踐,也不是難事。
這里,簡單設(shè)計(jì)一個基于socketio-netty的實(shí)時(shí)Web數(shù)據(jù)驅(qū)動平臺,用以托管實(shí)時(shí)應(yīng)用,同時(shí)也提供了前后端的設(shè)計(jì)思路,從中也可以看到多租戶架構(gòu)一些影子。
至于什么是Firebase,什么是socketio-netty,那就只有自行google。
設(shè)計(jì)思路
后端設(shè)計(jì)
- 一個應(yīng)用實(shí)例對應(yīng)一個IOHandler接口實(shí)現(xiàn)
- 用戶上傳實(shí)現(xiàn)代碼,初始化一個應(yīng)用實(shí)例,產(chǎn)生一個API KEY
- API KEY 客戶端需要顯示引用;API KEY是應(yīng)用實(shí)例一一對應(yīng)關(guān)系
- 服務(wù)器端提供java class 的hotswap(熱部署),應(yīng)用實(shí)例動態(tài)添加/刪除/替換,做到無縫、平滑
- 暫時(shí)不考慮文件系統(tǒng)等,功能為先
socketio-netty支持多個namespace(或許稱為頻道更為合適)的添加,靜態(tài)加載示范:
前端實(shí)踐
- 一個頁面,支持多個應(yīng)用實(shí)例,支持多個API KEY
- 前端JS須定義
<script src="></script>
- API KEY使用方式和原生的socket.io客戶端使用方式一模一樣,無須多言。
WEB端管理維護(hù)
再來一個用戶的系統(tǒng)后臺管理就完備了:
- 上傳JAVA接口實(shí)現(xiàn)代碼,前期可只允許上傳.java代碼,以便代碼監(jiān)測使用(私有,則不需要)
- 查看應(yīng)用實(shí)例,重新生成API KEY等
- 實(shí)例維護(hù),暫停/停止/升級/替換/添加等,無縫、平滑等
- 其它常規(guī)操作
設(shè)計(jì)小結(jié)
基礎(chǔ)功做好之后,很顯然,您已經(jīng)實(shí)現(xiàn)了一個多租戶架構(gòu)的實(shí)時(shí)WEB數(shù)據(jù)驅(qū)動平臺(名頭有些大哈),托管第三方實(shí)時(shí)應(yīng)用,有點(diǎn)PAAS的味道。雖然針對的應(yīng)用很窄,但更專業(yè)了。
至于計(jì)費(fèi),安全,權(quán)限等,暫時(shí)可以歇歇,想太多,走不了多遠(yuǎn),太累,反而成就感會降低。系統(tǒng)進(jìn)化演進(jìn)的,大而全,不如小而精。
這中間,難免需要對socketio-netty做一些定制工作,以適應(yīng)應(yīng)用實(shí)例的管理工作。
至于實(shí)際應(yīng)用,需要注意的地方還很多,這里不過是一個簡單模型(去掉了非核心的部分)的描述,和Firebase沒有半毛錢的關(guān)系。
雖然設(shè)計(jì)了,不知道實(shí)際有沒有人需要這個東西,希望不是空中樓閣。
PS/碎碎語
socketio-netty最近的一些進(jìn)展(與上面設(shè)計(jì)不相關(guān)):
- 增加示范在線演示
入口地址:http://socketio.yongboy.com/
在線聊天示范 訪問
在線畫板示范 訪問
想了解socket.io或者想了解socketio-netty的,可以點(diǎn)擊一下。
但愿別超出EC2的免費(fèi)流量限額,可能隨時(shí)會關(guān)閉。 - 增加使用者名單
http://code.google.com/p/socketio-netty/wiki/UsersCollections
至少,目前已經(jīng)有一家公司使用于生產(chǎn)環(huán)境