Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模小打的网站中所有动作流数据。
优势

  • 高吞吐量:非常普通的硬件Kafka也可以支持每秒100W的消息,即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。
  • 支持通过Kafka服务器和消费机集群来区分消息,也就是可以对消息进行分类,然后使用不同分类的服务器消费机去消费不同分类的消息。
  • 支持Hadoop并行数据加载。
  • 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能
  • 支持Kafka Server间的消息分区,及分布式消息消费,同时保证每个partition内的消息顺序传输;producter、broker、consumer均支持水平扩展
  • 同时支持离线数据处理和实时数据处理
  • 消息持久化,所有的消息均被持久化到磁盘,无消息丢失,支持消息重放

Kafka和其他主流分布式消息系统的对比

阿里巴巴的Metal,RocketMQ都有Kafka的影子,他们要么改造了Kafka或者借鉴了Kafka,最后Kafka的动态扩容是通过Zookeeper来实现的。

关键概念:

Broker:kafka集群中的一台或者多台服务器统称为broker。
Topic:Kafka处理的消息源(feeds of messages)的不同分类,可以理解为消息分类。
Partition:Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。rartition中的每条消息都会被分配一个有序的id(offset)。也就是可以理解为一个群的群名称或者群号,因为大家都在这个群里面消费,成为分类,然后消费topic的时候进行物理分组,比如一个partition不够用,可以分配给多个partition。
Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。
Producers:消息和数据的生产者,向Kafka的一个topic发布消息的过程叫做producers。
Consumers:消息和数据消费者,订阅topics并处理其发布的消息过程叫做consumers。

图示说明

最上面的是Producer,也就是消费的生产者,生产好数据之后push到Broker中,也就是Kafka的服务器,push好之后下面有Consumer去消费Kafka的队列,可以看到图中是Consumer去拽Kafka中的消息,然后消费。整体是通过Zookeeper管理。

Kafka学习之(一)了解一下Kafka及关键概念和处理机制的更多相关文章

  1. kafka学习笔记(四)kafka的日志模块

    概述 日志段及其相关代码是 Kafka 服务器源码中最为重要的组件代码之一.你可能会非常关心,在 Kafka 中,消息是如何被保存和组织在一起的.毕竟,不管是学习任何消息引擎,弄明白消息建模方式都是首 ...

  2. ELK+Kafka学习笔记之搭建ELK+Kafka日志收集系统集群

    0x00 概述 关于如何搭建ELK部分,请参考这篇文章,https://www.cnblogs.com/JetpropelledSnake/p/9893566.html. 该篇用户为非root,使用用 ...

  3. Kafka学习笔记(6)----Kafka使用Producer发送消息

    1. Kafka的Producer 不论将kafka作为什么样的用途,都少不了的向Broker发送数据或接受数据,Producer就是用于向Kafka发送数据.如下: 2. 添加依赖 pom.xml文 ...

  4. Kafka学习笔记(1)----Kafka的简介和Linux下单机安装

    1. Kafka简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性,但是在设计实现上完全不 ...

  5. 【kafka学习笔记】PHP接入kafka

    安装扩展 # 先安装rdkfka库文件 git clone https://github.com/edenhill/librdkafka.git 或者: wget https://gitee.com/ ...

  6. kafka学习笔记(三)kafka的使用技巧

    概述 上一篇随笔主要介绍了kafka的基本使用包括集群参数,生产者基本使用,consumer基本使用,现在来介绍一下kafka的使用技巧. 分区机制 我们在使用 Apache Kafka 生产和消费消 ...

  7. kafka学习笔记(七)kafka的状态机模块

    概述 这一篇随笔介绍kafka的状态机模块,Kafka 源码中有很多状态机和管理器,比如之前我们学过的 Controller 通道管理器 ControllerChannelManager.处理 Con ...

  8. kafka学习笔记(六)kafka的controller模块

    概述 今天我们主要看一下kafka的controller的代码,controller代码是kafka的非常重要的代码,需要我们深入学习.从某种意义上来说,它是kafka最核心的组件,一方面,他要为集群 ...

  9. kafka学习笔记(五)kafka的请求处理模块

    概述 现在介绍学习一下kafka的请求处理模块,请求处理模块就是网络请求处理和api处理,这是kafka无论是对客户端还是集群内部都是非常重要的模块.现在我们对他进行源码深入探讨.当我们说到 Kafk ...

随机推荐

  1. Zabbix-3.0.x使用OneAlert发送告警

    导读 OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.它能以史上第二快的速度,对事件进行智能的组织. ...

  2. Egret在Chrome浏览器中的内存占用(内存泄露)

    参考: 怎样查看Chrome的内存占用情况 JS内存泄漏排查方法(Chrome Profiles) chrome内存泄露(一).内存泄漏分析工具 chrome内存泄露(二).内存泄漏实例 目录: 一 ...

  3. 浏览器出现“ net::ERR_BLOCKED_BY_CLIENT”错误的解决方法

    转载自:http://www.dbmng.com/art-2136.html Failed to load resource: net::ERR_BLOCKED_BY_CLIENT错误报告 错误原因: ...

  4. docker-compose安装elasticsearch集群

    文件目录: 1.编写docker-compose文件 version: '3' services: es-master: image: elasticsearch:6.4.3 container_na ...

  5. navicat自动生成DDL语句

    场景:当我们在开发库修改表结构之后,需要把这些表结构的变化同步更新到生产库,这时候可以在Navicat中copy表结构变更的SQL语句. 当你点击了“设计表”进行修改表结构,在保存表结构之前点击“SQ ...

  6. CSS Sprites 原理技术介绍及其优化方法

    先期的准备工作 应对一个项目后期维护成本大的问题,我们最好的解决方案就是在开始前制定一系列的规范来限制问题的产品.好的开始是成功的一半.对于CSS Sprites,在项目开始前,我们要充分认识一个产品 ...

  7. CentOS7.2安装配置FTP服务器VSFTP

    1,查看系统版本 2,yum安装vsftpd yum -y install vsftpd 3,修改配置文件 vim /etc/vsftpd/vsftpd.conf local_enable=YES w ...

  8. Servlet------>response

    request代表了请求 response代表响应 HttpServletResponse setStatus();----->发送状态码 setHeader();---->发送响应头 g ...

  9. ubuntu重新设置登陆界面|切换gdm kdm lightdm

    方法: $ sudo dpkg-reconfigure gdm 然后会出一个让你进行选择的提示,根据需要切换即可

  10. rabbitmq延迟队列相关

    https://blog.csdn.net/qq_26656329/article/details/77891793        --------------rabbitmq queue_decla ...