這次做portal的一些總結(jié)(二)

          接著前面的寫。上文主要寫了 ajax portal 中的使用,這篇寫集群方面的體會(huì)。現(xiàn)在比較流行的架構(gòu)就是前端 F5 做負(fù)載均衡,后面 2 臺(tái) websphere server 做成集群,各自都有 HttpServer ,每個(gè) HttpServer 都向 2 臺(tái) was 做轉(zhuǎn)發(fā)。這樣每臺(tái)都能獨(dú)立完成從 HttpServer was 的流程。一臺(tái)出現(xiàn)故障, F5 首先進(jìn)行切換,只向正常 server HttpServer 發(fā)起請(qǐng)求,這臺(tái) HttpServer 再進(jìn)行切換只向同一臺(tái) server 上的 was 做轉(zhuǎn)發(fā)。這次 portal 就是采用的這種架構(gòu),不妨稱為架構(gòu) A

          另一種簡(jiǎn)單點(diǎn)的架構(gòu)就是只做 F5 負(fù)載均衡,不做 was 集群,每臺(tái) websphere server 上的 HttpServer 接受 F5 轉(zhuǎn)發(fā)的請(qǐng)求,只向本 server was 轉(zhuǎn)發(fā)。這樣每臺(tái) websphere server 保持獨(dú)立,相互間沒(méi)有數(shù)據(jù)交換和轉(zhuǎn)發(fā)。不妨稱為架構(gòu) B

          架構(gòu) A B 各有優(yōu)劣,適合不同的需要,下面進(jìn)行些比較:

          ????????? 從應(yīng)用部署上看:

          A 使用了 websphere 集群,由一個(gè) DeployManager 進(jìn)行分發(fā),部署應(yīng)用,只需部署一次,由 DM 分發(fā)到幾個(gè)節(jié)點(diǎn)上。而 B 每個(gè) server 都是獨(dú)立的,部署應(yīng)用只能一臺(tái)臺(tái)部署,如果 server 較少差別還不明顯,如果達(dá)到 10 臺(tái)以上,一臺(tái)臺(tái)部署將是一個(gè)比較痛苦的事情。

          ????????? session 上看:

          A 使用了 websphere 集群,可以使用集群提供的 session 復(fù)制,對(duì)于一些關(guān)鍵應(yīng)用(某臺(tái)服務(wù)器宕機(jī), session 也必須保持的應(yīng)用)很有必要。而對(duì)于一些能夠允許 session 丟失的應(yīng)用,才可以使用 B 。當(dāng)然 A 也可以關(guān)閉 session 復(fù)制,因?yàn)?/span> session 復(fù)制不管是使用數(shù)據(jù)庫(kù)方式還是內(nèi)存方式,總會(huì)消耗一定的性能。具體消耗多少性能,就要看不同的 application server session 復(fù)制方案了,想深入了解,可以看集群方面的文檔,我也只記得一個(gè)比較簡(jiǎn)單的 round robbin 了。

          ????????? 從架構(gòu)復(fù)雜性看:

          B 更為簡(jiǎn)單,因?yàn)闆](méi)有 DM 的概念,每臺(tái) server 都保持獨(dú)立。而使用了 DM 有時(shí)也會(huì)出現(xiàn)莫名奇妙的問(wèn)題,這當(dāng)然是由于不了解 DM 的機(jī)制所致,但總歸也增加了復(fù)雜度,這點(diǎn)在后面的教訓(xùn)中進(jìn)行說(shuō)明。

          ????????? 從水平擴(kuò)展性上看:

          B 肯定更勝一籌。只要 F5 能支持,多少臺(tái) server 都沒(méi)關(guān)系。而 A 多臺(tái) server 做集群,要看 websphere 支持的節(jié)點(diǎn)數(shù)量,應(yīng)該不會(huì)太大。這個(gè)如果哪位同學(xué)知道,敬請(qǐng)告知。

          當(dāng)然 A B 在服務(wù)器較多的情況下是可以共存的,可以考慮幾臺(tái)機(jī)器做集群,然后集群間做負(fù)載均衡,這樣既可以減少部署的復(fù)雜度,又可以帶來(lái)較好的水平擴(kuò)展。由于沒(méi)做過(guò)更大型的項(xiàng)目,這個(gè)也只是我的假象,請(qǐng)做過(guò)的同學(xué)斧正。

          ?

          說(shuō)一說(shuō)集群中碰到的問(wèn)題。

          ????????? 首先是對(duì)各節(jié)點(diǎn)的同步:

          有時(shí)為了方便測(cè)試,我們只對(duì)其中一個(gè)節(jié)點(diǎn)進(jìn)行更改,測(cè)試通過(guò)再放到其它節(jié)點(diǎn)。而如果測(cè)試周期較長(zhǎng),有時(shí)就會(huì)造成節(jié)點(diǎn)的不同步,出現(xiàn)各種各樣莫名其妙的問(wèn)題。一個(gè)經(jīng)驗(yàn)就是:無(wú)論如何,在每天下班前要保證各節(jié)點(diǎn)的同步,不同步的現(xiàn)象不要過(guò)夜。

          ????????? 然后是對(duì) DM 的理解:

          我現(xiàn)在還只是實(shí)踐階段,沒(méi)有看過(guò)相關(guān)文檔。從意義上看,它控制了相關(guān)的配置文件,如果進(jìn)行節(jié)點(diǎn)同步,就會(huì)由它把配置文件同步到它管理的節(jié)點(diǎn)上。這對(duì)配置文件的修改提出了要求。我們開(kāi)始只修改節(jié)點(diǎn)的配置文件而沒(méi)有修改 DM 的,結(jié)果進(jìn)行節(jié)點(diǎn)同步就會(huì)覆蓋修改的配置文件,帶來(lái)很多不必要的工作。經(jīng)驗(yàn)就是:或者修改 DM 的配置文件,然后進(jìn)行節(jié)點(diǎn)同步,或者直接同時(shí)修改所有節(jié)點(diǎn)和 DM 的。

          ????????? 還有關(guān)于 cache 的:

          Cache 是性能優(yōu)化的一個(gè)有效手段。在單機(jī)環(huán)境下,最簡(jiǎn)單的就是內(nèi)存 cache ,使用 static Map 就行。而在集群環(huán)境中, cache 就變的比較復(fù)雜了。首先還是從應(yīng)用需求入手,是否要保持每臺(tái)機(jī)器的 cache 同步。如果只是信息展示等要求不高的 cache ,不需保證 cache 的同步,問(wèn)題也比較簡(jiǎn)單,自己寫內(nèi)存 cache ,或者使用開(kāi)源的 cache 組件如 ehcache,oscache 等就可以很好的解決問(wèn)題。而如果需要 cache 在幾個(gè)節(jié)點(diǎn)保持同步,就需要特殊的機(jī)制了, ehcache 等號(hào)稱支持分布式 cache ,但好像需要 jgroup ,配置比較麻煩,我沒(méi)有用過(guò),有用過(guò)的同學(xué)請(qǐng)指教。我本來(lái)想使用 session 保存,然后進(jìn)行 session 同步,后來(lái) IBM 建議使用數(shù)據(jù)庫(kù) cache ,即自己寫代碼, cache 在數(shù)據(jù)庫(kù)中。這樣不需要 session 同步,對(duì)象不大,性能也能得到保證,現(xiàn)在用下來(lái)效果還可以。

          ?

          posted on 2006-12-13 13:39 pesome 閱讀(3812) 評(píng)論(9)  編輯  收藏 所屬分類: 系統(tǒng)架構(gòu)

          評(píng)論

          # re: 這次做portal的一些總結(jié)(二) 2006-12-13 16:43 ilikeJava

          集群?jiǎn)栴}比較高深,有沒(méi)有系統(tǒng)的介紹的文章  回復(fù)  更多評(píng)論   

          # re: 這次做portal的一些總結(jié)(二) 2006-12-13 21:05 lala

          was和wps都有部署腳本的,支持jacl和xmlaccess,6.0開(kāi)始還支持Jython寫部署腳本。  回復(fù)  更多評(píng)論   

          # re: 這次做portal的一些總結(jié)(二) 2006-12-15 09:39 pesome

          就是可以通過(guò)腳本一次部署到多臺(tái)服務(wù)器上的?好像不錯(cuò)啊  回復(fù)  更多評(píng)論   

          # re: 這次做portal的一些總結(jié)(二) 2007-01-03 10:48 guoyumin

          分布式cache 很多開(kāi)源的cache都支持,本身機(jī)制也不復(fù)雜。
          不過(guò)注意在多臺(tái)機(jī)器之間傳播cache數(shù)據(jù)總不是一個(gè)好主意,一般建議只傳播invalidate事件。

          cache在數(shù)據(jù)庫(kù)中的機(jī)制不太明白,能具體點(diǎn)?

            回復(fù)  更多評(píng)論   

          # re: 這次做portal的一些總結(jié)(二) 2007-01-03 22:10 pesome

          呵呵,數(shù)據(jù)庫(kù)機(jī)制就是把數(shù)據(jù)存入數(shù)據(jù)庫(kù),然后每臺(tái)機(jī)器到數(shù)據(jù)庫(kù)去取,這比較適合數(shù)據(jù)量不是太大且更新不頻繁的場(chǎng)合。  回復(fù)  更多評(píng)論   

          # re: 這次做portal的一些總結(jié)(二) 2007-01-05 14:56 bai

          數(shù)據(jù)量不大,為什么還要用數(shù)據(jù)庫(kù)機(jī)制呢,直接用內(nèi)存cache不就可以嗎?難道你的意思是數(shù)據(jù)量不大,但是比內(nèi)存還是要大嗎?  回復(fù)  更多評(píng)論   

          # re: 這次做portal的一些總結(jié)(二) 2007-01-05 17:27 pesome

          因?yàn)槭褂眉海乙3侄嗯_(tái)機(jī)器的同步。  回復(fù)  更多評(píng)論   

          # re: 這次做portal的一些總結(jié)(二) 2007-03-23 16:37 StormSpire

          關(guān)于cache:
          放入數(shù)據(jù)庫(kù)有個(gè)問(wèn)題,就是不能很方便的放入JAVA OBJECT,而只是些ID,值什么的。

          集群:
          不建議更新集群管理下的任何一個(gè)服務(wù)器,要更新只能更新master,就是ND上的。配置上的東西,很有可能被master上的沖掉,不穩(wěn)定  回復(fù)  更多評(píng)論   

          # re: 這次做portal的一些總結(jié)(二) 2007-03-26 10:31 pesome

          @StormSpire
          同意,我后來(lái)是都改,這樣保險(xiǎn),呵呵!  回復(fù)  更多評(píng)論   

          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          主要記錄作者在學(xué)習(xí)java中的每一步足跡。除非特別說(shuō)明,所有文章均為本blog作者原創(chuàng),如需轉(zhuǎn)載請(qǐng)注明出處和原作者,如用于商業(yè)目的,需跟作者本人聯(lián)系。
          歡迎大家訪問(wèn):

          常用鏈接

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          java技術(shù)

          人間百態(tài)

          朋友們的blog

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 江陵县| 卫辉市| 彰武县| 双柏县| 儋州市| 库尔勒市| 方山县| 遵义市| 宽甸| 荣昌县| 财经| 监利县| 乌恰县| 永善县| 正蓝旗| 荔波县| 巴马| 深州市| 上高县| 祁门县| 海盐县| 扬州市| 杭锦后旗| 尤溪县| 金寨县| 五原县| 新民市| 崇信县| 鞍山市| 漳州市| 七台河市| 闵行区| 九龙城区| 江达县| 德惠市| 漾濞| 沁水县| 昌都县| 鄯善县| 五寨县| 内乡县|