posts - 193,  comments - 520,  trackbacks - 0

          在集群部署的情況下,應用程序需要做出調整,主要集中在四個方面:對httpsession的處理、對緩存的處理、共享的文件系統、synchronized關鍵字的失效。

          httpsession的處理

          httpsession的處理最為重要,因為對WEB程序而言,httpsession無疑是最重要的全局資源,它需要被多個web服務器所共享。

          無共享的集群架構(SNA),在這樣的集群中,每個節(jié)點具備完全相同的功能,并且不需要知道其他節(jié)點存在與否。每個節(jié)點JVM進程不保持全局狀態(tài),才能夠保證nJVM節(jié)點的冪等性,那些所有涉及到全局狀態(tài)的,必須放在JVM進程之外,例如用戶ID可以使用cookiesession可以放入數據庫(這并不是一個好的選擇),文件可以放在共享存儲系統中。

          也就是說httpsession的信息需要被保存在JVM進程之外,例如分布式緩存、數據庫。


          這里是方案:

          1、使用會話cookie保存web服務器產生的sessionid
             為什么是sessionid而不是userid,原因在于誰也不知道除去登錄外其他人會在httpsession里干些什么

          2、自定義SessionMap<String,Serializable>同步保存httpsession內的信息
             自定義SessionMap同步httpsession,在操作httpsession時不用改變調用接口,不用東張西望

          3、使用分布式緩存memcached保存自定義SessionMap<String,Serializable>

          4、會話膠粘
             未失敗轉發(fā)的情況下沒必要在memcached和httpsession之間復制來復制去,眉來眼去

          5、使用SnaFilter處理失敗轉發(fā)

          6、使用HttpSessionListener實現SessionMap<String,Serializable>的過期
             利用容器session 機制的好處,httpsession過期的時候干掉memecached里的SessionMap


          下面根據web請求的過程分情況討論該方案:

          A、登錄


          根據請求的url判斷是否是登錄請求

          在線人數保存在memcached

          B、 正常請求


          C、 失敗轉發(fā)


          D、登出


          根據請求的url判斷是否是登出請求

          E、HttpSession過期

          hack memcached,使用HttpSessionListenersessionDestroyed事件時根據sessionid刪除memcached里的sessionMap(如果存在)

          關于在線人數的統計:在線人數存儲在memcached里,將在線人數與sessionMap綁定,往memcached里增加sessionMap時在線人數+1,刪除時-1.



          http://www.aygfsteel.com/ronghao 榮浩原創(chuàng),轉載請注明出處:)
          posted on 2008-09-04 14:31 ronghao 閱讀(2267) 評論(0)  編輯  收藏 所屬分類: 工作日志
          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          關注工作流和企業(yè)業(yè)務流程改進。現就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網站

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 屯门区| 三台县| 平顶山市| 包头市| 团风县| 吉安市| 连山| 昌都县| 呈贡县| 铅山县| 晴隆县| 九台市| 垫江县| 郯城县| 新丰县| 科技| 绥棱县| 上饶县| 蚌埠市| 永顺县| 南阳市| 九江县| 团风县| 博兴县| 三亚市| 通城县| 青阳县| 五寨县| 务川| 偃师市| 游戏| 卫辉市| 达孜县| 高邮市| 广东省| 毕节市| 教育| 台州市| 蒙山县| 英吉沙县| 浦东新区|