Kafaka(分布式发布订阅消息系统)
2015-04-17 16:31
190 查看
http://kafka.apache.org/
目前越来越多的开源分布式处理系统如Apache Storm、Spark都支持与Kafka集成。
['brəʊkə] n.经纪人
Kafka集群包含一个或多个服务器,这种服务器被称为broker。
Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。
Partition
每个Topic包含一个或多个Partition。
Producer
生产者,负责发布消息到Kafka broker。
Consumer
消费者,从Kafka broker读取消息的客户端。
Consumer Group
每个Consumer属于一个特定的Consumer Group。
kafka.javaapi.consumer.ConsumerConnector
kafka消费者的连接信息。
ConsumerConnector kafka.consumer.Consumer.createJavaConsumerConnector(ConsumerConfig arg0)
创建ConsumerConnector。
Map<String, List<KafkaStream<byte[], byte[]>>> kafka.javaapi.consumer.ConsumerConnector.createMessageStreams(Map<String, Integer> topicCountMap)
根据制定的map创建
kafka.consumer.KafkaStream<byte[], byte[]>
Kafka消息流。
kafka.consumer.ConsumerIterator<byte[], byte[]>
kafka消费者的迭代器。
MessageAndMetadata<byte[], byte[]>
Kafka消息。
byte[] kafka.message.MessageAndMetadata.message()
得到MessageAndMetadata中的信息。
生产者
kafka.javaapi.producer.Producer<Integer, String>
kafka生产者。
kafka.javaapi.producer.Producer.Producer<Integer, String>(ProducerConfig arg0)
Producer的构造函数。
kafka.producer.ProducerConfig
Producer配置。
kafka.producer.ProducerConfig.ProducerConfig(Properties arg0)
ProducerConfig的构造函数。
void kafka.javaapi.producer.Producer.send(KeyedMessage<Integer, String> arg0)
kafka生产者发送消息。
此时,消息系统就是一个选择。
2. kafka提供at-least-once delivery,即当consumer宕机后,有些消息可能会被重复delivery。
3. 因每个partition只会被consumer group内的一个consumer消费,故kafka保证每个partition内的消息会被顺序的订阅。
4. Kafka为每条消息为每条消息计算CRC校验,用于错误检测,crc校验不通过的消息会直接被丢弃掉。
目前越来越多的开源分布式处理系统如Apache Storm、Spark都支持与Kafka集成。
组件
Broker['brəʊkə] n.经纪人
Kafka集群包含一个或多个服务器,这种服务器被称为broker。
Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。
Partition
每个Topic包含一个或多个Partition。
Producer
生产者,负责发布消息到Kafka broker。
Consumer
消费者,从Kafka broker读取消息的客户端。
Consumer Group
每个Consumer属于一个特定的Consumer Group。
常用类
消费者kafka.javaapi.consumer.ConsumerConnector
kafka消费者的连接信息。
ConsumerConnector kafka.consumer.Consumer.createJavaConsumerConnector(ConsumerConfig arg0)
创建ConsumerConnector。
Map<String, List<KafkaStream<byte[], byte[]>>> kafka.javaapi.consumer.ConsumerConnector.createMessageStreams(Map<String, Integer> topicCountMap)
根据制定的map创建
kafka.consumer.KafkaStream<byte[], byte[]>
Kafka消息流。
kafka.consumer.ConsumerIterator<byte[], byte[]>
kafka消费者的迭代器。
MessageAndMetadata<byte[], byte[]>
Kafka消息。
byte[] kafka.message.MessageAndMetadata.message()
得到MessageAndMetadata中的信息。
生产者
kafka.javaapi.producer.Producer<Integer, String>
kafka生产者。
kafka.javaapi.producer.Producer.Producer<Integer, String>(ProducerConfig arg0)
Producer的构造函数。
kafka.producer.ProducerConfig
Producer配置。
kafka.producer.ProducerConfig.ProducerConfig(Properties arg0)
ProducerConfig的构造函数。
void kafka.javaapi.producer.Producer.send(KeyedMessage<Integer, String> arg0)
kafka生产者发送消息。
为什么使用
设想这样一个情景:想分析用户在网站上的的浏览行为。这些浏览日志,存数据库浪费,直接存硬盘又怕到时候操作效率低。此时,消息系统就是一个选择。
消息交付特点
1. kafka对消息的重复、丢失、错误以及顺序没有严格的要求。2. kafka提供at-least-once delivery,即当consumer宕机后,有些消息可能会被重复delivery。
3. 因每个partition只会被consumer group内的一个consumer消费,故kafka保证每个partition内的消息会被顺序的订阅。
4. Kafka为每条消息为每条消息计算CRC校验,用于错误检测,crc校验不通过的消息会直接被丢弃掉。
相关文章推荐
- Kafka logo分布式发布订阅消息系统 Kafka
- 分布式发布订阅消息系统 Kafka 架构设计
- 分布式发布订阅消息系统 Kafka 架构设计
- 分布式发布订阅消息系统
- 消息订阅发布系统Apache Kafka分布式集群环境搭建和简单测试
- 分布式发布订阅消息系统 Kafka 架构设计
- 分布式发布订阅消息系统 Kafka 架构设计 - 目前见到的最好的Kafka中文文章
- 分布式发布订阅消息系统 Kafka 架构设计
- Kafka是一种分布式的,基于发布/订阅的消息系统
- 一脸懵逼学习KafKa集群的安装搭建--(一种高吞吐量的分布式发布订阅消息系统)
- Kafka(分布式发布订阅消息系统)
- 高吞吐量的分布式发布订阅消息系统Kafka--安装及测试
- 分布式发布订阅消息系统 Kafka (A distributed publish-subscribe messaging system)
- 分布式发布订阅消息系统 Kafka 架构设计---1
- 消息订阅发布系统Apache Kafka分布式集群环境搭建和简单测试
- 分布式发布订阅消息系统Kafka
- 高吞吐量的分布式发布订阅消息系统Kafka--安装及测试
- 分布式发布订阅消息系统 Kafka 架构设计
- 分布式发布订阅消息系统 Kafka 架构设计
- 分布式发布订阅消息系统—Apache Kafka