背景

《财富》杂志前100企业,有80家以上信任、使用Kafka。全球行业top10企业中,制造业10/10,银行业7/10,电信8/10,保险10/10,10/10信息技术服务公司,7/10零售公司,使用Kafka。

Apache Kafka的一个开源的、分布式的事件流流平台,成千上万的企业使用它来实现高性能的数据管道,流分析,数据集成和关键任务应用程序。

Kafka由Scala和Java开发。

背景,原来是一个高吞吐量,分布式的发布——订阅消息系统,分布式流处理平台,最初由Linkedin 公司开发,后面成为Apache基金会ASF的一分子。

核心模块由Scala开发,支持Java,C/C++,Scala,Python,Go,Erlang,Nodejs等多语言的客户端。越来越多的开源分布式系统支持与Kafka集成,如Flume,Apache Storm,Spark,Flink。

特性,高吞吐量,可持久化,分布式,支持数据流处理。

特点,开源的,轻量级,分布式,可分区,具有复制备份(Replication),基于Zookeeper协调管理,流式处理,高吞吐量,高性能,低延迟,可容错,可持久化。

场景

使用场景包括

  • 发布、订阅,作为一个消息系统,读写流数据
  • 处理,编写实时的、可扩展的流处理应用程序。
  • 存储,基于分布式,复本和容错机制的集群中存储流数据

消息队列

提出问题

双11的时候,PK剁手了,买了N多的东西,过了几天,周五,快递小哥送快递来了,可是PK正在搬砖,工头很苛刻,不让PK回家拿快递,快递小哥又只能等着PK签收,才能送下一家,怎么办呢?这个时候PK告诉快递小哥,让他把快递放在门卫王大爷那儿。

解耦,不用现在来接收这个快递了,不影响搬砖了,找王大爷取快递就可以了,不管是那个快递小哥,找王大爷拿就可以了。

异步,快递小哥不用等待PK签收,可以去送别的快递了。

削峰,双十一订单剧增,多个快递小哥都有满满一车的快递,门卫大爷房间也小,年老色衰也记不住谁是谁的了,快递小哥把快递放在菜鸟驿站。

消息队列通信模式

包括点对点和发布订阅与的模式

点对点,发布订阅

点对点模式,消息队列中的消息只能被一个消费者消费。

发布订阅,生产者生产一个消费,可以被订阅Topic的所有消费者消费,每个消费者可以拿到消息队列中原始消息的拷贝。

流处理

流处理和批处理

流处理,对于源源不断、实时、动态的数据的处理、聚合、分析。快速,高效,低延迟。(场景包括支付交易,社交网络,物联网,系统监控等)

批处理,对有界、持久、大量的数据的处理,聚合分析。速度较慢,处理数据量大。(场景包括数据仓库,离线日志分析,数据挖掘)

基本概念

Kafka集群可以在一个或跨数据中心的多个服务器上运行。Kafka集群存储流数据在Topic中。每条数据由一个键,一个值,和一个时间戳。

通过一个Kafka的架构图来了解Kafka的基本概念,如下:

  • Producer,消息的生产者
  • Consumer,消息的消费者
  • Kafka Cluster,Kafka集群
  • Broker,Kafka实例,每个机器上有一个或者多个Kafka实例,一般情况下一个机器上一个Kafka实例,多个Kafka实例构成一个Kafka集群,每个Kafka实例在集群中都有一个唯一的编号。
  • Topic,消息的主题,可以认为是消息的分类,一个Broker上可以创建多个Topic,Kafka消息保存在Topic中。
  • Partition,Topic的分区,每个Topic可以有多个分区,分区的作用是负载,提高Kafka的吞吐量,同一个Topic在不同分区的数据是不同的,Partition的物理表现形式就是一个文件夹。一个分区包含一系列有序不可变的消息。跨分区的消息没有顺序。
  • Leader,每个分区都有多个副本,Leader负责处理客户端读、写请求的分区。
  • Follower,即Replication,作为Leader的备胎,从Leader同步数据,但不处理客户端请求。当主分区Leader故障时,会选择一个备胎Follower作为Leader。Kafka中默认的最大副本数量是10个,副本和被复制Partition的数据是相同的,且副本的数量不能大于Broker的数量,Follower和Leader要在不同的机器,同一机器对于同一个分区也只可能存放一个副本。通过副本保证可用性。
  • Message,消息,Kafka通信的基本单位,固定长度的消息头和可变长度的消息体构成。
  • Consumer Group,可以将多个消费者组成一个消费者组,在Kafka的设计中,同一个分区的数据,只能被消费者组中的某一个消费者消费,同一个消费者组中的消费者可以消费同一个Topic的不同分区的数据,这也提高了Kafka的吞吐量,如下图所示。

  • Zookeeper,Kafka集群依赖Zookeeper来保存集群的元数据,选举Leader,Folloler,保证系统的可用性。

(完)(^_^)

Kafka(一)背景和概念相关推荐

  1. 图解Kafka中的基本概念

    本次将学习Kafka中的基本概念.首先我们回顾下在消息系统的使用场景中有三种角色分别是生产者.消息系统和消费者,其中生产者负责产生消息和发送消息到消息系统,而消息系统将为消费者提供消息用于处理,如下图 ...

  2. ZEMAX | 照明设计的理论背景与概念

    ZEMAX | 照明设计的理论背景与概念 本文将介绍照明系统的基础知识,特别是照明系统的背景和一些理论.本文是照明学习路径的基础内容,其中没有冗长的理论方程式推导,而是对基本原理的讨论,比如" ...

  3. Oracle01-课程背景-基本概念-DQL查询语句

    目录 一.课程背景 1.1.为什么要有数据库? 1.2.数据库的简单介绍 1.3.数据库的优点 1.4.数据库的分类 1.4.1.关系型数据库 1.4.2.非关系型数据库 1.4.3.关系型数据库与关 ...

  4. Kafka系列4-基本概念及消费者组(Consumer Group)的理解

    几个基本概念: Kafka是一个分布式流数据系统,使用Zookeeper进行集群的管理.与其他消息系统类似,整个系统由生产者.Broker Server和消费者三部分组成,生产者和消费者由开发人员编写 ...

  5. kafka基础之核心概念

    一 Broker(代理) 一台kafka服务器就可以称之为broker.一个集群由多个broker组成,一个broker可以有多个topic 二 Topic(主题) 每一条发送到kafka集群的消息都 ...

  6. kafka消息队列的概念理解

    kafka在大数据.分布式架构中都很流行.kafka可以进行流式计算,也可以做为日志系统,还可以用于消息队列. kafka作为消息队列的优点: 分布式的系统 高吞吐量.即使存储了许多TB的消息,它也保 ...

  7. kafka中的核心概念

    目录 1.kafka中涉及的名词 2.kafka功能 3.kafka中的消息模型 4.大概流程 1.kafka中涉及的名词 消息记录(record): 由一个key,一个value和一个时间戳构成,消 ...

  8. kafka基础架构(概念篇)

    1.kafka简介: Kafka最初由Linkedin公司开发,是一个分布式的.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常用于web/nginx日 ...

  9. Kafka消息队列基本概念

    1.认识kafka (1)kafka是一个分布式的基于发布/订阅模式的消息队列. 消息队列的两种模式: 点对点模式(一对一):消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且 ...

最新文章

  1. python 列表输入sql_SQL查询中的Python列表作为参数
  2. Tornado 学习笔记
  3. 【LeetCode】0830.较大分组的位置
  4. html中使浮动的字为行排列,CSS布局:float浮动
  5. 微信开放平台全网发布时,检测失败 —— C#
  6. EJB 3.x:生命周期和并发模型(第1部分)
  7. SpringBoot注解分析
  8. php创建游戏房间思路,php设计模式之建造器模式分析【星际争霸游戏案例】
  9. android开发学习 ------- android studio 同时用svn和git 进行代码管理 出现的问题
  10. hadoop之安全模式,HDFS的读取,写入
  11. C语言实验报告册中级进步,C语言实验报告册
  12. Arduino Nano与SIM800C 通信
  13. 拼多多商家无货源,如何批量铺货?
  14. 被远程之后,键盘失灵问题
  15. 腾讯云函数要收费了,试试阿里云的云效codeup吧,这里有教程
  16. 为什么HDMI连接显示器无信号?
  17. 前端js面试题(高级)
  18. Transformer课程 第8课 NER案例模型训练及预测
  19. (实战)[自动驾驶赛车-中国联赛]-合集
  20. java递归处理单位人员组织机构树

热门文章

  1. 打油诗 看《大上海》
  2. WPF 禁止在文本框中输入数字
  3. linux 启动tomcat 怎么显示日志文件,随着LINUX的启动,打开一个终端显示TOMCAT的日志文件,请问如何做到?...
  4. anyview下载java,下载AnyviewMobile Games Java - 596763 - ebook txt Anyview | mobile9
  5. mysql 日志抓取变化_MySQL慢查询日志分析提取【转】
  6. python 仅保留数字_Python基本语法元素 | 语法元素分析
  7. php 重载进程,关于php-fpm与nginx进程重载
  8. MySQL函数少传参数_Mysql中的少用函数
  9. ul c语言,IMX6UL裸机实现C语言蜂鸣器实验
  10. java 构造器 null_java - 主结尾处的Java构造函数用户输入在构造函数中为Null - 堆栈内存溢出...