Kafka(1)简介

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。

该项目最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

Kafka优势

高吞吐量

单机每秒处理几十上百万的消息量。

即使存储了许多TB的消息,它也保持稳定的性能。

高性能

单节点支持上千个客户端,并保证零停机和零数据丢失。

持久化数据存储

将消息持久化到磁盘。通过将数据持久化到硬盘以及replication防止数据丢失。

  • 零拷贝
  • 顺序读,顺序写
  • 利用Linux的页缓存

分布式系统

分布式系统,易于向外扩展。

所有的Producer、Broker和Consumer都会有多个,均为分布式的。无需停机即可扩展机器。

多个Producer、Consumer可能是不同的应用。

支持多种客户端语言

Kafka支持Java、.NET、PHP、Python等多种语言。

主要应用场景

日志收集

一个公司可以用Kafka可以收集各种服务的Log,通过Kafka以统一接口服务的方式开放给各种Consumer。

消息系统

可以解耦应用,对消息进行异步的处理,在秒杀或者抢购中限流削峰,避免流量过大导致应用系统挂掉。

流式处理

用于Spark或者Storm等各种流式处理平台。