分布式消息队列之kafka

什么是Kafka?
Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点。
Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。 Kafka构建在ZooKeeper同步服务之上。
它与Apache Storm和Spark非常好地集成,用于实时流式数据分析。

Kafka的几个好处
可靠性 - Kafka是分布式,分区,复制和容错的。
可扩展性 - Kafka消息传递系统轻松缩放,无需停机。
耐用性 - Kafka使用分布式提交日志,这意味着消息会尽可能快地保留在磁盘上,因此它是持久的。
性能 - Kafka对于发布和订阅消息都具有高吞吐量。 即使存储了许多TB的消息,它也保持稳定的性能。
Kafka非常快,并保证零停机和零数据丢失。

Kafka源码中的Producer Record定义:
1.ProducerRecord 含义: 发送给Kafka Broker的key/value 值对
2.内部数据结构:
-- Topic (名字)
-- PartitionID ( 可选)
-- Key[( 可选 )
-- Value
3.生产者记录(简称PR)的发送逻辑:
1 )若指定Partition ID,则PR被发送至指定Partition
2 )若未指定Partition ID,但指定了Key, PR会按照hasy(key)发送至对应Partition
3 )若既未指定Partition ID也没指定Key,PR会按照round-robin模式发送到每个Partition
4 )若同时指定了Partition ID和Key, PR只会发送到指定的Partition (Key不起作用,代码逻辑决定)
4.生产者记录(PR)的实现:
针对3,提供三种构造函数形参:
-- ProducerRecord(topic, partition, key, value)
-- ProducerRecord(topic, key, value)
-- ProducerRecord(topic, value)

猜你喜欢

转载自www.cnblogs.com/brain008/p/13403029.html