消息队列
Kafka
它Kafka主要用于构建实时数据管道和流式应用程序,Kafka具有高吞吐量、可扩展性和容错性,适合处理大量的实时数据。
Kafka广泛应用于日志聚合、实时监控、事件源、日志收集、流处理等多种场景。
由于其强大的数据吞吐能力和可扩展性,Kafka成为了大数据生态系统中的一个重要组成部分。
Cluster
- Cluster:物理集群,每个集群中可以建立多个不同的Topic。
- Topic:逻辑队列,不同的Topic可以建立不同的Topic,每个Topic代表一个具体业务。
- Partition:逻辑分区,每个分区的任务可以并行处理。
- Producer:生产者,负责将业务消息发送到Topic中。
- ConsumerGroup:消费群组,不同组的Consumer消费进度互不干涉。
- Consumer:消费者,负责处理Topic中的消息。
Partition
-
offset:表示每个消息在队列中的位置,以此来唯一标识某个消息。
-
ISR:
- 在Partition内部为了防止数据丢失,每个分片会有多个Replica进行同步 。
- 对于消息版本相对Leader比较近(时间或者偏移量等)的Replica会被加入到ISR中。
- Leader会从ISR中选出,对外提供服务,其他的Replica用于容灾备份,防止数据丢失。
BMQ
兼容Kafka协议,存算分离,云原生消息队列。在实际应用中,BMQ被广泛应用于日志收集、事件通知、任务分发、实时分析等多种场景,一些流行的BMQ产品包括RabbitMQ、Apache Kafka、ActiveMQ等。
- 异步通信: BMQ允许应用程序异步发送和接收消息,这意味着生产者不需要等待消费者处理消息就可以继续执行其他任务。
- 消息队列: 消息队列是BMQ中的一个核心组件,它存储待处理的消息,直到它们被消费者处理。
- 消息持久性: BMQ通常提供消息持久性,确保即使在系统故障的情况下消息也不会丢失。
- 消息确认: 消费者处理完消息后,可以发送确认信号给BMQ,这样消息队列就知道消息已经被成功处理,可以从队列中移除。
- 消息顺序: BMQ通常保证消息按照发送的顺序被处理。
- 消息过滤和路由: BMQ可以根据消息的属性(如主题、标签等)将消息路由到不同的队列或消费者。
- 高可用性和可扩展性: BMQ设计为高可用和可扩展的,可以跨多个服务器和数据中心分布。
- 多种消息协议支持: BMQ支持多种消息协议,如AMQP、MQTT、STOMP等,以适应不同的应用场景。
- 负载均衡: BMQ可以在多个消费者之间分配消息负载,提高处理效率。
- 安全性: BMQ提供认证和授权机制,确保只有授权的用户或系统可以发送或接收消息。