Apache Kafka 一 简介

1. Apache Kafka是什么?

Apache Kafka是Linkedin公司捐献给Apache软件基金会ASF(Apache Software Foundation)的一款开源分布式消息系统。
它具有如下特点:

  • 快速
    可支持每秒几十万次读写,也可同时支持上千个客户端。
  • 可伸缩
    可以由多台机器组成Message Broker,集群可以弹性透明地伸缩而不造成宕机。
  • 可持久
    消息可以持久化到磁盘,每个消息可保存多个副本。每个broker可处理TB级的消息而无性能损失。
  • 分布式设计
    多个机器协同刚工作,有很强容错性;其中一个机器宕机不影响集群整体工作。

2.内部设计背景

Kafka socket服务器没有使用netty来实现,是因为其开发者不想对任何哪怕是一个字节的性能做妥协;
他们想要使得Kafka具有顶级的性能,不想任何已有的可重用框架或代码给他们带来包袱。

Kafka实现语言既有Java也有Scala,其内核使用Java编写,部分模块用Scala.但是它的API文档是Java doc. Kafka正在把它的API从Scala转到Java是因为Scala版本不具备二进制兼容性,为了引入Scala2.1,需要把2.0,1.9,etc,都引入进来。

Kafka设计理念: Kafka是以producer(生产者)为中心,将连续事件流按片划分到持久的消息代理(message broker),具有片内按序交付的特征;既可支持消息消费者对消息的离线批处理,也可支持消息消费者对消息的低延时在线处理。它的消息模型是主题(topic)模型,生产者向主题发送消息,消费者向主题订阅消息。

3.适用场景

1.大吞吐量,每秒消息读写在10万次(100k+/sec)以上。
2.既有快速实时消息处理,也需要离线的批量消息处理。
3.按序交付。(其他的Messaging system, 比如RabbitMQ和AMQP不具有如此特点)
4.消息持久化。(这也是它能支持离线批量处理的基石)

猜你喜欢

转载自blog.csdn.net/tonyhuang_google_com/article/details/51188980