Kafka(一)背景和概念
背景
《财富》杂志前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(一)背景和概念相关推荐
- 图解Kafka中的基本概念
本次将学习Kafka中的基本概念.首先我们回顾下在消息系统的使用场景中有三种角色分别是生产者.消息系统和消费者,其中生产者负责产生消息和发送消息到消息系统,而消息系统将为消费者提供消息用于处理,如下图 ...
- ZEMAX | 照明设计的理论背景与概念
ZEMAX | 照明设计的理论背景与概念 本文将介绍照明系统的基础知识,特别是照明系统的背景和一些理论.本文是照明学习路径的基础内容,其中没有冗长的理论方程式推导,而是对基本原理的讨论,比如" ...
- Oracle01-课程背景-基本概念-DQL查询语句
目录 一.课程背景 1.1.为什么要有数据库? 1.2.数据库的简单介绍 1.3.数据库的优点 1.4.数据库的分类 1.4.1.关系型数据库 1.4.2.非关系型数据库 1.4.3.关系型数据库与关 ...
- Kafka系列4-基本概念及消费者组(Consumer Group)的理解
几个基本概念: Kafka是一个分布式流数据系统,使用Zookeeper进行集群的管理.与其他消息系统类似,整个系统由生产者.Broker Server和消费者三部分组成,生产者和消费者由开发人员编写 ...
- kafka基础之核心概念
一 Broker(代理) 一台kafka服务器就可以称之为broker.一个集群由多个broker组成,一个broker可以有多个topic 二 Topic(主题) 每一条发送到kafka集群的消息都 ...
- kafka消息队列的概念理解
kafka在大数据.分布式架构中都很流行.kafka可以进行流式计算,也可以做为日志系统,还可以用于消息队列. kafka作为消息队列的优点: 分布式的系统 高吞吐量.即使存储了许多TB的消息,它也保 ...
- kafka中的核心概念
目录 1.kafka中涉及的名词 2.kafka功能 3.kafka中的消息模型 4.大概流程 1.kafka中涉及的名词 消息记录(record): 由一个key,一个value和一个时间戳构成,消 ...
- kafka基础架构(概念篇)
1.kafka简介: Kafka最初由Linkedin公司开发,是一个分布式的.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常用于web/nginx日 ...
- Kafka消息队列基本概念
1.认识kafka (1)kafka是一个分布式的基于发布/订阅模式的消息队列. 消息队列的两种模式: 点对点模式(一对一):消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且 ...
最新文章
- python 列表输入sql_SQL查询中的Python列表作为参数
- Tornado 学习笔记
- 【LeetCode】0830.较大分组的位置
- html中使浮动的字为行排列,CSS布局:float浮动
- 微信开放平台全网发布时,检测失败 —— C#
- EJB 3.x:生命周期和并发模型(第1部分)
- SpringBoot注解分析
- php创建游戏房间思路,php设计模式之建造器模式分析【星际争霸游戏案例】
- android开发学习 ------- android studio 同时用svn和git 进行代码管理 出现的问题
- hadoop之安全模式,HDFS的读取,写入
- C语言实验报告册中级进步,C语言实验报告册
- Arduino Nano与SIM800C 通信
- 拼多多商家无货源,如何批量铺货?
- 被远程之后,键盘失灵问题
- 腾讯云函数要收费了,试试阿里云的云效codeup吧,这里有教程
- 为什么HDMI连接显示器无信号?
- 前端js面试题(高级)
- Transformer课程 第8课 NER案例模型训练及预测
- (实战)[自动驾驶赛车-中国联赛]-合集
- java递归处理单位人员组织机构树
热门文章
- 打油诗 看《大上海》
- WPF 禁止在文本框中输入数字
- linux 启动tomcat 怎么显示日志文件,随着LINUX的启动,打开一个终端显示TOMCAT的日志文件,请问如何做到?...
- anyview下载java,下载AnyviewMobile Games Java - 596763 - ebook txt Anyview | mobile9
- mysql 日志抓取变化_MySQL慢查询日志分析提取【转】
- python 仅保留数字_Python基本语法元素 | 语法元素分析
- php 重载进程,关于php-fpm与nginx进程重载
- MySQL函数少传参数_Mysql中的少用函数
- ul c语言,IMX6UL裸机实现C语言蜂鸣器实验
- java 构造器 null_java - 主结尾处的Java构造函数用户输入在构造函数中为Null - 堆栈内存溢出...