storm学习之Netty代替ZMQ

2019-03-02 23:56|来源: 网路

整理自

http://www.csdn.net/article/2014-08-04/2821018/2

消息队列现在是模块之间通信的非常通用的解决方案了。消息队列使得进程间的通信可以跨越物理机,这对于分布式系统尤为重要,毕竟我们不能假定进程究竟是部署在同一台物理机上还是部署到不同的物理机上。RabbitMQ是应用比较广泛的MQ

提到MQ,不得不提的是ZeroMQ。ZeroMQ封装了Socket,引用官方的说法: “ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ 的明确目标是“成为标准网络协议栈的一部分,之后进入 Linux 内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD 套接字之上的一层封装。ZMQ 让编写高性能网络应用程序极为简单和有趣。”

因此, ZeroMQ不是传统意义上的MQ。它比较适用于节点之间和节点与Master之间的通信。Storm在0.8之前的Worker之间的通信就是通过ZeroMQ。但是为什么0.9就是用Netty替代了ZeroMQ呢?说替代不大合适,只是0.9的默认的Worker之间的通信是使用了Netty,ZeroMQ还是支持的。Storm官方认为ZeroMQ有以下缺点:

  1. 不容易部署,尤其是在云环境下:以为ZMQ是以C写的,因此它还是紧依赖于操作系统环境的。
  2. 无法限制其内存。通过JVM可以很容易的限制java所占用的内存。但是ZMQ对于Storm来说是个黑盒似得存在。
  3. Storm无法从ZMQ获取信息。比如Storm无法知道当前buffer中有多少数据为发送。

当然了还有所谓的性能问题,具体可以访问Netty作者的blog。结论就是Netty的性能比ZMQ(在默认配置下)好两倍。不知道所谓的ZMQ的默认配置是什么。反正我对这个结果挺惊讶。当然了,Netty使用Java实现的确方便了在Worker之间的通信加上授权和认证机制。这个使用ZMQ的确是不太好做。



转自:http://blog.csdn.net/maixia24/article/details/38392457

相关问答

更多
  • 既然要学习,就都看看,都看了之后才了解他们的区别啊。 如果按顺序,还是先学apark ,它最简单。
  • hadoop、storm、spark、akka是分布式处理框架; kafka是一种消息队列; zookeeper是dubbo的服务注册中心; 由上可见,这些东西相关性没那么大,学习是要看应用场景的,如果你在大数据公司里做分布式处理,那hadoop、spark二者之一估计是必学的;如果你要做微服务相关,那zookeeper可能是要了解的(因为也可以选择eureka);消息队列作为常用的消息中间件,在高阶应用,也是必然需要掌握的。 学习不分先后,用到了就早学,没用到的可能一辈子也不会学到。
  • hadoop、storm、spark、akka是分布式处理框架; kafka是一种消息队列; zookeeper是dubbo的服务注册中心; 由上可见,这些东西相关性没那么大,学习是要看应用场景的,如果你在大数据公司里做分布式处理,那hadoop、spark二者之一估计是必学的;如果你要做微服务相关,那zookeeper可能是要了解的(因为也可以选择eureka);消息队列作为常用的消息中间件,在高阶应用,也是必然需要掌握的。 学习不分先后,用到了就早学,没用到的可能一辈子也不会学到。
  • netty如何使用[2022-05-14]

    和spring , 先写一个类,然后与一般的bean同样配置
    当下雨的时候,风暴都到了
  • 一般都是要学的,像spark其实它只是替代了hadoop生态系统中的mapreduce功能,hadoop的其他的部分,spark都没有替代,所以要学hadoop;而storm是实时计算框架,比如说业务需要记录用户的足迹等信息,你肯定得需要一个存储的方式吧,最有可能的就是直接写入到hadoop的hdfs了,所以storm也离不开hadoop。所以,你还是先学hadoop吧,这个弄懂了,其他都好说。手动打,请采纳!
  • Storm是什么文件[2023-06-19]

    Storm译为汉语即‘暴风雨’、“暴风雪”,是暴风影音软件的英文名,是一种媒体播放器。   Storm还是一个分布式的、容错的实时计算系统,由BackType开发,广泛用于进行实时日志处理,实时统计、实时风控、实时推荐等场景中,目前最新版本是Storm 0.8.0。   Storm还是外文歌曲的名字,具体可在百度音乐中搜索。
  • 你再把它和hadoop比较快慢。 两个框架都用于处理大量数据的并行计算。 所以这是把过程传递给数据,metaQ、hadoop:Hadoop使用磁盘作为中间交换的介质.容错性,再小的话hdfs上会一堆小文件),而是比较的吞吐了,在于reduce任务通过网络拖过去运算: 1,只需实现一个简单的Storm通信协议即可,数据直接通过网络导入内存,产生一行就通过一个传输系统发给流式计算系统。Storm保证每个消息至少能得到一次完整处理、多份复制等。二者在延时和吞吐上没太大区别。但是吞吐也低于mapreduce,可以在 ...
  • Spark使用Akka Actor进行RPC和消息传递,而后者使用Netty。 另外,为了移动批量数据,使用Netty。 对于混洗数据,可以选择使用Netty。 默认情况下,NIO直接用于传输洗牌数据。 对于广播数据(驾驶员对所有员工的数据传输),默认情况下使用Jetty。 Spark uses Akka Actor for RPC and messaging, which in turn uses Netty. Also, for moving bulk data, Netty is used. For ...
  • 它之所以用于在线学习,是因为它是逐个处理数据的解决方案,您可以通过设置一些并行化(更多工作流程和节点)来扩展。 您通常使用批量学习来构建或训练具有历史数据的模型,但对于该处理,逐个数据不是您的最佳选择。 由于您可能需要处理数月的数据,因此您需要对其进行批处理以优化流程。 这就是像火花这样的其他解决方案到位的地方。 The reason why it is for online learning is because is a solution to process data one by one, that ...