<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的CRC卡片盒

    zhangwen's blog

    應用服務器集群、可用性與無session的企業應用(一)

    本文目的

    本文的主要目的是討論企業應用實現高可用性的方案。即如何在保證性能的同時,使得應用保持 24 小時的可用性。 為實現此目的,災難恢復和性能問題的解決是必不可少的。本文僅就程序和應用服務器兩方面進行討論,不討論數據庫等相關的問題。

    1. ?? 災難恢復

    所謂災難恢復(僅對 Web 應用而言),是指在某個應用失去響應能力后(比如重啟),客戶端能立即透明的切換到冗余應用。這一切換對客戶端來講應該是感覺不到的。從技術上來講,就是客戶端在與服務器端進行交互的過程中,客戶端在服務器端保存的狀態能立即切換到新的服務器上。在 web 應用中,這些狀態一般保存在 http session 里。所以所謂狀態復制,一般來講就是 http session 復制。

    目前能提供災難的方案之一是集群。對于 Weblogic ,集群的實現方式為 Paired servers replication


    cluster.JPG
    (圖片引自
    http://www.theserverside.com/articles/article.tss?l=J2EEClustering

    在這種實現方式里, session 只在相鄰的或者指定的兩個 server 之間進行復制,當某一個 server down 掉后,需要 servers 前端的 load balancer 知道哪一臺 server 是這個 Server1 paired backup server ,并將原來指向 Server1 的請求轉發給這臺 paired backup server 。應該說這種復制策略是相當高效的,但是對集群前端的路由要求比較高。

    2. ?? 性能

    企業應用一般會跑在多臺服務器上。就性能而言,我們的期望自然是:總體性能 = 單臺服務器性能 X 服務器臺數。不過從上邊的說明就能看出,集群中的每一臺 server 都會有一部分性能耗費在 session 復制上。耗費的性能取決于 session 的大小。如果應用中 session 保留了大量的數據,或者用戶數量很多,損耗的性能也將相當可觀。

    (有一種提升性能的方案是使用分布式的對象,例如 EJB ,根據對象耗費性能的不同對其所在服務器進行調整。不過這種方案早已充滿了極大的爭論。流行的觀點認為,對于業務邏輯不是很復雜的應用,使用分布式對象只會讓性能下降。因此下邊將不再討論。)

    3. ?? 維護

    從維護的角度上看,如果我們能不重啟應用就能給應用添加新的功能,或者修改已有的 bug ,那顯然相當 8 錯。

    分析

    根據上邊的說明,我們可以初步得出幾個結論:

    1、? 要使用Weblogic集群所帶來的災難恢復的好處,就必須忍受同時帶來的性能損失。

    2、? 在使用weblogic集群的同時,我們必須擁有高性能的 Server 路由設備。

    3、? 使用weblogic集群,在重新部署應用時,由于不能重新部署 (redeploy) 集群下單臺 server 的應用,導致幾臺 server 需要同時停掉應用。當所有的 server 全都陷入災難中,災難恢復也就失去了意義。

    ?

    那么,如何在實現災難恢復和高性能的同時,又能避免或者減少上邊列舉的損失呢?

    初步的思路可以有:

    ?

    1、? 如果我們能忍受某一臺 server down 機后客戶狀態丟失的后果,那么最簡單的方案就是停用集群,前端 load balancer 把相同 IP 的請求轉到相同的服務器。在重新部署應用時,分批重起不同 server 上的應用。

    2、? 全部采用無 session 策略。將客戶狀態保留在客戶端。這樣沒有Weblogic集群也就無所謂了。我們只需要一個普通的(分發器+失敗檢測)將請求均勻的分發到可用的服務器上。

    ?

    posted on 2006-06-14 12:55 不知道叫啥好 閱讀(1842) 評論(12)  編輯  收藏

    評論

    # re: 提高企業應用可用性的分析(一) 2006-06-14 13:50 charon

    災難回復可能有更復雜的含義。
    在災難恢復里面,應用服務器級別的容錯回復是最簡單的(在集群服務的情形下,崩掉一兩臺不是什么大事情),稍微復雜一點的是數據庫服務器級別的,再復雜一點,就是異地冗載了。
    如果要作數據庫級別的災難回復,可能必須要用到統一的中央存儲設備,如獨立的磁盤陣列之類的,而且必須實現同一陣列區域在不同服務器系統之間的切換(這個簡單一點)或者共享(沒試過)。HA的配置比應用服務器的集群配置要復雜很多,而且對系統的影響是深遠的。  回復  更多評論   

    # re: 提高企業應用可用性的分析(一) 2006-06-14 13:54 不知道叫啥好

    @charon
    你說得對,不過這里只打算對應用和應用服務器的情況做討論。這片東東只寫了一晚上,遣詞造句也沒有深究就拿出來了,難免有些差錯。  回復  更多評論   

    # re: 提高企業應用可用性的分析(一) 2006-06-14 14:11 狂人

    援引"Under the Hood of J2EE Clustering"的一句話:Failover can avoid errors completely. -- Negative.具體意思是:Remind that when I defined “failover”, I defined a condition for when the failover will happen: “between the method calls”. It means if you have two successive methods to a remote object, the failover will only happen after the first method call is finished successfully and before the second method request is sent out.
    So, what will happen if the remote server fails when the methods are in the middle of processing in the server? The answer is: the process will stop and the client will see error messages in most cases, unless the methods are idempotent (defined in the “basic terminology” section).Only if the methods are idempotent, some load balancers are smart enough to retry these methods and failover them to other instances.
    我很贊同他的觀點.
    另外,根據我的項目經歷,往往集群Appserver并不是真正瓶頸所在,真正瓶頸是在DBServer.  回復  更多評論   

    # re: 提高企業應用可用性的分析(一) 2006-06-14 14:27 不知道叫啥好

    @狂人
    呵呵,這片文章本來是針對我們的項目寫的,大體改了改就拿出來了。我們項目的特點就是可用性要求高,但是數據庫操作卻很少。因此先假設數據庫這里不存在性能問題。實際上引起數據庫的原因很大程度是由蹩腳的sql,以及海量的數據,但就不在討論范圍之列了。

    關于冪等性等問題,會在本文的后續中提到~

      回復  更多評論   

    # re: 提高企業應用可用性的分析(一) 2006-06-14 14:54 langds

    如果撇開DB性能以及"冪等性"問題,那你的集群其實要考慮的東西就要會少了一大半.
    依我的經驗來看,最實用的做法就是直接在Appserver前加web server,該webServer起loadbanance和Httpserver的作用.他能自動將不同的客戶端分發請求到相應的Appserver上執行,并且服務器間無需同步session狀態,webserver能自動定位到該客戶端最近一次請求的響應AppServer,
    再者,對于你提供的同步部署問題,我認為,只要不新增EJB之類的組件就無需重新部署應用,直接替換相應的CLASS或JAR包即可.
    如果一定要重新部署,就拿WAS來說吧,它的所有集群成員都由ND?。觘rver管理,然么你只需要部署到ND后,由ND自動同步一把即可.
    事實上,在真正需要集群的高并發應用生產環境中是不可能常常重新部署整個應用的.而且對熱替換的需求也并不會很明顯,因為在這樣的環境里,要的就是穩定和速度.  回復  更多評論   

    # re: 提高企業應用可用性的分析(一) 2006-06-14 15:06 不知道叫啥好

    @langds
    “依我的經驗來看,最實用的做法就是直接在Appserver前加web server,該webServer起loadbanance和Httpserver的作用.他能自動將不同的客戶端分發請求到相應的Appserver上執行,并且服務器間無需同步session狀態,webserver能自動定位到該客戶端最近一次請求的響應AppServer, ”

    這也我提的方案之一亞。~不過不同步session,如何失敗恢復?另外web server 能自動定位到該客戶端最近一次請求的響應AppServer? langds能否具體說以下?我只試過使用apache的mod_proxy,用robbin隨機分發。目前我們是使用硬件(四層交換機)做到的這一點。  回復  更多評論   

    # re: 提高企業應用可用性的分析(一) 2006-06-14 15:08 不知道叫啥好

    @langds

    另外weblogic在生產模式下不支持class的熱部署~
    我們也很希望它能像websphere那樣熱部署亞~  回復  更多評論   

    # re: 提高企業應用可用性的分析(一) 2006-06-14 15:52 langds

    為什么一定要失敗恢復?如果真的是業務處理發生故障能做到真正恢復的可能性太小太小.在我的第一篇回復中已經引用了"wangyu"所說的話來說明問題.

    另外:為什么要class熱部署?我們WAS在生產環境里都是將改功能禁止了的,還是那句話,要的是穩定,安全和速度.  回復  更多評論   

    # re: 應用服務器集群、可用性與無session的企業應用(一) 2006-06-14 16:02 不知道叫啥好

    @langds
    至少我要做到,從這個server跳到那個server,本來登陸的狀態不能變成注銷吧

    另外能否具體說下web server 如何自動定位到該客戶端最近一次請求的響應AppServer? 多謝!  回復  更多評論   

    # re: 應用服務器集群、可用性與無session的企業應用(一) 2006-06-14 16:24 langds

    我對weblogic不是很熟悉,就說我用的was吧,WAS自學的IBMHttpServer 可以根據客戶端的標識定位到最近一次請求響應的APPSERVER.,所以如果是在WAS環境里,你所考慮的SESSION問題有些多余.
    另外,WEBLOGIC好像也有自己的集群代理SERVER,不知道你自己有沒有親自實驗過,所有的HTTPSERVER集群控制器都擁有請求重定位功能.  回復  更多評論   

    # re: 應用服務器集群、可用性與無session的企業應用(一) 2006-06-14 16:33 不知道叫啥好

    @langds
    weblogic的集群代理server就是一個servlet,也能實現這個功能,但是性能太差,達不到生產級的要求~所以bea給人作方案時,都是推薦用F5來分發~

    想起來IBMHttpServer了……,跟was結合的很好,又是apache的底子,越發羨慕was了~  回復  更多評論   

    # re: 應用服務器集群、可用性與無session的企業應用(一) 2006-06-14 17:49 寒晴天

    開始行動  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    <2006年6月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案(3)

    文章分類

    Programmer

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产成人综合亚洲亚洲国产第一页 | 国产亚洲AV无码AV男人的天堂 | 亚洲av日韩av永久无码电影| 黄瓜视频高清在线看免费下载| 亚洲最大黄色网站| 亚洲综合免费视频| 中文字幕无码精品亚洲资源网久久| 日本阿v免费费视频完整版| 国产成人亚洲合集青青草原精品 | 1000部免费啪啪十八未年禁止观看| 久久亚洲中文字幕精品有坂深雪| 91精品全国免费观看含羞草 | 看成年女人免费午夜视频| 亚洲人成网站18禁止一区| 国产人成网在线播放VA免费| 亚洲VA中文字幕无码毛片| 4虎永免费最新永久免费地址| 亚洲无码一区二区三区| 免费看美女让人桶尿口| 高潮毛片无遮挡高清免费视频| 亚洲第一永久AV网站久久精品男人的天堂AV | 亚洲色大成WWW亚洲女子| 国产色婷婷精品免费视频| 乱人伦中文视频在线观看免费| 伊人久久大香线蕉亚洲五月天| 久久青草国产免费观看| 亚洲一级特黄特黄的大片| 国产午夜影视大全免费观看| 中国videos性高清免费| 亚洲神级电影国语版| 日本免费电影一区| 热99RE久久精品这里都是精品免费| 久久精品国产亚洲av麻豆色欲| 午夜免费福利网站| 精品多毛少妇人妻AV免费久久| 亚洲黄色高清视频| 免费欧洲美女牲交视频| 免费无码毛片一区二区APP| 亚洲AV无码成人精品区日韩| 亚洲综合AV在线在线播放| 欧美大尺寸SUV免费|