posts - 193,  comments - 520,  trackbacks - 0

          在集群部署的情況下,應(yīng)用程序需要做出調(diào)整,主要集中在四個(gè)方面:對(duì)httpsession的處理、對(duì)緩存的處理、共享的文件系統(tǒng)、synchronized關(guān)鍵字的失效。

          對(duì)httpsession的處理

          對(duì)httpsession的處理最為重要,因?yàn)閷?duì)WEB程序而言,httpsession無疑是最重要的全局資源,它需要被多個(gè)web服務(wù)器所共享。

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

          也就是說httpsession的信息需要被保存在JVM進(jìn)程之外,例如分布式緩存、數(shù)據(jù)庫(kù)。


          這里是方案:

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

          2、自定義SessionMap<String,Serializable>同步保存httpsession內(nèi)的信息
             自定義SessionMap同步httpsession,在操作httpsession時(shí)不用改變調(diào)用接口,不用東張西望

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

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

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

          6、使用HttpSessionListener實(shí)現(xiàn)SessionMap<String,Serializable>的過期
             利用容器session 機(jī)制的好處,httpsession過期的時(shí)候干掉memecached里的SessionMap


          下面根據(jù)web請(qǐng)求的過程分情況討論該方案:

          A、登錄


          根據(jù)請(qǐng)求的url判斷是否是登錄請(qǐng)求

          在線人數(shù)保存在memcached

          B、 正常請(qǐng)求


          C、 失敗轉(zhuǎn)發(fā)


          D、登出


          根據(jù)請(qǐng)求的url判斷是否是登出請(qǐng)求

          E、HttpSession過期

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

          關(guān)于在線人數(shù)的統(tǒng)計(jì):在線人數(shù)存儲(chǔ)在memcached里,將在線人數(shù)與sessionMap綁定,往memcached里增加sessionMap時(shí)在線人數(shù)+1,刪除時(shí)-1.



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

          關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 云林县| 加查县| 峡江县| 固安县| 密云县| 买车| 屏东市| 垦利县| 定安县| 建水县| 施甸县| 宁远县| 沾化县| 武城县| 政和县| 澜沧| 孟连| 黄陵县| 平武县| 北海市| 兴安盟| 金湖县| 香格里拉县| 阳信县| 庄河市| 饶平县| 金坛市| 澄迈县| 化隆| 长垣县| 千阳县| 青州市| 民乐县| 石景山区| 辽宁省| 东安县| 乐安县| 兴安县| 成武县| 南岸区| 广州市|