Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:

  • 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。
  • 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。
  • 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。
  • 同时支持离线数据处理和实时数据处理。
  • Scale out:支持在线水平扩展。
    • RabbitMQ
              RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP,
      STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。
    • Redis
              Redis是一个基于Key-Value对的NoSQL数据库,开发维护很活跃。虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。实验表明:入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。
    • ZeroMQ
             
      ZeroMQ号称最快的消息队列系统,尤其针对大吞吐量的需求场景。ZeroMQ能够实现RabbitMQ不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,技术上的复杂度是对这MQ能够应用成功的挑战。ZeroMQ具有一个独特的非中间件的模式,你不需要安装和运行一个消息服务器或中间件,因为你的应用程序将扮演这个服务器角色。你只需要简单的引用ZeroMQ程序库,可以使用NuGet安装,然后你就可以愉快的在应用程序之间发送消息了。但是ZeroMQ仅提供非持久性的队列,也就是说如果宕机,数据将会丢失。其中,Twitter的Storm 0.9.0以前的版本中默认使用ZeroMQ作为数据流的传输(Storm从0.9版本开始同时支持ZeroMQ和Netty作为传输模块)。
    • ActiveMQ
              ActiveMQ是Apache下的一个子项目。 类似于ZeroMQ,它能够以代理人和点对点的技术实现队列。同时类似于RabbitMQ,它少量代码就可以高效地实现高级应用场景。
    • Kafka/Jafka
             
      Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,而Jafka是在Kafka之上孵化而来的,即Kafka的一个升级版。具有以下特性:快速持久化,可以在O(1)的系统开销下进行消息持久化;高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现负载均衡;支持Hadoop数据并行加载,对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka通过Hadoop的并行加载机制统一了在线和离线的消息处理。Apache
      Kafka相对于ActiveMQ是一个非常轻量级的消息系统,除了性能非常好之外,还是一个工作良好的分布式系统。

最新文章

  1. Win7+Docker(boo2docker)搭建php开发环境简略
  2. Winform 文本框多线程赋值
  3. 内核input子系统分析
  4. ImageSwitcher自定意效果+定时切换图片
  5. 时光煮雨 Unity3D实现2D人物动画② Unity2D 动画系统&资源效率
  6. Android 5.0新特性了解(二)----RippleEffect
  7. 房子里的K2 BPM业务流程管理
  8. 17.allegro导入导出[原创]
  9. C#根据日期DateTime和持续时间int找到日期
  10. Web---演示servlet技术(servlet生命周期),解决中文乱码问题
  11. Java——(四)Collection之Set集合TreeSet类
  12. jQuery删除DOM节点
  13. (知识点)JavaScript原型和原型链
  14. 使用MBROSTool 工具制作本地硬盘F3救急模式的方法总结
  15. Shell Scripts - 条件语句,case语句,function功能
  16. 富文本编辑器 CKeditor 配置使用 (带附件)
  17. message:GDI+ 中发生一般性错误。
  18. Mysql哪些字段适合建立索引
  19. 2.1 View与ViewGroup的概念
  20. 基于Apache的阿里云部署Node.js服务器(Windows环境)

热门文章

  1. sizeof 空类
  2. Django 之Form
  3. Java读写hdfs上的avro文件
  4. Delphi FrieDAC 大数据处理
  5. Lazarus中Windows单元问题
  6. linux下安装Tomcat7.0
  7. 【转】JS windows.open()详解
  8. 在服务器上同时启动多个tomcat
  9. ubuntu 下安装和启动SSH 服务
  10. Bad owner or permissions on .ssh/config的解决