莊周夢蝶

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

          最近對kafka的移植工作

          Posted on 2011-05-07 10:46 dennis 閱讀(5532) 評論(6)  編輯  收藏 所屬分類: 工作隨筆
              Kafka這個linkedin開源的MQ,我在過去的blog簡單介紹過。最近3周來,我的工作就是做它的一個Java移植版本,kafka是用scala寫的,基于維護和定制的角度,這個拷貝的版本還是用Java。說拷貝,也不盡然,原理相同,但實現完全換過,從數據結構到通訊框架、通訊協議、程序組織,乃至一些重要功能點上都做了改進和更新。我將這個Java版本取名為metamorphosis,也就是卡夫卡的代表作《變形記》的英文名。

              在原版本上,目前做了如下改進:
          1、協議替換為文本協議,整個協議類似memcached,文本協議的優點自不必說。通訊框架也是采用內部使用的通訊框架,減少工作量。

          2、存儲結構上也采用自定義結構,更簡潔緊湊。

          3、kafka原來只支持consumer和broker之間的服務查找和負載均衡,meta加入了producer和broker之間的服務查找和負載均衡。

          4、Consumer API沒有采用kafka的stream方式,而是同時實現同步獲取和異步訂閱兩種方式,更接近JMS和Notify。

          5、改進了服務器端文件recover的性能,采用并發多線程recover的方式(可選)。

          6、添加了實時統計功能和協議,類似memcached的stats協議,響應透明號召。

          7、客戶端的連接復用。
             
              以后要做的事情,可能包括:
          1、實現類似Mysql的master/slave方案,可能還要分為同步和異步兩種模式。

          2、分區擴展時候的數據自動遷移功能,做到無痛水平擴展。

          3、高可用方案的另一個實現。

          4、嵌入Http server做web管理。
            
              工作在本周初步告一段落,接下來是要做集成測試和壓測等,我在兩臺8核16G的機器上分別部署服務器和客戶端(訂閱者發布者同在一臺),做的一個簡單壓測數據如下:并發100個線程發送5000萬消息并同時消費,1K大小的消息TPS可以達到3.8萬,4K大小的消息TPS可以達到1.8萬,服務器load都維持在一個較低的水平。從這個數據來看,超過我一開始的預期。后續可能做下kakfa的測試對比下。



          評論

          # re: 最近對kafka的移植工作  回復  更多評論   

          2011-05-07 15:57 by Scud(飛云小俠)
          高手...

          # re: 最近對kafka的移植工作  回復  更多評論   

          2011-05-08 18:12 by hongjiang
          通訊框架你換成了什么?

          # re: 最近對kafka的移植工作  回復  更多評論   

          2011-05-08 18:13 by hongjiang
          TBRemoting ?

          # re: 最近對kafka的移植工作  回復  更多評論   

          2011-05-08 18:45 by dennis
          @hongjiang

          notify-remoting,notify的通訊框架。

          # re: 最近對kafka的移植工作  回復  更多評論   

          2011-05-14 21:34 by niumd
          scala語言沒接觸過,想讀源碼,您的java移植版開源嗎?

          # re: 最近對kafka的移植工作  回復  更多評論   

          2014-03-08 07:56 by tomhanks
          請問你是如何做的壓測,能具體講講嗎?
          主站蜘蛛池模板: 新建县| 会昌县| 大田县| 都兰县| 福安市| 东乌珠穆沁旗| 太湖县| 离岛区| 衡阳市| 岐山县| 珲春市| 云梦县| 英德市| 措勤县| 车致| 汾西县| 瓦房店市| 平和县| 九台市| 黄大仙区| 莎车县| 澄迈县| 九江县| 东乌珠穆沁旗| 交城县| 香港 | 彝良县| 庄河市| 汉中市| 峡江县| 缙云县| 甘洛县| 江陵县| 东城区| 祁阳县| 峨边| 武邑县| 延津县| 松潘县| 永德县| 合作市|