设计目标

  • 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。
  • 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输
  • 同时支持离线数据处理和实时数据处理
  • Scale out:支持在线水平扩展
  • 以时间复杂度为O(1)的方式提供消息持久化能力

性能比较

  • 对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。实验表明:入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。

特性

  • 快速持久化,可以在O(1)的系统开销下进行消息持久化
  • 高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率
  • 完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现负载均衡
  • 支持Hadoop数据并行加载,对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案
  • Apache Kafka相对于ActiveMQ是一个非常轻量级的消息系统,除了性能非常好之外,还是一个工作良好的分布式系统

架构

  • Broker: Kafka集群包含一个或多个服务器,这种服务器被称为broker
  • Topic: 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
  • Parition:  Parition是物理上的概念,每个Topic包含一个或多个Partition
  • Producer: 负责发布消息到Kafka broker
  • Consumer: 消息消费者,向Kafka broker读取消息的客户端。
  • Consumer Group: 每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。
  • 拓扑结构:
          
如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。

最新文章

  1. POJ 1979 题解
  2. HTML基础篇之视频音频
  3. C++ map的遍历
  4. jquery基础知识学习笔记
  5. apache配置多域名多站点记录
  6. 安卓中的数据存储方式以及ContentProvider的简单介绍
  7. 框架Maven笔记系列 一 基础
  8. iOS之08-核心语法
  9. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
  10. cout 计算顺序问题
  11. 获得N位数字字母随机组合
  12. delphi 设置表格样式。
  13. 在Windows操作系统中,如何终止占有的8080端口的tomcat进程
  14. asp.net core 多端口监听&日志服务
  15. HTTP各种特性
  16. C语言中对数组名取地址
  17. Linux下的二进制兼容性的检测
  18. VS团队资源管理器(VS自带git)使用说明_使用VS自带git推送到远程存储库
  19. Windows下搭建网络代理
  20. js canvas画柱状图 没什么高端的 就是一篇偶尔思路的

热门文章

  1. windows7 安装PHP7 本地网站搭建
  2. C#转义字符(Z)
  3. FixFFmpeg 修改官方编译的ffmpeg能在 XP 上运行的工具
  4. Effective C++ -----条款55:让自己熟悉Boost
  5. tp5 中 model 的更新方法
  6. AFNetworking3.0介绍,收藏
  7. [Java基础] Java中List.remove报错UnsupportedOperationException
  8. 查找html中的某个事件
  9. 浅谈C语言中结构体的初始化
  10. ORA-01102 报错解决方法