IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> kafka入门—基础知识 -> 正文阅读

[大数据]kafka入门—基础知识

一、消息系统
1. 消息队列

1)消息 Message:网络中的两台计算机或者两个通讯设备之间传递的数据,如文本、音频、视频等。
2)队列 Queue:一种特殊的线性表,特殊在于它只允许在首部删除元素(队首),在尾部添加元素。(先进先出)
3)消息队列 MQ:保存消息的队列,是消息在传输过程中的容器。主要提供生产和消费接口供外部调用,进行数据的存储和获取。

2. MQ 分类

主要分为两类:
1)点对点(Peer-to-Peer)
2)发布/订阅(Publish/Subscribe)

  • 共同点:消息生产者(Producer)生产消息发送到队列中,然后消息消费者(Consumer)从队列中读取并消费消息。

  • 不同点:
    1)点对点:
    组成:消息队列(Queue)、发送者(Sender)、接收者(Receiver)
    一个生产者生产的消息只能有一个消费者,消息一旦被消费,消息就不在消息队列中了,如:打电话
    即发送到消息队列的消息能且只能被一个接收者接收
    2)发布/订阅
    组成:消息队列(Queue)、发布者(Publisher)、订阅者(Subscriber)、主题(Topic)
    每个消息可以有多个消费者,彼此互不影响,如:我发布一个微博,关注我的人都能看到
    即发布到消息队列的消息能被多个接收者(订阅者)接收

3. 常见消息系统
  • ActiveMQ:历史悠久,实现了JMS(Java Message Service)规范,支持性较好,性能相对不高
  • RabbitMQ:可靠性高、安全
  • Kafka:分布式、高性能、跨语言
  • RocketMQ:阿里开源的消息中间件,纯Java实现
二·、什么是Kafka?
1. 介绍

???????Kafka是一个分布式的 发布/订阅 消息系统(简单来讲是一个消息中间件框架,负责发布–订阅(帮忙存东西的)),最初由LinkedIn(领英)公司发布,使用Scala语言编写,后成为Apache的顶级项目。
???????主要用于处理活跃的数据,如登录、浏览、点击、分享、喜欢等用户行为产生的数据。
???????特点:

  • 高吞吐量
    可以满足每秒百万级别消息的生产和消费。
  • 持久性
    有一套完善的消息存储机制,确保数据的高效安全的持久化。
  • 分布式
    基于分布式的扩展和容错机制;
    Kafka的数据会复制到多台服务器上,当某一台发生故障失效时,生产者和消费者转而使用其它的机器。
2. 架构在这里插入图片描述

在这里插入图片描述

**举个例子,生产者和消费者之间,生产者生产鸡蛋,消费者消费鸡蛋;
生产者生产一个鸡蛋,消费者就消费一个鸡蛋,但是如果消费者消费鸡蛋的时候噎住了(系统宕机了),
生产者还在生产鸡蛋,那新生产的鸡蛋就丢失了。
再比如生产者很强劲(大交易量的情况),生产者1秒钟生产100个鸡蛋,消费者1秒钟只能吃50个鸡蛋,
那要不了一会,消费者就吃不消了(消息堵塞,最终导致系统超时),消费者拒绝再吃了,”鸡蛋“又丢失了,
这个时候我们放个篮子在它们中间,生产出来的鸡蛋都放到篮子里,消费者去篮子里拿鸡蛋,
这样鸡蛋就不会丢失了,都在篮子里,而这个篮子就是”kafka“。
鸡蛋其实就是“数据流”,系统之间的交互都是通过“数据流”来传输的(就是tcp、https什么的),
也称为报文,也叫“消息”。
消息队列满了,其实就是篮子满了,”鸡蛋“ 放不下了,那赶紧多放几个篮子,其实就是kafka的扩容。
现在知道kafka是干什么的了吧,它就是那个用来放“鸡蛋”的"篮子"。**
3. 组成

在这里插入图片描述

1. producer:消息的生产者,向Kafka的一个topic发布消息。生产者,生产“鸡蛋”的。
2. consumer:消息的消费者,订阅topic并读取其发布的消息。消费者,对生产者生产的“鸡蛋”进行消费。
3. topic:主题,消息以topic为类别记录,Kafka将消息种子(feed)分门别类,每一类的消息称之为一个主题(topic)。也可以抽象的理解为标签,生产者每生产出来一个鸡蛋就贴上一个标签(topic),消费者可不是谁生产的“鸡蛋”都吃的,这样不同的生产者生产出来的“鸡蛋”,消费者就可以选择性的消费了。(Kafka消息数据是存储在硬盘上的)
4. patition:分区,topic是逻辑上的概念,patition是物理概念。每个Topic包含一个或多个Partition,在创建Topic时指定包含的partition数量(目的是为了进行分布式存储)
5. replication:副本,每个分区可以有多个副本,分布在不同的broker上,会选出一个副本作为Leader,所有的读写请求都会通过Leader完成,Follower只负责备份数据
6. broker:kafka集群中包含多个kafka服务节点,每一个kafka服务节点就称为一个broker。
7. massage 消息:消息,是通信的基本单位,每个消息都是放在Partition里的。每个消息(也叫作record记录,也被称为消息)是由一个key,一个value和时间戳构成。
8. Consumer Group 消费者组:每个Consumer属于一个特定的Consumer Group,多个Consumer可以属于同一个Consumer Group中
9. Zookeeper:协调kafka的正常运行,Kafka将元数据信息保存在Zookeeper中,但发送给Topic本身的消息数据并不存储在ZK中,而在存储在磁盘文件中。

三、Kafka的四个核心API
  1. 应用程序使用producer API发布消息到1个或多个topic中。
  2. 应用程序使用consumer API来订阅一个或多个topic,并处理产生的消息。
  3. 应用程序使用streams API充当一个流处理器,从1个或多个topic消费输入流,并产生一个输出流到1个或多个topic,有效地将输入流转换到输出流。
  4. connector API允许构建或运行可重复使用的生产者或消费者,将topic链接到现有的应用程序或数据系统。 例如,连接到关系数据库的连接器可以捕获表的每个变更。
    在这里插入图片描述
    Client和Server之间的通讯,是通过一条简单、高性能并且和开发语言无关的TCP协议。并且该协议保持与老版本的兼容。Kafka提供了Java Client(客户端)。除了Java客户端外,还有非常多的其它编程语言的客户端。
四、什么是Kafka的优势?它主要应用于两大类应用
  • 构建实时的流数据管道,可靠地获取系统和应用程序之间的数据。
  • 构建实时流的应用程序,对数据流进行转换或反应。
五、Kafka的一些应用场景

1. 监控:主机通过Kafka发送与系统和应用程序健康相关的指标,然后这些信息会被收集和处理从而创建监控仪表盘并发送警告。
2. 消息队列: 应用程度使用Kafka作为传统的消息系统实现标准的队列和消息的发布—订阅,例如搜索和内容提要(Content Feed)。比起大多数的消息系统来说,Kafka有更好的吞吐量,内置的分区,冗余及容错性,这让Kafka成为了一个很好的大规模消息处理应用的解决方案。消息系统 一般吞吐量相对较低,但是需要更小的端到端延时,并尝尝依赖于Kafka提供的强大的持久性保障。在这个领域,Kafka足以媲美传统消息系统,如ActiveMR或RabbitMQ。
3. 站点的用户活动追踪: 为了更好地理解用户行为,改善用户体验,将用户查看了哪个页面、点击了哪些内容等信息发送到每个数据中心的Kafka集群上,并通过Hadoop进行分析、生成日常报告。
4. 流处理:保存收集流数据,以提供之后对接的Storm或其他流式计算框架进行处理。很多用户会将那些从原始topic来的数据进行阶段性处理,汇总,扩充或者以其他的方式转换到新的topic下再继续后面的处理。例如一个文章推荐的处理流程,可能是先从RSS数据源中抓取文章的内容,然后将其丢入一个叫做“文章”的topic中;后续操作可能是需要对这个内容进行清理,比如回复正常数据或者删除重复数据,最后再将内容匹配的结果返 还给用户。这就在一个独立的topic之外,产生了一系列的实时数据处理的流程。
5. 日志聚合:使用Kafka代替日志聚合(log aggregation)。日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或HDFS)进行处理。然而Kafka忽略掉文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。这就让Kafka处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的系统比如Scribe或者Flume来说,Kafka提供同样高效的性能和因为复制导致的更高的耐用性保证,以及更低的端到端延迟。
6.持久性日志:Kafka可以为一种外部的持久性日志的分布式系统提供服务。这种日志可以在节点间备份数据,并为故障节点数据回复提供一种重新同步的机制。Kafka中日志压缩功能为这种用法提供了条件。在这种用法中,Kafka类似于Apache BookKeeper项目。

参考出处1:https://www.jianshu.com/p/fa307ecc1eeb
参考出处2:https://www.cnblogs.com/yangxiaoyi/p/7359236.html
参考出处3:https://www.orchome.com/kafka/index

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:18:18  更:2021-08-09 10:18:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 15:05:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码