版权声明:fromZjy QQ1045152332 https://blog.csdn.net/qq_36762677/article/details/84889797
kafka |
kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
特点:
- 消息队列
- 可以对数据流进行处理
- 分布式::::多分区,多备份,多订阅,基于ZK
- 高性能::::高吞吐量,低延迟,高并发,时间复杂度O(1)
- 数据可持久化,容错性,在线水平扩展,消息自动平衡
概念:
- producer:生产者,向kafka的一个topic发布消息和数据的进程/代码/服务。
- consumer:消费者,订阅或处理kafka的一个topic消息和数据的进程/代码/服务。
- [逻辑概念]topic: 消息的类别,对数据进行区分、隔离,Kafka将消息种子(Feed)分门别类,每一类的消息称之为一个主题(Topic)。
- [物理概念]broker:每个kafka节点;以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker;消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。
每个消息(也叫作record记录,也被称为消息)是由一个key,一个value和时间戳构成。 - Partition[物理概念] kafka存储的基本单元,一个topic数据,会被分散存储到多个Partition,每一个Partition是有序的,订阅者数量少于Partition
- Replication:Partition可以有多个re副本,多个副本之间数据相同
kafka应用场景:
构建实时的流数据管道,可靠地获取系统和应用程序之间的数据。(数据传输)
构建实时流的应用程序,对数据流进行转换或反应。(数据处理)
- 消息队列,能代替传统mq
- 行为跟踪
- 元数据监控
- 日志收集
- 流处理
Kafka结构 |
设计结构:
应用程序使用producer API发布消息到1个或多个topic中。
应用程序使用consumer API来订阅一个或多个topic,并处理产生的消息。
应用程序使用streams API充当一个流处理器,从1个或多个topic消费输入流,并产生一个输出流到1个或多个topic,有效地将输入流转换到输出流。
connector API允许构建或运行可重复使用的生产者或消费者,将topic链接到现有的应用程序或数据系统。
消息结构:
kafka的安装与应用 |
Mac下的便捷安装命令brew install kafka
linux下安装 https://www.cnblogs.com/yangxiaoyi/p/7359236.html
console版和springboot版本
https://www.imooc.com/video/17865
kafka高级特性 |
消息事务(黑盒)
- 为什么支持事务
满足"读取–处理–写入"的模式
流处理需求不断增强
对流不准确容忍度降低
数据传输的事务定义:
1)最多一次:消息不会重复发送,一次或零次
2)最少一次:消息至少发送一次,或冲发送(采用比较多)
3)精确传输:只传输一次
零拷贝
其他mq也使用这种技术