一. 内部原理

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

点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推送到客户端。这个模型的特点是发送到队列的消息被一个且只有一个接收者接收处理,即使有多个消息监听者也是如此。

2. 发布/订阅模式(一对多)

发布订阅模型则是另一个消息传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅者只在主动监听主题时才接收消息,而持久订阅者则监听主题的所有消息,即使当前订阅者不可用,处于离线状态。

二. 为什么需要消息队列

1. 解耦:

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

2. 冗余:

消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的"插入-获取-删除"范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。

3. 扩展性:

因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。

4. 灵活性 & 峰值处理能力:

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

5. 可恢复性:

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

6. 顺序保证:

在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。(Kafka保证一个Partition内的消息的有序性)

7. 缓冲:

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

8. 异步通信:

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

三. Kafka架构

1. Producer :消息生产者,就是向kafka broker发消息的客户端;

2. Consumer :消息消费者,向kafka broker取消息的客户端;

其中的offset需要存在其他位置,低版本0.9之前将offset保存在Zookeeper中,0.9及之后保存在Kafka的“__consumer_offsets”主题中。

3. Topic :可以理解为一个队列或一个消息分类;

4.  Consumer Group (CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。

一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个partion只会把消息发给该CG中的一个consumer。

如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic;

5. Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic;

6. Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。

partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序;

转载于:https://www.cnblogs.com/duoduotouhenying/p/10221800.html

Kafka(1)-概述相关推荐

  1. Kafka知识点概述

    kafka架构 Kafka是如何实现消息有序的?有哪些分区算法? (一)Kafka是如何让实现消息有序的 生产者:通过分区的leader副本负责数据以先进先出的顺序写入,来保证消息顺序行.消费者:同一 ...

  2. Kafka之概述(一)

    1.1 Kafka定义 Kafka是一个分布式的基于发布/ 订阅模式的消息队列,主要应用于大数据实时处理领域. 1.2 消息队列 1.3 Kafka架构

  3. Hadoop集群高可用及zookeeper+kafka组件搭建

    目录 一.Hadoop集群高可用 1.Zookeeper概述 1)Zookeeper基本概述 3)Zab协议 3)observer 4)zookeeper集群图例 2.zookeeper集群搭建 3. ...

  4. Kafka安装和基本指令

    文章目录 消息队列概述 分类 消息系统的适用场景 消息队列对比 RabbitMQ Redis ZeroMQ ActiveMQ Kafka介绍 概述 使用场景 Messaging Website act ...

  5. kafka jar包_和同事交流不会kafka怎么行,API奉上,不是大神也能编

    对于kafka真的是又爱又恨,作为架构和大数据两个方面的通用者, 在这个数据量称雄的时代,越来越起到至关重要的作用,在和同事进行交流的时候,kafka在开发的过程中如何使用能起到最大的效果成为话题之一 ...

  6. Kafka(生产者)

    Kafka 1.概述 1.1 消息队列 1.1.1 传统消息队列的应用场景 1.1.2 消息队列的两种模式 1.2 kafka基础结构 2.kafka的快速入门 2.1 集群部署 2.1.1 安装ja ...

  7. Confluent之Kafka Connector初体验

    概述 背景 Apache Kafka 是最大.最成功的开源项目之一,可以说是无人不知无人不晓,在前面的文章<Apache Kafka分布式流处理平台及大厂面试宝典>我们也充分认识了Kafk ...

  8. Cris 玩转大数据系列之消息队列神器 Kafka

    Cris 玩转大数据系列之消息队列神器 Kafka Author:Cris 文章目录 Cris 玩转大数据系列之消息队列神器 Kafka Author:Cris 1. Kafka 概述 1.1 消息队 ...

  9. Kafka学习记录(三)——Broker

    Kafka学习记录(三)--Broker 目录 Kafka学习记录(三)--Broker 对应课程 Zookeeper存储的Kafka信息 Broker总体工作流程 Broker的服役和退役 Kafk ...

最新文章

  1. oracle cascade是什么意思啊,Oracle外键(Foreign Key)之级联删除(DELETE CASCADE)
  2. python 如何做密码对话框_Python GUI教程(八):在主窗口中调用对话框
  3. 面向对象chapter10
  4. 苏宁:我们开发百度小程序遇到的那些“坑”
  5. mysql 运算符转义_我的MYSQL学习心得(五) 运算符
  6. Windows按键翻译
  7. *第十六周*数据结构实践项目二【大数据集上排序算法性能的体验】
  8. 【全套完结】模拟电子技术基础——全套实验手册及仿真工艺实习【建议保存】
  9. 七巨头如何抵御抖音?
  10. 华大MCU(四):HC32F460串口IAP升级app部分
  11. 创业怎么写商业计划书?
  12. 第八章 波形发生电路(自激振荡电路)
  13. Compose 这次要送 Pixel 5 了!
  14. 小数取整 四舍五入
  15. asp服务器管理系统,ASP服务器软件
  16. 在网站中使用一些字体是否会构成侵权?
  17. java 时区转换 转换成东八区 时间
  18. TED演讲双语演讲稿:为什么我们很难做出理性的决定?
  19. Matlab基本函数-ceil函数
  20. 夏季刮油蔬菜排行榜,还不赶紧学起来,看看是否有你的“菜”

热门文章

  1. Iocomp控件教程之Pie Chart——饼状图控件
  2. plotplayer声道设置原声
  3. elasticsearch 查询(match和term)
  4. UIScrollView 的代理方法简单注解
  5. RESTful Web Services in Spring 3(下)转载
  6. AWS推出深度学习容器,简化AI程序开发
  7. 面试题-两个数值交换
  8. [shiro] - 怎样使用shiro?
  9. 影像采集-拍照 (用自己的插件 )简单逻辑
  10. 一个浏览器插件,测试xpath的工具