Kafka(1)-Kafka基本术语

前沿

业界已有的消息队列系统,在扩展性、可靠性、资源利用率和吞吐 率方面存在明显不足,故LinkedIn团队开始尝试设计一款新的消息队列系统,进而诞生了Kafka消息队列系统。源软件Kafka的应用越来越广泛。

思维导图

内容

1、消息队列

为什么引入消息队列?

复制代码
高并发场景、系统来不及同步处理请求,接收到的请求往往会发生阻塞。大量的数据插入/更新请求同时到达数据库,导致行或表锁住,最后会因为请求堆积过多而触发"连接数过多的异常"错误。

什么是消息队列?

复制代码
采用异步通信机制(消息发送者和接收者无需同时与消息队列进行数据交互),实现不同线程或进程之间通信的先进先出队列。

消息队列作用

复制代码
1、应用解耦
    多个应用可通过消息队列对相同消息进行处理,应用之间相互独立,互不影响
        案例:客户端图片上传至消息系统,人脸识别系统进行人脸识别
2、异步处理
    异步处理比串行/并行时间少
        案例:系统注册实现短信邮件提示;传统做法是将客户信息保存的到数据库,然后短信通知用户,再邮件通知后返回。使用消息队列实现数据保存数据库之后,并写入数据到kafak中就返回响应。
3、数据限流
    流量高峰进行限流,并且引起系统崩溃
        案例:秒杀系统
4、消息通信
    实现点对点消息队列或聊天
        案例:im

2、为什么使用kafka?

kafka可以支持实时处理需求,也可以进行离线存储,又可支持水平拓展,它还拥有高吞吐量特性(数据零拷贝)。

3、kafka基本概念

大范围

消费者

复制代码
Consumer:从kafka集群中的topic读取消息记录。

生产者

复制代码
Producer:将消息记录写入到Kafka集群的topic主题进行存储;通过消息hash(key)%分区数计算写入的分区。

代理Broker

复制代码
Kafka进程

消费者组

复制代码
使用多线程读取数据:消费者程序在读取Kafka系统主题(Topic)中的数据时,通常会使 用多个线程来执行。 一个消费者组可以包含一个或多个消费者程序,使用多分区和多线 程模式可以极大提高读取数据的效率。
小范围

主题topic

复制代码
不同业务类型的消息记录逻辑集合

分区Parition

复制代码
是什么?
    topic主题下消息物理存储,支持物理层面上的并发读写,以提高 Kafka集群的吞吐量。
特点?
    每个分区里面消息有序,具有offset偏移量
    一个分区只对应一个代理节点(Broker),一个代理节点可以管理 多个分区。

副本

复制代码
Topic主题下分区的副本,保证Kafka高可用

记录

复制代码
写入到Kafka集群里面的消息;每条记录包含一个键(Key)、值(Value)和 时间戳(Timestamp)。

4、工作机制

工作机制是:生产消息/消费消息

复制代码
生产者(Producer)组件和消费者 (Consumer)组件互不影响,但又是必须存在的
Kafka是一个分布式系统,用Zookeeper来管理、协调Kafka集 群的各个代理(Broker)节点

5、Kafka使用范围

1、实时业务系统
复制代码
Kafka能够和Spark、Flink、Storm等实时计算 引擎完美地结合
2、离线任务处理
复制代码
Kafka也提供了应用接口(API),可以将主 题(Topic)中的数据导出到Hive仓库做离线计算。

6、Kafka的特性

1、异步生产数据(Producer)
复制代码
生产者(Producer)写数据时不再区分同步和异 步,所有的操作请求均以异步的方式发送,这样大大地提高了客户端写 数据的效率
2、偏移量迁移(Consumer)
复制代码
Consumer消费消息时候会记录消费数据的额偏移量,消费者(Consumer)应用程序可以把"消 费"记录提交从zk变成到Kafka集群,并以内部主题的方式进行存储,Kafka系统 将其命名为_ _consumer_offsets
3、安全机制
复制代码
可以通过SSL和SASL 安全机制来进行身份确认
4、连接器
复制代码
在外部系统与数据集之间建立一个数据流管道,以 实现数据的读与写
5、机架感知
复制代码
使用 机架感知来让Kafka的备份数据分布到不同的机架上,以保证数据的高 可用性
6、数据流
复制代码
将Kafka集群中的数据进行流处理之后再重新回写到Kafka集群 中
7、时间戳
复制代码
写入的每一条消 息记录都加入了时间戳,用户 可以使用时间戳来跟踪和查找消息记录

7、Kafka适用于哪些场景

1. 日志收集
复制代码
零散的日志收集到Kafka集群中,然 后通过Kafka的统一接口将这些数据开放给不同的消费者
2. 消息系统
复制代码
线上业务流量很大的应用,可以使用Kafka作为缓冲,以减少服务 端的压力
3.用户轨迹
复制代码
Kafka记录浏览器用户或者手机App用户产生的各种记录
4. 记录运营监控数据
复制代码
Kafka也可用来记录运营监控数据,包括收集各种分布式应用系统 的数据(如Hadoop系统、Hive系统、HBase系统等)
5. 实现流处理
复制代码
Kafka 是一个流处理平台,所以在实际应用场景中也会与其他大数 据套件结合使用,例如Spark Streaming、Storm、Flink等
6. 事件源
复制代码
事件源是一种应用程序的设计风格,其中状态更改会产生一条带有 时间戳的记录,然后将这条以时间序列产生的记录进行保存。在面对非 常大的存储数据时,可以使用这种方式来构建非常优秀的后端程序。
相关推荐
ACP广源盛139246256737 小时前
IX8024 PCIe4.0 交换芯片@ACP# RK3588:嵌入式 AI PC 标准化扩展方案
大数据·人工智能·分布式·单片机·嵌入式硬件
ACP广源盛1392462567311 小时前
IX9104 PCIe5.0 交换芯片@ACP#国产高端 AI PC 全搭配方案
大数据·人工智能·分布式·单片机·嵌入式硬件
冷咖啡离13 小时前
分布式 Agent 如何把断点恢复、审计策略和执行调度收进同一条链路
分布式
珠***格15 小时前
边缘计算+轻量化AI:台区储能四可装置的“智能大脑”
人工智能·分布式·安全·能源·边缘计算
ljs64827395118 小时前
Hadoop集群部署常见问题
大数据·hadoop·分布式
她说可以呀19 小时前
RabbitMQ Publisher_Confirms(发布确认)
分布式·rabbitmq·ruby
2603_954708311 天前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
国服第二切图仔1 天前
HarmonyOS APP《画伴梦工厂》开发第60篇-分布式软总线2.0——多设备协同新范式
分布式·wpf·harmonyos
952361 天前
RabbitMQ-基础操作
java·spring boot·分布式·后端·spring·rabbitmq