kafka是什么?

Kafka是由Apache开发的、开源的流处理平台,它是一个高吞吐量的、持久的、分布式的发布订阅模式的消息系统。
高吞吐量:普通配置的服务器即可满足每秒百万级别消息的生产和消费;
持久性:有一套完善的消息存储机制,可确保消息安全且持久的存储在服务;
分布式:它是基于分布式进行扩展管理的,消息存储在几台服务器上,当某台服务故障时,生产者和消费者可以转移到其他服务上。
消息队列有两种模式:点到点模式、发布订阅模式
点到点模式

点到点模式

点到点特点:
1.生产者生产消息后放入队列,消费者读取队列消息消费
2.消息被消费后不会继续存放在队列中,即一条消息只能被一个消费者消费
3.未被消费的消息会一直存储在队列中。就像单发邮件时,发送邮件->云服务器->接收者接收邮件到本地->云端该邮件丢弃
发布订阅模式

发布订阅模式

发布订阅模式特点:
1.生产者生产消息后放入队列,消费者订阅队列消息消费
2.消息被消费后继续存放在队列中,即一条消息可以被重复多次消费
3.消息有一个过期时间,过期之后会在队列中消失

什么样的设计使kafka拥有这些特点呢?

kafka架构设计

从架构图中,可以看出kafka服务分为四个部分:最顶端的zookeeper、最左侧的producer、中间的kafka cluster、最右侧的consumer。

kafka架构图

首先,介绍下图上的一些名词:

  1. zookeeper:kafka集群通过分布式部署,各服务器之间相互独立,需要一个注册系统将整个集群的服务器管理起来,zookeeper就是这样的一个角色;
  2. Broker:kafka server,kafka集群中每台服务器即为一个broker;
  3. Topic:消息主题,kafka中是通过topic对消息进行归类的,同一类消息存放的目录即主题;
  4. Partition:topic在物理上可以分成多个partition,每个partition在磁盘上对应一个目录,存放消息文件,每个partition是一个有序队列;
  5. Replica:备份,一个partition有多个副本,这些副本分为leader 副本和follower副本,leader副本完成与生产者和消费者之间的消息交互,follower提供备份服务,replica数目小于等于broker数;
  6. offset:偏移量,partition中的索引,下一条消息即将存入的位置;
  7. Leader:replica leader,完成与生产者、消费者之间消息交互;
  8. Follower:replica follower,消息备份,提高可靠性,
  9. Producer:生产消息,发送到kafka server;
  10. Consumer:订阅topic并消费message,每个consumer为一个独立的进程;
  11. consumerGroup:管理consumer,多个consumer组成consumerGroup。

这张图中间是kakfa cluster,用于暂存消息,broke即节点实例,多个broker组成了kakfa cluster;为了方便不同消息管理,kakfa提供了主题服务——topic,它类似于数据库中的表;为了增加topic的负责均衡和并发度,topic又分为不同的partition,消息存储在不同partition,从图中可以看出,不同partition分布在不同服务器上;为了提高服务可靠性,分区又由多个replica组成,这些副本分为leader和follower,leader负责与producer、consumer沟通,follower提供备份服务;整个kakfa集群通过zk管理配置、leader选举;producer生产消息,通过push模式将消息推送到kafka,存储到不同topic的不同partition,同一paritition的数据是顺序存储,这样单一topic的partition有序;producer和consumer关系就像老师和学生的关系,一个老师对应多个学生,一个学生也可对应多个老师;consumer通过pull模式订阅并消费kafka消息,一个或多个consumer就组成了consumerGroup,同一consumerGroup中的consumer只能订阅不同partition消息,但不同consumerGroup中consumer可以同时订阅同一partition消息。

kafka应用

  1. 消息系统:解耦生产者和消费者,缓存消息
  2. 日志收集:公司各种日志可以通过kafka进行收集、缓存
  3. 流式处理:spark streaming、flink

举两个简单例子:1.spark服务计算结果存入ES中,如果直接用ES的api服务写,整个流程是实时的强耦合并且spark服务峰值时很可能会把api服务打垮;引入kafka之后,整个流程变为异步,kafka和ES也不会强依赖,峰值也会得到控制;

2.典型的流式处理,kafka1中数据持续更新,spark服务会持续计算并推送给kafka2,直播带货就是一个典型的场景。直播间内主播需要实时的持续的获取粉丝的互动消息、货品的售卖情况,决定下一步做什么。抽象成数据流即为:采集粉丝互动信息、商品进销存信息->聚合计算->推送计算结果给主播,这样的场景用kafka很合适,因为它具有持续性非阻塞的特点。

kafka应用

kafka学习_kafka学习(第一章 初识kafka)相关推荐

  1. 学习笔记-应用光学 第一章 几何光学的基本定律

    学习笔记-应用光学 第一章 几何光学的基本定律 1-1 发光点.波面.光线和光束 发光点:本身发光或被照明后发光的几何点 波面:发光点在某一时刻发出的光形成波面 (在各向同性均匀介质中波面是球形) 光 ...

  2. PMBOK(第六版) 学习笔记 ——《第一章 引论》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  3. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  4. Cyclone V SoC FPGA学习之路第一章:综述

    Cyclone V SoC FPGA学习之路第一章:总体了解 关键词: adaptive logic modules – ALM 自适应逻辑模块 logic array block --LAB 逻辑阵 ...

  5. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

  6. 《起跑吧,Opa》 -- 中译本 第一章 初识Opa

    第一章 初识opa 本章,你将初识opa.你将学习如何安装Opa,编写opa程序以及熟悉Opa开发周期中的各个步骤. 安装opa 需要你预先从opa网站(http://opalang.org/)下载适 ...

  7. 第一章 初识HTML

    第一章 初识HTML 学习HTML: 开发网页.微信小程序.跨端界面开发.web游戏 hyper text markup language 超文本标记语言 网页的源码,解释和执行 w3c:万维网联盟/ ...

  8. 第一章 初识OpenHarmony

    序言 本书以3W1H教学法对每个知识点进行多维度介绍,笔者认为这样写更符合人类对新知识的学习.本书以教学场景续写,一章为半天知识点. 本书读者对象 阅读本书您需要具备html.css.js基础知识,所 ...

  9. c生万物【第一章 初识c语言】

    c生万物---第一章 初识c语言 前言 1.什么是C语言 2.第一个C语言程序 3.数据类型 4.变量.常量 4.1定义变量的方法 4.2变量的分类 4.3变量的使用 4.4 变量的作用域和生命周期 ...

最新文章

  1. JavaScript实时更新中国标准时间
  2. JVM判断对象是否已死?
  3. OpenGL从入门到精通--你好三角形
  4. 如何自行分析定位SAP BSP错误
  5. PHP,如何防止同一用户同一时间多次登录
  6. c语言中- gt he,C语言中deta,fabs,lt;stdlib.hgt;,lt;stdio.hgt;分别是什么意思
  7. 启动hive报错_远程服务器模式Hive的搭建过程详解
  8. 用户可以使用三种方式使用计算机,计算机操作系统期末复习笔记
  9. 第3章 面向对象 (上)
  10. 开宗明义—UEFI介绍 (二)
  11. o2o模式的优势 o2o模式的劣势
  12. AutomateTheBoringStuffWithPython
  13. 关于图计算图学习的基础知识概览:前置知识点学习(PGL)[系列一]
  14. 一个隐藏在角落的文章
  15. 以太网、局域网、广域网、因特网、互联网与万维网
  16. [CVPR2020]FaceScape: a Large-scale High Quality 3D Face Dataset and Detailed Riggable 3D Face
  17. 香蕉派 BPI-M2 Zero 四核开源单板计算机 , 全尺寸兼容raspberry pi Zero W
  18. ipfs文件服务器,IPFS的文件获取过程详解
  19. 【GA算法】遗传算法原理及其Matlab代码
  20. Linux系统配置及服务管理-网络管理实战1

热门文章

  1. 未定义函数或变量 'wavplay'。原因:2014a已经移除函数
  2. pip安装pytorch(CPU)附上whl文件
  3. AD显示隐藏管脚——谈mos管封装的一个坑处
  4. 事态升级是什么意思_为什么有的人越到关键时刻越容易掉链子?记住不要有“赌徒心理”...
  5. 【点击模型学习笔记】Modeling contextual factors of click rates_MS_AAAI2007
  6. P1279 字串距离 (动态规划)
  7. android下载 sdk 的两个代理 ,解决下载sdk慢的问题
  8. usb 视频设备 按钮消息处理 和普通usb连接的事件处理
  9. 毕业2月有余,苏州同学腐败第二次大聚会
  10. [转载] Python input()函数