Kafka是一个分布式消息系统,由LinkedIn使用Scala语言编写的,具有高水平扩展和高吞吐量.
目前流行的消息队列主要有三种:ActiveMQ、RabbitMQ、Kafka
*其中ActiveMQ、RabbitMQ均支持AMQP协议,Kafka有其自己的协议(仿AMQP,并不通用),但目前越来越多的开源分布式处理系统如Flume(日志收集系统)、Storm(实时数据处理系统)、Spark(内存数据处理系统)、Elasticsearch(全文检索系统)都支持与Kafka的集成.
*动态扩容:在不需停止服务的前提下动态的增加或减少消息队列服务器,Kafka的动态扩容是通过zookeeper实现的,zookeeper上保存着kafka的相关状态信息(topic、partition等).
Kafka使用场景:
1.网站活动追踪:用户的活动追踪、搜索、浏览、点击率等,将操作信息发布到不同的主题中,可对数据实时监控,统计分析用户行为.
2.日志聚合:作为一种日志聚合的解决方案( 日志聚合的作用在于可以把来自不同服务器上不同应用程序产生的日志聚合起来,存放在单一的服务器上,方便进行搜索和分析)
3.数据集中管理:分布式应用产生的数据统一存放在kafka集群中,集中式管理,供其他程序使用或后续对数据统计分析.