zoukankan      html  css  js  c++  java
  • MQTT---HiveMQ源代码具体解释(一)概览

    源博客地址:http://blog.csdn.net/pipinet123


    MQTT交流群:221405150


    面向群体

    • 想自己实现MQTT Broker的朋友
    • 对现有开源的MQTT Broker或多或少有些不惬意的朋友

    简介

    HiveMQ是企业级MQTT Broker,提供高性能、高可用、高扩展、高安全性的企业级服务。

    它是纯Java实现的。

    官网地址:http://www.hivemq.com

    基于它如上的描写叙述。所以兴许我们就是基于它的高性能、高可用、高扩展、高安全性这几个特点来分析它的源代码。

    注意:本篇源代码都是基于HiveMQ 3.1.2版本号源代码解说。

    拓扑图

    Single

    Single

    • 多个client直接与Broker连接。

    Cluster

    Cluster

    • 多个client与Load Balancer连接,由Load Balancer做负载均衡,将连接分发到各个Broker。
    • 多个Broker组成Cluster,由JGroup进行集群通讯。

    • 多个Broker由一致性hash环虚节点,进行集群中数据的主主备份,以达到高可用。

    • HiveMQ提供多种集群Discovery来达到不同组网场景中的集群发现。

    架构图

    这里写图片描写叙述

    • Handlers由实现Netty ChannelHandlerAdapter。处理SSL;处理MQTT协议的codec;处理监控数据收集;处理流量限制;扩展点回调触发等client长链接。

    • SPI是HiveMQ扩展出来为做HiveMQ Broker端二次开发,提供各种Callback、 Cache、Scheduler、Authentication、Authorization、Configuration等等扩展点;还提供了各种异步/同步的接口Service。

      以便开发者基于HiveMQ开发属于自己的业务;

    • Plugins是基于SPI提供出来的扩展点。依照HiveMQ的Plugin开发要求,注冊属于客户自己的Plugin,HiveMQ官方也给我们提供出来了一些基础插件及各种插件的演示样例。
    • ClusterServices是处理集群连接、数据备份、数据交换、节点状态、一致性has虚拟节点等处理的一堆Service
    • Persistences是处理消息的存储、Cluster节点间的数据存储/同步。

    • LocalPersistences是处理消息在当前节点的信息存储。

    开源框架使用

    • 使用Guice做DI
    • 使用Netty 4做网络框架
    • 使用JGroups做Cluster Node之间的集群通讯
    • 使用Exodus做Broker信息文件持久化存储
    • 使用Dropwizard Metrics做Broker的统计、监控
    • 使用Kryo做序列化/反序列化
    • 使用Jetty做Broker端servlet容器
    • 使用Resteasy做Broker端restfull框架
    • 使用Quartz/做Broker端任务的调度
      其它另一些使用的框架不一一列举

    Why?

    为什么研究MQTT Broker

    • 想自己实现手机app推送
    • MQTT协议轻量/QoS保证

    为什么选择HiveMQ

    • 它支持Plugin开发
    • 它支持Cluster
    • 它的代码相当严谨,包含性能考虑/内存考虑

    源代码从哪来的?

    • 博主花了一年的业余时间,将hivemq混淆过的源代码反编译了
  • 相关阅读:
    C#来完成二叉树的搜索、遍历、及查找
    给大家推荐个学英语的网站
    我一直在心酸——有感于512大地震
    LINQ基础(一)
    再谈奶牛问题
    【转】程序员的十层楼,你属于哪一层?
    c#实现根据有规律的文件内容解析成实体类
    c#多线程操作界面控件的简单实现
    不要迷恋哥,哥不只是传说(再【转】世界上最牛的程序员)
    c#简单实现提取网页内容
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8505044.html
Copyright © 2011-2022 走看看