一. KafKa 是什么
kafaka是分布式消息队列:生产者消费者的功能。它提供了类似JMS的特性,但在设计实现上完全不同,它并不是JMS规范实现的。
kafka对消息保存时根据Topic进行归类,发送消息者为生产者,消息接收者为消费者。
二. JMS
1. JMS
JMS是JAVA提供的消息规范。通信规范
2. JMS消息传输模型
- 点对点
一对一,消费者主动拉取数据。数据只有一份,一旦消费,就没有了。 - 发布订阅
一对多,推送给订阅者。
3. JMS核心组件
-
Destination:消息发送的目的地。
-
Message:消息
-
Producer:生产者
-
MessageConsumer:消费者
三. 消息队列的重要性
消息队列:解耦、异步、并行
-
用户注册并行执行
并行.png -
用户注册的最终一致性
主程序:发送消息-->用户注册
微信截图_20210113114607.png
保证主程序的正常执行,执行成功后,发送MQ消息出去,有其他系统完成剩余工作。最终保持一致性。
四. KafKa
1. KafKa概念
类JMS,消费者可以有多个,并且主动拉取数据;数据生产者messageProducer ;数据消费者messageConsumer;数据分类,主题destination topic ;管理数据的进程,实例broker;数据分片:partition
2. KafKa核心组件
- Topic:消息根据Topic进行归类
- Producer:生产者
- Consumer:消费者
- broker:每个kafKa实例
- zookeeper:保存元数据信息。
提问:
1.消费者负载均衡策略。 一个消费者组中数据最好和分片数对应,一个分片对应组中的一个消费成员,如果组中的成员太多,必有成员空闲。
-
数据生产到集群中的哪个partination是由生产者决定的。(生产者具有分组策略)
-
partination数量和broker数量关系?
4.每个partination 数据如何由内存保存到磁盘?
- 如何保证消费者消费的数据是有序的?
6.如何保证数据的完全生产?
7.消费者如何标记消费状态?
网友评论