Apache Kafka

来自开放百科 - 灰狐
跳转到: 导航, 搜索

Kafka 是一个高吞吐量的分布式消息系统,使用 JavaScala 开发,早期由 LinkedIn 开发和内部使用。

目录

简介

Kafka不只是个消息系统 The Log: What every software engineer should know about real-time data's unifying abstraction

Kafka 类似且堪比 Facebook Scribe 和 Cloudera Flume 系统。

淘宝开源了分布式消息中间件Memorphosis项目,它是Kafka的Java版本,针对淘宝内部应用做了定制和优化。

功能

Kafka 使用 Avro 作为消息序列化框架,每天能高效处理数十亿级别的度量指标和用户活动跟踪信息。Kafka 使用 ZooKeeper 保存集群的元数据信息和消费者信息。

Kafka并非传统意义上的消息队列,它与RabbitMQ等消息系统并不一样。它更像是一个分布式的文件系统或数据库。Kafka与传统消息系统之间有三个关键区别:

  • Kafka持久化日志,这些日志可以被重复读取和无限期保留;
  • Kafka是一个分布式系统:它以集群的方式运行,可以灵活伸缩,在内部通过复制数据提升容错能力和高可用性;
  • Kafka支持实时的流式处理。

以上三点足以将Kafka与传统的消息队列区别开,我们甚至可以把它看成是流式处理平台。

Kafka的解耦能力以及在安全和效率方面的可靠性,使它成为构建数据管道的最佳选择。常见的两种应用场景:

  • 把Kafka作为数据管道两个端点之一,如,把Kafka里的数据移动到S3上,或把MongoDB里的数据移动到Kafka里;
  • 把Kafka作为数据管道两个端点的中间媒介,如,为了把Twitter的数据移动到Elasticsearch上,需要先把数据移动到Kafka里,再将它们从Kafka移动到Elasticsearch上。

新闻

指南

tar -xzf kafka_2.11-0.9.0.0.tgz 
cd kafka_2.11-0.9.0.0
server.properties
port = 9092
advertised.host.name = localhost 
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

创建一个topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
bin/kafka-topics.sh --list --zookeeper localhost:2181

发送一些消息

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message

启动一个消费者consumer

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

更多细节>>>

分发版

项目

Kafka ecosystem

管理控制台

git clone https://github.com/claudemamo/kafka-web-console
cd kafka-web-console
sbt
> run
http://localhost:9000 

流处理

集成Hodoop

搜索与查询

日志与监控

Connect

Kafka Connect

存储

  • Kafka Streams 使用 RocksDB 做 Local 存储。

文档

更多文档>>>

书籍

服务商

前LinkedIn首席工程师Jay Kreps和另两位Kafka创始成员共同创办了Confluent,和LinkedIn一道开发和维护Kafka,并提供商业化的支持订阅服务。

用户

图集

链接

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱