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

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

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

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    最近關注過的一些項目

    Posted on 2011-01-20 23:23 dennis 閱讀(7651) 評論(11)  編輯  收藏 所屬分類: 源碼解讀Hadoop與分布式

        最近因為空閑時間有一些,所以去看了不少開源項目,大部分東西如果看過不記錄下來,其實還是相當于沒看,所以想想還是有必要摘要記錄一下。

        首先是去了解了zookeeper這個項目,基于paxos算法的分布式服務組件,同事對此有非常深入的研究和介紹,具體可以看我們的團隊Blog。令我感慨的是這么一個非常難以理解的算法,卻用一個簡單的樹狀目錄模型表達出來,并且在這個模型的基礎上衍生出種種應用:集群感知、分布式鎖、分布式隊列、分布式并發原語等等,具體可以看文檔給出的recipes。在實現這些應用的時候,突出強調的是避免網絡風暴,例如分布式鎖的實現,競爭創建子節點,節點序列號最小的獲取鎖,其他節點等待,但是等待在什么條件上是有講究的,如果所有節點都等待最小節點的刪除事件,那么當最小節點釋放鎖的時候,就需要廣播消息給所有其他等待的節點;換一個思路,如果每個等待節點只是等待比它序列號小的節點上,那么就可以避免這種廣播風暴,變成一個順序喚醒的過程。因此盡管有了zookeeper幫助實現分布式這些服務,但是要實現好仍然有一定難度,具體可以參考官方例子。我本來萌生了基于zookeeper實現一套封裝好的類似j.u.c的服務框架,后來在郵件列表發現已經有人搞了這么一個基礎類庫放在github上:https://github.com/openUtility/menagerie 。不過我沒有繼續深入了,有興趣的朋友可以瞧瞧。

        然后又去看了我們淘寶開源的TimeTunnel。TimeTunnel你可以理解成一個消息中間件,它整個設計跟我們的產品相當接近,但是兩者的目的完全不同,tt強調的是高吞吐量,而notify強調的則是可靠性。TT的通訊層直接采用Facebook的thrift,并且利用zookeeper做集群管理和路由。TT的代碼質量很好,有興趣可以拉出來看一下,并且對zookeeper的應用也是一個典型的案例。TT在高可用性上的方案也很有特色,所有的服務器節點形成一個環,兩兩相互主輔備份,一個節點掛了,后續節點仍然可以提供服務直到主節點回來,有點類似一致性哈希的概念。節點的主從關系和順序也是通過zookeeper保證。消息順序的實現是通過稱為router的路由到固定節點做傳輸,router默認是策略不是固定而是RR。TT的數據存儲優先放在內存,并設置了一個內存狀況監視的組件,當發現內存放不下的時候,swap到磁盤文件緩存,實現類似內存換頁的功能。正常情況數據都應該在內存,當然如果可靠級別要求高的話可以先存磁盤再傳輸。TT目前仍然還是比較適合傳輸日志這樣的文本增量數據,并且提供了TailFile這樣的python腳本幫你做這個事情,這個腳本可以通過checkpoint做斷點續傳。在學習這個項目的時候,發現文檔有很大問題,要么錯誤,要么遺漏,并且代碼也不是最新的,我估計開源出來外面的人用的還不太多,希望慢慢能搞的更好一些。

        跟TT類似,另一個追求高吞吐量的MQ是linkedin開源的kafka。Kafka就跟這個名字一樣,設計非常獨特。首先,kafka的開發者們認為不需要在內存里緩存什么數據,操作系統的文件緩存已經足夠完善和強大,只要你不搞隨機寫,順序讀寫的性能是非常高效的。kafka的數據只會順序append,數據的刪除策略是累積到一定程度或者超過一定時間再刪除。Kafka另一個獨特的地方是將消費者信息保存在客戶端而不是MQ服務器,這樣服務器就不用記錄消息的投遞過程,每個客戶端都自己知道自己下一次應該從什么地方什么位置讀取消息,消息的投遞過程也是采用客戶端主動pull的模型,這樣大大減輕了服務器的負擔。Kafka還強調減少數據的序列化和拷貝開銷,它會將一些消息組織成Message Set做批量存儲和發送,并且客戶端在pull數據的時候,盡量以zero-copy的方式傳輸,利用sendfile(對應java里的FileChannel.transferTo/transferFrom)這樣的高級IO函數來減少拷貝開銷。可見,kafka是一個精心設計,特定于某些應用的MQ系統,這種偏向特定領域的MQ系統我估計會越來越多,垂直化的產品策略值的考慮。

         在此期間,我還重新去看了activemq和hornetq的存儲實現,從實現上大家都大同小異,append log + data file的模式。Activemq采用異步隊列寫來提高吞吐量,而Hornetq干脆就直接利用JNI調用原生aio來實現高性能。在搜索Java的aio實現的時候,碰巧發現Mina的沙箱里有個aioj的實現,源碼在:https://svn.apache.org/repos/asf/mina/sandbox/mheath/aioj/ 。我測試了完全可用,也嘗試改造我們的磁盤存儲組件,可惜提升不多,估計不從整個設計上調整服務器,不大可能從aio上獲益。

         最近也重新看起了clojure的一些開源項目,clojure的開源資源在github上也非常豐富,有待挖掘,下次有機會再嘗試介紹一二。
      
       
       


    評論

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-21 09:01 by alex_zheng
    看來zookeeper要火,不知道淘寶消息中間件都是用自主開發的tt還是有用到其他開源,如hornetq

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-21 09:18 by Scud(飛云小俠)
    一直想用zookeeper做中心控制, 配置管理 (例如動態增刪memcached的服務器)...

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-21 09:31 by huolong
    莊周蝶夢完全根據twiki文檔完成對tt的測試,使用過程中對文檔的編排和內容都提出了很多建議,非常感謝,我們會繼續努力提高文檔質量

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-21 09:58 by dennis
    @alex_zheng
    是自主開發的,正是我們小組在做。

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-21 09:58 by dennis
    @huolong
    客氣了,你們的東西很強大:D

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-21 12:52 by Xuzhengsong
    既然淘寶有了tt,你們干嘛又要自己去開發notify。

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-24 00:09 by dennis
    @Xuzhengsong
    文中有提到了,tt強調吞吐量,而notify強調高可用性和數據安全性。

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-24 09:53 by Xuzhengsong
    @dennis
    熬夜不能太多呀,保重身體。

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-24 09:59 by dennis
    @Xuzhengsong
    :-),多謝。我一般都會在12點前睡覺,通常不會超過11點半,不熬夜了,現在熬不了。

    # re: 最近關注過的一些項目  回復  更多評論   

    2011-01-31 09:13 by 何楊
    技術發展真快!

    # re: 最近關注過的一些項目  回復  更多評論   

    2012-12-14 18:47 by 曹魯光
    你好! 我們現在正在部署TT,很郁悶的是一直編譯有錯誤,都是按照淘寶官網上的編譯文檔進行編譯的,如果有比較詳細的TT安裝編譯文檔,希望能麻煩您發到我的郵箱531367891@qq.com 謝謝
    主站蜘蛛池模板: 57PAO成人国产永久免费视频| 亚洲a∨无码一区二区| 一级做a爱过程免费视频高清| 亚洲国产高清国产拍精品| 免费下载成人电影| 亚洲人配人种jizz| 成年在线观看网站免费| 亚洲性线免费观看视频成熟| 野花高清在线电影观看免费视频 | 91网站免费观看| 亚洲精品美女久久久久9999| 国产在线jyzzjyzz免费麻豆 | 亚洲精品狼友在线播放| 91av免费在线视频| 青娱乐免费在线视频| 国产91在线|亚洲| 天天摸天天操免费播放小视频| 亚洲精品456人成在线| 国产成人无码区免费A∨视频网站| 久久久久久亚洲精品无码| vvvv99日韩精品亚洲| 亚洲精品高清国产一久久| 最近2018中文字幕免费视频| 四虎影视在线永久免费观看| 亚洲va在线va天堂va888www| 亚洲爆乳少妇无码激情| 亚洲Av无码乱码在线播放| 在线观看人成视频免费无遮挡| 亚洲人成在线电影| 国外成人免费高清激情视频| 免费的黄色网页在线免费观看| 中文字幕无码视频手机免费看| 亚洲av无码一区二区三区在线播放| 免费一级特黄特色大片在线观看| 精品亚洲AV无码一区二区| a级在线观看免费| 亚洲国产成人精品青青草原| 免费a级毛片18以上观看精品| 国产精品免费看久久久| 亚洲综合精品伊人久久| 亚洲人成人网站在线观看|