MQTT---HiveMQ源碼詳解(一)概覽

面向群體

  • 想自己實現(xiàn)MQTT Broker的朋友
  • 對現(xiàn)有開源的MQTT Broker或多或少有些不滿意的朋友

簡單介紹

HiveMQ是企業(yè)級MQTT Broker,提供高性能、高可用、高擴(kuò)展、高安全性的企業(yè)級服務(wù)。

它是純Java實現(xiàn)的。

官網(wǎng)地址:http://www.hivemq.com

基于它如上的描述,所以后續(xù)我們就是基于它的高性能、高可用、高擴(kuò)展、高安全性這幾個特點來分析它的源碼。

注意:本篇源碼都是基于HiveMQ 3.1.2版本源碼講解。

拓?fù)鋱D

Single

Single
  • 多個客戶端直接與Broker連接。

Cluster

Cluster
  • 多個客戶端與Load Balancer連接,由Load Balancer做負(fù)載均衡,將連接分發(fā)到各個Broker。
  • 多個Broker組成Cluster,由JGroup進(jìn)行集群通訊。
  • 多個Broker由一致性hash環(huán)虛節(jié)點,進(jìn)行集群中數(shù)據(jù)的主主備份,以達(dá)到高可用。
  • HiveMQ提供多種集群Discovery來達(dá)到不同組網(wǎng)場景中的集群發(fā)現(xiàn)。

架構(gòu)圖

這里寫圖片描述
  • Handlers由實現(xiàn)Netty ChannelHandlerAdapter。處理SSL;處理MQTT協(xié)議的codec;處理監(jiān)控數(shù)據(jù)收集;處理流量限制;擴(kuò)展點回調(diào)觸發(fā)等客戶端長鏈接。
  • SPI是HiveMQ擴(kuò)展出來為做HiveMQ Broker端二次開發(fā),提供各種Callback、 Cache、Scheduler、Authentication、Authorization、Configuration等等擴(kuò)展點;還提供了各種異步/同步的接口Service。以便開發(fā)人員基于HiveMQ開發(fā)屬于自己的業(yè)務(wù);
  • Plugins是基于SPI提供出來的擴(kuò)展點,按照HiveMQ的Plugin開發(fā)要求,注冊屬于客戶自己的Plugin,HiveMQ官方也給我們提供出來了一些基礎(chǔ)插件及各種插件的示例。
  • ClusterServices是處理集群連接、數(shù)據(jù)備份、數(shù)據(jù)交換、節(jié)點狀態(tài)、一致性has虛擬節(jié)點等處理的一堆Service
  • Persistences是處理消息的存儲、Cluster節(jié)點間的數(shù)據(jù)存儲/同步。
  • LocalPersistences是處理消息在當(dāng)前節(jié)點的信息存儲。

開源框架使用

  • 使用Guice做DI
  • 使用Netty 4做網(wǎng)絡(luò)框架
  • 使用JGroups做Cluster Node之間的集群通訊
  • 使用Exodus做Broker信息文件持久化存儲
  • 使用Dropwizard Metrics做Broker的統(tǒng)計、監(jiān)控
  • 使用Kryo做序列化/反序列化
  • 使用Jetty做Broker端servlet容器
  • 使用Resteasy做Broker端restfull框架
  • 使用Quartz/做Broker端任務(wù)的調(diào)度
    其他還有一些使用的框架不一一列舉

Why?

為什么研究MQTT Broker

  • 想自己實現(xiàn)手機(jī)app推送
  • MQTT協(xié)議輕量/QoS保證

為什么選擇HiveMQ

  • 它支持Plugin開發(fā)
  • 它支持Cluster
  • 它的代碼相當(dāng)嚴(yán)謹(jǐn),包括性能考慮/內(nèi)存考慮

源碼從哪來的?

  • 博主花了一年的業(yè)余時間,將hivemq混淆過的源碼反編譯了

MQTT交流群:221405150

RocketMQ交流群:10648794

NewSQL交流群:153575008


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容