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等各种流式处理平台。