一、定义

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

二、消息队列

  • 使用消息队列的好处

1)解耦

允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

2)可恢复性

系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所 以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

3)缓冲 

有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致 的情况。

4)灵活性 & 峰值处理能力

在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。 如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列 能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

5)异步通信

很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户 把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要 的时候再去处理它们。

  • 消息队列的两种模式

(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)

消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。 消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

(2)发布/订阅模式 (一对多,消费者消费数据之后不会清除消息)

消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消 息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。

三、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. RabbitMQ六种队列模式-发布订阅模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 [本文] RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列 ...

  2. 【MQTT 5.0】协议 ——发布订阅模式、Qos、keepalive、连接认证、消息结构

    一.前言 1.1 MQTT 协议概述 1.2 MQTT规范 二.MQTT 协议基本概念 2.1 发布/订阅模式 2.11 MQTT 发布/订阅模式 2.12 MQTT 发布/订阅中的消息路由 2.13 ...

  3. 【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )

    文章目录 一.发布-订阅模式 二.代码实现发布-订阅模式 1.订阅者接口 2.订阅者实现类 3.发布者 4.调度中心 5.客户端 一.发布-订阅模式 发布订阅模式 : 发布者 Publisher : ...

  4. 【EventBus】发布-订阅模式 ( EventBus 组成模块 | 观察者模式 )

    文章目录 一.发布-订阅模式 二.EventBus 组成模块 三.观察者模式 一.发布-订阅模式 发布订阅模式 : 发布者 Publisher : 状态改变时 , 向 消息中心 发送事件 ; 订阅者 ...

  5. [设计模式] ------ 观察者模式和他的升级版发布订阅模式

    概念 观察者模式,原理很简单,把A类的子类分别注入到B类中,通过用B类调用方法,循环调用A类的方法,就是所谓观察者模式 伪代码如下,最快的速度理解观察者模式: 接口 A{// 观察者接口notify( ...

  6. 不好意思,观察者模式跟发布订阅模式就是不一样

    一.前言 一天,小猪佩奇去了一家西餐厅,点了一份西冷牛扒,还叫了圣女果.后来服务员上了一碟番茄:佩奇小姐,这是你的「圣女果」.佩奇猪一眼就看出了猫腻:这tm是番茄,不是圣女果啊!于是就跟服务员理论起来 ...

  7. 五、交换机 与 发布/订阅模式、路由模式、主题模式

    RabbitMQ目录 文章目录 交换机 与 发布/订阅模式.路由模式.主题模式 1.Exchanges(交换机) 1.1. Exchanges 概念 1.2. Exchanges 的类型 1.3. 无 ...

  8. c#事件的发布-订阅模型_C# 委托和事件 与 观察者模式(发布-订阅模式)讲解 by天命...

    使用面向对象的思想 用c#控制台代码模拟猫抓老鼠 我们先来分析一下猫抓老鼠的过程 1.猫叫了 2.所有老鼠听到叫声,知道是哪只猫来了 3.老鼠们逃跑,边逃边喊:"xx猫来了,快跑啊!我是老鼠 ...

  9. 数据劫持-发布订阅模式

    数据劫持 function observe(data){if(typeof data !== 'object') returnnew Observer(data) }//Observer 是用于给属性 ...

  10. 前端Vue之发布订阅模式

    目录 1.什么是发布订阅模式 2.实现简单的发布订阅 3.收集更新函数 4.触发更新函数 5.总结 一个响应式数据可能会有多个视图部分都需要依赖,也就是响应式数据变化之后,需要执行的更新函数可能不止一 ...

最新文章

  1. 021_Form表单
  2. IOS7 开发注意事项
  3. dos命令行设置网络优先级_计算机网络故障及其维修方法
  4. 反射机制2,Class类的使用
  5. 机器学习面试题(part1)
  6. Linux命令行上传文件到百度网盘
  7. Unique Binary Search Trees
  8. A8U Web 前端高手不能说的秘密
  9. android 4.0.3开机时不能收到广播
  10. 7个等级 容灾等级_猫奴的10个等级 你的奴性有多高?
  11. UEFI 之 redfish
  12. 分享一个超酷创建互动文档的Javascript类库 - tangle
  13. 关于小波分解的滤波器理解
  14. 计算机专业研究生读研规划,关于一个计算机研究生人生规划的迷惑
  15. 市场调研-二氢咖啡酸市场现状及未来发展趋势
  16. 香港云服务器比香港服务器更快吗?
  17. 除了we tool还有哪些免费安全好用的微信群发软件?这两个软件比we tool好用!
  18. 《从程序员到项目经理》读后感-合群
  19. 国内外比较出名的聚合路由器厂家都有哪些?
  20. Android蓝牙开发教程(二)——连接蓝牙设备

热门文章

  1. 解决webpack报错:ERROR in multi ./xxx/xxx.js ./xxx/xxx.js Module not found: Error: Can't resolve '.\xxx\
  2. 如何将本地的代码上传到github
  3. 长亮科技发布2018年报:营收首破十亿元,直面蚂蚁金服竞争压力
  4. k-means算法详解及python代码
  5. 超大XML文件怎么打开
  6. 把手机变成电脑的遥控器
  7. 反三角函数atan()运用
  8. 年终盘点丨2022边缘计算大事记
  9. 计算机中word的快捷键大全,Word中全选的快捷键是什么 word快捷键大全【图解】...
  10. Android开源项目以及开源框架,各种UI实现效果