第 1 章 Kafka 概述

1.1 定义

Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

1.2 消息队列

1.2.1 传统消息队列的应用场景

MQ传统应用场景之异步处理

使用消息队列的好处 
1)解耦 
允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 
2)可恢复性 
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

3)缓冲                                                                                                                                                                                            有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。 
4)灵活性 & 峰值处理能力 
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。 
5)异步通信 
很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

1.2.2 消息队列的两种模式

(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。 消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。
Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
 

(2)发布/订阅模式(一对多,消费者消费数据之后不会清除消息) 消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。

发布订阅:1,消息队列主动推送(消费者消费速度不一样,会造成有的资源浪费,有点处理不过来),2,主动拉取(维护着长轮询策略,如队列没有数据,也要取访问队列)

kafka又是基于发布订阅模式,主动拉取数据,维护着长轮询策略,缺点:如队列没有数据,也要取访问队列

1.3 Kafka 基础架构

1)Producer :消息生产者,就是向 kafka broker 发消息的客户端; 
2)Consumer :消息消费者,向 kafka broker 取消息的客户端; 
3)Consumer Group (CG):消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。 
4)Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker可以容纳多个 topic。 
5)Topic :可以理解为一个队列,生产者和消费者面向的都是一个 topic; 
6)Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列; 
7)Replica:副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower。 
8)leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader。 
9)follower:每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 follower。

大数据技术之 Kafka (第 1 章 Kafka 概述)相关推荐

  1. 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  2. 大数据技术之Spark(一)——Spark概述

    大数据技术之Spark(一)--Spark概述 文章目录 前言 一.Spark基础 1.1 Spark是什么 1.2 Spark VS Hadoop 1.3 Spark优势及特点 1.3.1 优秀的数 ...

  3. 大数据技术原理与应用——第一章 大数据概述

    第一章 大数据概述 1.1 大数据时代 1.1.1 第三次信息化浪潮 信息化浪潮 发生时间 标志 解决的问题 代表企业 第一次浪潮 1980年前后 个人计算机 信息处理 Intel.AMD.IBM.苹 ...

  4. 大数据技术原理与应用——第一章

    大数据时代 三次信息化浪潮 信息化浪潮 时间 标志 解决的问题 第一次信息化浪潮 1980 个人计算机 信息处理 第二次信息化浪潮 1995 互联网 信息传输 第三次信息化浪潮 2010 大数据.云计 ...

  5. 大数据技术之Hive 第4章 DDL数据定义语言

    第4章 DDL数据定义语言 4.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LO ...

  6. 大数据技术技能分析大赛——第一章 python数据分析概述

    目标:掌握python,进行数据处理.统计分析.回归建模和数据可视化. 教材:<大数据分析务实初级教程(python)## 标题> 第一章 python数据分析概述 1.数据分析概述 1 ...

  7. 大数据技术之Shell 第11章 企业真实面试题

    第10章 正则表达式入门 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本.在Linux中,grep,sed ...

  8. 大数据技术之Flume(一)Flume概述、Flume快速入门

    文章目录 1 Flume 概述 1.1 Flume 定义 1.2 Flume 基础架构 1.2.1 Agent 1.2.2 Source 1.2.3 Sink 1.2.4 Channel 1.2.5 ...

  9. 大数据技术之MapReduce

    大数据技术之MapReduce 目录 大数据技术之MapReduce 第 1 章 MapReduce 概述 1.1 MapReduce 定义 1.2 MapReduce 优缺点 1.2.1 优点 1. ...

  10. 大数据技术之 Flume

    为什么选用Flume Python爬虫数据 Java后台日志数据 服务器本地磁盘 文件夹 HDFS Flume Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS. 网络端 ...

最新文章

  1. wangEditor 菜单栏随页面滚动位置改变(吸顶)问题解决
  2. python比c语言好学吗-学C语言好还是Python好?
  3. 算法积累之算法时间复杂度
  4. Android如何使用NoHttp
  5. iOS开发(8)UISwitch
  6. Centos7单用户模式修改root密码
  7. CentOs7 无可用“Chinese Support“
  8. java 线程map_map集合分割以及多线程处理数据
  9. Andorid Studio NDK 开发 - Hello World
  10. win7用python哪个版本_win7自带python吗
  11. 主成分分析结果成分不显著_数据分析|主成分分析
  12. 亚马逊账号关联因素有哪些?如何避免账号之间关联
  13. 多模态交互在,数智化营销服中的技术实践
  14. 视频教程-Unity网络游戏架构设计-Unity3D
  15. Android Skeleton使用和阴影动画的说明
  16. 使用队列 模拟跳舞舞伴Java实现
  17. leetcode122-买卖股票的最佳时机 II
  18. 中标麒麟系统u盘安装_优盘安装《中标麒麟7.0(龙芯)》
  19. Android 使用RecycleView制作头像堆叠效果
  20. 子模块出现 Ignored pom.xml 【已解决】

热门文章

  1. java集合基础_java常用集合基础知识
  2. .net core orm框架_轻量级高性能PHP框架ycroute
  3. 安卓 usb音量调节_戴尔推出面向Teams和Zoom视频通话的USB-C免提适配器
  4. jmeter如何通过后置处理器提取(正则提取器、json提取器)做接口关联?
  5. 你值得掌握的 Git分支等 常用命令 (持续更新中)
  6. 【第九课】MriaDB密码重置和慢查询日志
  7. Mac本如何卸载MySQL
  8. 用NGINX做负载均衡,keepalived高可用
  9. UI 07 _ 导航视图控制器 与 属性传值
  10. 【NOI2001】炮兵阵地