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

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

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

    《面向軟件錯誤構建可靠的分布式系統(tǒng)》讀后感

    這篇文檔是erlang創(chuàng)始者之一的Joe Armstrong所編寫的博士論文,由段先德翻譯、鄧輝審校,感興趣的同學可以從以下地址下載:
     http://erlang-china.org/study/joe-armstrong_thesis_cn.html
    Erlang在業(yè)界已經(jīng)引起了不小的轟動,通讀了下這篇博士論文,翻譯的質(zhì)量很高,:),所以讀起來非常的順暢,論文的內(nèi)容對于erlang初學者而言絕對是堪稱經(jīng)典,寫的非常的不錯,點出了erlang的強項并詳細的進行了解釋。
    Erlang以天生的支持并發(fā)、分布式和容錯而聞名,由于erlang的誕生是為交換機而服務的,因此在并發(fā)、分布式、容錯、動態(tài)代碼升級等方面是實現(xiàn)的非常好的,其目前主要是應用在erission的交換機上,這對于erlang的那些天生的特性也是個很好的證明。
    通過閱讀這篇博士論文,讓我對了erlang有了部分的認識,由于目前尚未實踐過,只能根據(jù)論文本身對自己理解的erlang做個闡述。
    Erlang采用的是虛擬機的方式,這個虛擬機和java的虛擬機類似的地方在于隔離了和操作系統(tǒng)相關的語言運行環(huán)境,也就是說基于erlang編寫的程序是可以在所有操作系統(tǒng)中運行的,不同的地方在于erlang在這個虛擬機中還實現(xiàn)了進程管理、進程通訊等非常核心的技術,erlang的進程采用的并不是操作系統(tǒng)的進程,因此基于erlang編寫的程序并不會因為每種操作系統(tǒng)的進程、進程通訊實現(xiàn)的機制不同而改動,正是因為這些,使得基于erlang可以很容易的編寫跨操作系統(tǒng)的高并發(fā)、容錯、可靠的分布式系統(tǒng),來看看erlang對于這幾個關鍵字是怎么支撐和理解的:
    1、分布式
          分布式的支持對于所有的大型系統(tǒng)而言都是非常重要的,分布式涉及到的問題主要是遠程通訊,Erlang本身已很好的實現(xiàn)了這個部分,在erlang中通訊的單位是進程,erlang已很好的透明化的處理了本地進程通訊和遠程進程通訊,也就是說你可以像本地進程通訊一樣的方式去進行遠程進程通訊,在erlang中進程的通訊基于消息的方式,有點像MQ之類的東西。
    2、高并發(fā)
          高并發(fā)這塊通常采取的支撐方法是多進程的并行處理,在erlang中非常強調(diào)的一個原則就是進程的創(chuàng)建和銷毀要非常容易,也就是說是不耗多少資源的,由于erlang中的進程并不是操作系統(tǒng)的進程,因此在支持高并發(fā)時就比較容易了,例如webserver,可以每接收一個請求就創(chuàng)建一個進程來進行并行處理,而同時由于erlang會合理的去分配這些進程對于CPU的搶占,避免出現(xiàn)某進程耗住CPU的現(xiàn)象。
    3、容錯
          容錯首先要做到的是錯誤的隔離,erlang強調(diào)每個處理的單元都是進程,同時erlang要求進程間不共享任何資源,例如共享內(nèi)存等,進程間僅通過消息來進行交互,因此某個進程出錯自然是不會造成其他進程錯誤的,在進程出錯時,erlang推薦的是采用速錯(fast on fail)的方式,也就是迅速停止這個進程的運行,這樣做是為了避免這個進程錯誤的執(zhí)行造成更多的錯誤。
          容錯方面,erlang推薦的實踐方法是專門編寫一個監(jiān)督進程,這個進程負責接收被監(jiān)督進程發(fā)出的錯誤的消息,并根據(jù)錯誤的情況來進行糾錯,重啟進程,或者將該進程恢復至其他的機器上去執(zhí)行。
    4、可靠

          可靠的分布式系統(tǒng),這部分對于我的觸動比較大,因為之前一直做這方面的事情,在論文中說到了很關鍵的一點,目前在基于面向對象的語言實現(xiàn)可靠的分布式系統(tǒng)時,多數(shù)是基于類似MQ的東西來實現(xiàn)的,在基于這個實現(xiàn)時,要做到可靠,基于的基礎是消息的傳遞是可靠的,當然,erlang也是基于消息傳遞來實現(xiàn)分布式通訊的,但它的思路不同,它不認為消息的傳遞是可靠的,那么它是怎么來做到可靠的呢,是基于進程調(diào)用時構建的一個進程鏈的方式,進程鏈上的任意進程的錯誤都可通知到相關的進程,這樣的話消息是否傳遞到相應的目的進程其實是很容易判斷的,:),這個思路一定程度上顛覆了MQ中一直采用的發(fā)送--回執(zhí)的方式,不過不同的也僅在于現(xiàn)在不用按通訊的方式去發(fā)回執(zhí),但事實上這個回執(zhí)還是存在的。
    從上面這幾個特性可以看出,erlang確實挺吸引人,可以試用試用,不要告訴我用c也可以實現(xiàn)這些,何必冒出一種新語言去學習呢,沒錯,你是可以用c去實現(xiàn),但那不是要自己寫嗎,除非你覺得自己在高并發(fā)、容錯、分布式這些的理解上比這些博士還強,呵呵,不過就像論文中說的,erlang也還有很多需要發(fā)展的方面,例如如何更好的與其他語言的程序通訊。
    在這篇erlang博士論文中還能學到的東西有很多,如構建并發(fā)式系統(tǒng)時應將并發(fā)、持久存儲、進程消息傳遞、進程錯誤處理這些和應用系統(tǒng)的實現(xiàn)交由兩組不同的人來實現(xiàn),使得開發(fā)應用的人可以無需關注程序該怎么去支持高并發(fā)、怎么去和別的進程通訊什么的,和spring的pojo enhanced的概念是相同的。
    和OSGi一樣,也不一定就用erlang去實現(xiàn)實際的系統(tǒng),但它為我們提供的這幾點的最佳實踐是值得學習的。

    posted on 2007-11-25 19:00 BlueDavy 閱讀(3548) 評論(1)  編輯  收藏 所屬分類: Java業(yè)界隨想

    評論

    # re: 《面向軟件錯誤構建可靠的分布式系統(tǒng)》讀后感 2007-12-06 23:33 酸酸菜

    文章的理論性確實很值得學習。  回復  更多評論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2007年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    統(tǒng)計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 四虎永久成人免费影院域名| 国产精品亚洲综合一区| 亚洲精品日韩一区二区小说| 内射无码专区久久亚洲| 国产精品免费福利久久| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲伊人久久综合中文成人网| 久久久精品2019免费观看 | 亚洲精品免费在线| 国产片免费在线观看| a级片在线免费看| 最新国产精品亚洲| 亚洲国产精品无码专区在线观看| 蜜桃视频在线观看免费网址入口| 一级做性色a爰片久久毛片免费| 亚洲黄色三级视频| 国产a v无码专区亚洲av| 国产免费的野战视频| 国产日韩精品无码区免费专区国产 | 我的小后妈韩剧在线看免费高清版| 全部在线播放免费毛片| 亚洲综合免费视频| 亚洲成av人在线视| 免费一级毛片在线播放| 五月婷婷综合免费| 国产好大好硬好爽免费不卡 | 丁香花在线观看免费观看| 成人免费一区二区三区| 亚洲精品久久无码av片俺去也 | 老湿机一区午夜精品免费福利 | 中文字幕不卡免费视频| 亚洲aⅴ无码专区在线观看 | 国产午夜精品免费一区二区三区| 性色av极品无码专区亚洲| 亚洲毛片一级带毛片基地| 国产成人精品日本亚洲| 亚洲第一黄色网址| 成在线人永久免费视频播放| 免费观看无遮挡www的视频| 久久99热精品免费观看牛牛| sss在线观看免费高清|