HiveMQ是什么

技术HiveMQ是什么小编给大家分享一下HiveMQ是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简单介绍HiveMQ是企业级MQTT

边肖将与你分享什么是HiveMQ。相信大部分人还不太了解,所以分享这篇文章给大家参考。希望你看完这篇文章后收获多多。让我们一起来发现吧!

简单介绍

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

它是用纯Java实现的。

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

基于以上描述,我们将基于其高性能、高可用性、高扩展性和高安全性来分析其源代码。

注意:此源代码基于HiveMQ 3 . 1 . 2版。

拓扑图

单身HiveMQ是什么

多个客户端直接连接到代理。群组HiveMQ是什么

许多客户端都与负载平衡器连接,负载平衡器执行负载平衡并将连接分配给每个代理。几个代理组成一个集群,JGroup进行集群通信。多个Broker使用一致哈希环的虚拟节点对集群中的数据进行主备份,从而实现高可用性。HiveMQ提供了多种集群发现,以实现不同网络场景下的集群发现。

架构图

HiveMQ是什么

处理程序由Netty ChannelHandlerAdapter实现。处理SSL编解码器;用于处理MQTT协议;监测数据收集;处理流量限制;扩展点回调触发器和其他客户端长链接。

对SpiHiveMQ进行了扩展,以提供各种扩展点,如回调、缓存、调度器、身份验证、授权、-配置等。用于HiveMQ Broker的二次开发。还提供了各种异步/同步接口服务。让开发者可以基于HiveMQ开发自己的业务;

插件是基于SPI的扩展点。根据HiveMQ的Plugin开发要求,注册属于客户的Plugin。HiveMQ官方也给我们提供了一些基本插件和各种插件的例子。

ClusterServices是一堆处理集群连接、数据备份、数据交换、节点状态、一致性有虚拟节点等的服务。

持久性是用于处理集群节点之间的消息和数据存储/同步的存储。

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

00-1010使用Guice作为DI

使用Netty 4作为网络框架

使用JGroups在集群节点之间进行集群通信

使用Exodus作为代理信息文件的持久存储

使用Dropwizard指标对代理进行统计和监控

使用Kryo进行序列化/反序列化

使用Jetty作为代理端servlet容器

使用Resteasy作为代理端restfull框架

使用Quartz/来安排代理端任务。

还有其他使用的框架没有一一列出。

官方工具: https://www.hivemq.com/developers/community/

认证:https://www.hivemq.com/docs/4.2/extensions/introduction.html(似乎为每个网格提供了一个认证者?)

硬件配置和性能优化:3359 www.hivemq.com/docs/4.2/hivemq/system-requirements.html(包括文件句柄调整和TCP缓冲区大小调整)

Hivemq扩展开发库:https://github.com/hivemq? Q=extension type=language=Java(提供各种API,感觉可以做很多事情)

开发库应用编程接口:https://www.hivemq.com/docs/4.2/extensions-javadoc/index.h

tml

hivemq扩展程序HTTP提供了就绪检查,这意味着服务能够检测HiveMQ实例是否脱机:https://github.com/hivemq/hivemq-heartbeat-extension

hivemq基准测试

基准1000W连接/40个节点=25W/node

Message Rate for Publisher

Test Msg/sec
QoS 0 4.00
QoS 1 2.00


详细性能测试报告可到官网下载PDF文档

机器:

Test Msg/sec
Instance Type c4.2xlarge
RAM 15GiB (~16GB)
vCPU 8
Physical Processor Intel Xeon E5-2666 v3
Clock Speed (GHz) 2.9
Dedicated EBS Bandwidth (Mbps) 1000
Operating System Vanilla Amazon Linux ami-b73b63a0

结论:

hivemq client话费8分47秒连接1000W个连接到hivemq,平均每秒500个连接

CPU:38%→25%

内存:6.97-7.6

Quick Results: Connect & Subscribe Test - 10,000,000 MQTT clients

HiveMQ 3.3.0

40 node Cluster

Connect Duration: Connect Speed (avg):

CPU Memory

Subscribe Duration: Subscribe Speed (avg):

CPU Memory

8 min 47 sec 19,011 connects/sec 30 % 5.07 GB

4 min 31 sec 36,765 subscribes/sec 38 % 6.97 GB

测试表明,HiveMQ每秒平均可处理174万条消息(每秒1,739,876毫秒/秒)出,而每秒可处理16.7万条消息(166,925毫秒/秒)入。 在30分钟的测试时间内,总共有31.3亿条消息(3,131,776,800 msg)传出消息和3亿msg(300,465,888 msg)传入消息。

查看系统带宽时,HiveMQ平均每秒处理389.78兆字节(408,711,565字节/秒)出,并处理327.84 MB /秒(343,762,614字节/秒))入。

在测试执行期间,CPU使用率平均为64.72%,内存为11.33 GB(12,164,655,331字节)。

QoS 0测试表明

HiveMQ在大型群集中具有强大的吞吐能力,可以充分发挥其在水平扩展方面的优势。 具有1000万个并发连接的客户端的HiveMQ实现了每秒170万条外发消息的恒定吞吐量,平均CPU负载不超过64%。 为了使数字更易于掌握,让我们将它们与一些庞大的Internet应用程序进行比较,其中一个很好的例子是WhatsApp。 2014年,WhatsApp发推文称,一天之内,它们已收到640亿条消息(传入200亿条消息,传出440亿条消息)。 将总计640亿条消息与我们在测试中获得的数量进行比较,每30分钟添加传入和传出流量时,我们有3,432,242,688条消息。每天总共增加了1647.5亿条消息(164,747,649,024条消息)。 HiveMQ群集每天可以轻松处理通过整个WhatsApp基础架构发送的消息量的2.5倍! 在查看性能以及负载指标时,很明显,HiveMQ不仅提供高吞吐量,而且以64%的CPU和73%的内存使用率保持受控和稳定的状态。

QoS 1测试表明,

HiveMQ每秒平均可处理78万条消息(779,576 msg / sec),每秒可处理78万条消息(779.577 msg / sec)。 在30分钟的测试期间内,总共有14亿条消息(1,403,237,449 msg)传出消息和14亿消息(1,403,237,882 msg)传入。

查看系统带宽时,HiveMQ平均每秒处理279.44兆字节(293,010,785字节/秒),并处理220.24 MB /秒(230,935,379字节/秒)。

HiveMQ可以处理硬件上的10.000.000个连接,并具有出色的,稳定的吞吐量,同时在传入和传出两个方向(QoS 1测试)上具有170万个传出消息(QoS 0测试)和780 msg / sec。 HiveMQ能够轻松地水平扩展到群集节点的中间两位数 HiveMQ能够处理具有高放大倍数的大型扇出情况。在测试时间范围内,吞吐量保持恒定且稳定,消息速率随群集大小和CPU数量而变化 HiveMQ具有水平扩展的能力,因此非常适合小型和大型部署。 它是最具扩展性的MQTT代理,即使提供QoS 1保证,也具有出色的性能。

hivemq配置项

操作系统

生产:Linux是生产环境当前支持的唯一操作系统。建议使用CentOS7或其他基于RHEL的发行版。

最低硬件要求
  • 至少4GB RAM

  • 4个或更多CPU

  • 100GB或更多可用磁盘空间。

环境

生产:需要OpenJDK JRE 11或更高版本。

Linux配置优化

您可以通过几种方式优化Linux配置:

增加打开文件限制

如果在Linux操作系统上运行HiveMQ,请确保允许HiveMQ进程打开足够数量的文件。要调整限制,请在/etc/security/limits.conf文件中添加以下几行:

  • hivemq hard nofile 1000000

  • hivemq soft nofile 1000000

  • root hard nofile 1000000

  • root soft nofile 1000000

调整TCP设置

在具有许多连接的系统上,可能有必要调整TCP配置并使系统打开更多套接字。要进行这些调整,请在/etc/sysctl.conf文件中添加以下行:

#这会使内核在服务过载时主动发送RST数据包。

net.ipv4.tcp_fin_timeout = 30

#可分配的最大文件句柄。

fs.file-MAX = 5097152

#启用等待插座的快速回收。

net.ipv4.tcp_tw_recycle = 1

  • #从协议的角度来看,在安全的情况下,允许将等待套接字重新用于新连接。

net.ipv4.tcp_tw_reuse = 1

  • #的默认大小接收缓冲区的套接字使用。

net.core.rmem_default = 524288

  • #该套接字使用的发送缓冲区的默认大小。

net.core.wmem_default = 524288

  • #套接字使用的已接收缓冲区的最大大小。

net.core.rmem_max = 67108864

  • #套接字使用的已发送缓冲区的最大大小。

net.core.wmem_max = 67108864

  • #每个TCP连接的接收缓冲区的大小。(最小值,默认值,最大值)

net.ipv4.tcp_rmem = 4096 87380 16777216

  • #每个TCP连接发送的缓冲区的大小。(最小值,默认值,最大值)

net.ipv4.tcp_wmem = 4096 65536 16777216

要应用更改,请键入sysctl -p或重新启动系统。

以上是“HiveMQ是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/141705.html

(0)

相关推荐

  • markdown-it-container

    技术markdown-it-container markdown-it-containervite 插件中配置Markdown({markdownItOptions: {highlight: funct

    礼包 2021年12月22日
  • 如何进行C++运行机制的介绍

    技术如何进行C++运行机制的介绍这期内容当中小编将会给大家带来有关如何进行C++运行机制的介绍,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++编程语言是一款应用广泛,功能强大的编程

    攻略 2021年10月27日
  • 如何用MEGA构建进化树

    技术如何用MEGA构建进化树如何用MEGA构建进化树,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。年引用量超大的 MEGA软件,今天小编就先

    攻略 2021年12月10日
  • MySQL 5.7.25在Windows平台如何安装

    技术MySQL 5.7.25在Windows平台如何安装这篇文章将为大家详细讲解有关MySQL 5.7.25在Windows平台如何安装,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1

    攻略 2021年11月1日
  • 第一次使用Swagger出现空指针异常

    技术第一次使用Swagger出现空指针异常 第一次使用Swagger出现空指针异常问题
    在第一次使用swagger时出现java.lang.NullPointerException。
    完整的错误信息如下

    礼包 2021年11月27日
  • XMLHttpRequest中fetch_ajax请求的新写法是什么

    技术XMLHttpRequest中fetch_ajax请求的新写法是什么这篇文章主要讲解了“XMLHttpRequest中fetch_ajax请求的新写法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小

    攻略 2021年11月5日