这是2021年第41篇随笔,全文1221字。
4月的第5篇。
4月计划9篇,随笔5/9篇。
昨日在听架构师降到数据接入提速的时候,听到一些名词不太懂。
本文就是搞懂这些名词。
总结放到上面:
经常听到的kafka是个消息队列系统MQ。
有一个跟其他MQ的区别就是永固化的日志。这也有个问题,我们在生产中会遇到kafka满了。
消息队列系统可以解耦和负载均衡多个系统的合作。
那Zookeeper作为kafka的broker服务器每次启动注册的管理,如同大数据系统里面的一个leader,协同配置管理,naming等各个服务。
读写速度快慢提速,跟kafka有啥关系?
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据
我想数据的接入,一条条数据也就是一消息体的形式接入,然后分发到我们的系统的。
问题1:
通过Docker接入到Kafka
- 为什么要通过docker接入kafka,而不直接接入?
- Mac上启动docker吗?
看起来需要通过homebrew来安装 - Kafka是做什么的?
kafka是一个分布式、高吞吐量、高扩展性的消息队列系统
- 又来问什么是docker
有文章提到过,docker集装箱原理
那什么是消息队列系统Message Queue MQ system?
关于消息队列,我最关系的是为什么要用MQ?有什么好处?
看了半天,第一个收获是,MQ是解决多接口和userid的关系。第二个收获是为了解耦。如图
消息队列解耦ABCD四个系统
还可以异步调用,提高用户体验和吞吐量
异步调用
此外消息队列还可以削峰限流,不至于把服务器崩了。
一文看懂kafka消息队列
我在阅读这篇文章的时候,觉得很适合我的理解水平。
问题2:
生产者和消费者
- 消费体
消费者怎么拿到消息呢?两种方式pull和push
消费者怎么从消息队列里边得到数据?有两种办法:
生产者将数据放到消息队列中,消息队列有数据了,主动叫消费者去拿(俗称push)
消费者不断去轮训消息队列,看看有没有新的数据,如果有就消费(俗称pull)
- 压缩
- 生产者 压缩 kafka 消费者 解压
Kafka的服务端称为 Broker,每个 Broker 启动时会将自己的 Broker 配置信息上报给 Zookeeper ,如,监听地址与端口号等,Kafka的客户端(生产者与消费者统称)要连接 Broker 需要经过一层认证,不通过认证就无法连接
由此可知,
- kafka分服务端和客户端
- kafka的服务端成为broker,每个broker会把配置信息上报给Zookeeper,这里就提到了Zookeeper
-
kafka的客户端,是生产者和消费者的统称
kafka全貌
既然提到了Zookeeper,那就要问:
- Zookeeper为啥要跟Kafka 一起?
一篇文章提到,Kafka选择Zookeeper作为服务端broker的管理。每个broker启动时都会到Zookeeper上进行注册。
消费者和生产者的负载均衡。
记录消息消费进度offset - Zookeeper是干嘛的。
我看到一篇文章说的好。Zookeeper类似一个组织里面的leader
问题3:
- 丢数据
- 单线程多线程写数据
- 通道和通道堵死?
通道是一个弱鸡版的硬件,完成一次IO读写操作,数据传输 - IO
磁盘的 IOPS,也就是在一秒内,磁盘进行多少次 I/O 读写。
I/O通道是一种特殊的的处理机
问题4:
Kafka pull 和 DJ方式
- offset手动记录
kafka消息处理类:MessageAndOffset
Producer使用Push(推送)的方式将消息发布到Broker,Consumer使用Pull(拉取)的方式从Broker获取消息,两者都是主动操作的。
关于offset更多:
Broker : Kafka一个服务器被称为一个Broker
Topic: 每一类消息可以定义一个Topic
Partition : 每个Topic都有1个或者多个partition,属于物理上的分隔
offset : 偏移量每个partition中的消息唯一标识
Producer : 消息发布者
Consumer : 消息订阅者
Consumer Group : 属于订阅者独有的概念,默认为统一的group
网友评论