🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Kafka最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。 #### 特性: * 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个[topic]可以分多个partition,consumer group 对partition进行consume操作。 * 可扩展性:kafka集群支持热扩展 * 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失 * 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败) * 高并发:支持数千个客户端同时读写 #### 适用场景: * 日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。 * 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。 * 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。 * 消息系统:解耦和生产者和消费者、缓存消息等。 * 流式处理:比如spark streaming和storm ### 对应Scala版本选择合适的二进制kafka包下载 http://kafka.apache.org/downloads ### 解压并配置(注:zookeeper已安装) ``` vi config/server.properties ``` 三台机器配置文件分别为: master: ``` broker.id=0 host.name=master zookeeper.connect=master:2181,slave1:2181,slave2:2181 ``` slave1: ``` broker.id=1 host.name=slave1 zookeeper.connect=master:2181,slave1:2181,slave2:2181 ``` slave2 ``` broker.id=2 host.name=slave2 zookeeper.connect=master:2181,slave1:2181,slave2:2181 ``` ### 启动kafka并测试demo: (注:保证zookeeper已启动) ``` 三台机器分别启动kafka: [hadoop@* software]$ cd kafka_2.11-2.0.1 [hadoop@* kafka_2.11-2.0.1]$ bin/kafka-server-start.sh -daemon config/server.properties ``` ``` bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic test ``` —create表示创建一个topic —zookeeper master:2181 表示连接zookeeper 的服务和端口号 —replication-factor 1表示创建副本数量是1 —partitions 1表示分区数量是1 —topic test表示创建一个名为test11的topic主题 启动一个(多个)生产者: ``` bin/kafka-console-producer.sh --broker-list master:9092 --topic test ``` —kafka-console-producer.sh表示启动一个生产者 —broker-list master:9092表示broker服务列表中的master服务和端口号 —topic test表示topic名字为test 启动一个(多个)消费者: ``` bin/kafka-console-consumer.sh --bootstrap-server master:9092 --from-beginning --topic test ``` —kafka-console-consumer.sh表示启动一个消费者 —zookeeper master:2181表示连接zookeeper 的服务和端口号 —topic test表示topic名字为test —from-beginning 表示在消费者还没有一个已经建立的偏移量的时候,从最早的消息开始而不是从最新的消息开始 ``` kafka2.0 producer javadoc http://kafka.apache.org/20/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html kafka2.0 consumer javadoc http://kafka.apache.org/20/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html ```