Kafka的使用背景

来源:互联网 发布:mac无损播放器 编辑:程序博客网 时间:2024/06/06 10:54

在大量使用分布式数据库、分布式计算集群的时候:

-想分析一下用户行为,以便能设计出更好的广告位;

-想对用户的搜索关键词进行统计,分析出前的流行趋势;

-有些数据,存数据库浪费,直接存硬盘操作效率又低;

共同特征:

数据由上游模块产生,下游模块使用上游模块数据进行计算、处理、统计和分析,此时就可以使用消息系统特别是分布式消息系统。


kafka的定义:是一个分布式消息系统,有LinkedIn使用Scala编写,用LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础,具有高水平扩展和高吞吐量。


应用领域:

用作多种类型的数据管道和消息系统。


目前越来越多的开源分布式处理系统如用于数据收集的Apache flume、用于实时数据处理的Apache Storm、用于内存数据处理的Spark 、用于全文检索的elasticsearch都支持与Kafka集成。


消息系统:

ActiveMQ 不支持动态扩容

RabbitMQ 不支持动态扩容

Kafka 通过ZooKeeper动态扩容


ZooKeeper是一个在分布式系统中,广泛被用来作为分布式状态管理、分布式协调管理、分布式配置管理、分布式锁服务的集群。


AMQP协议

producer -push-> broker <-pull-consumer

一个broker即是Kafka的消息实例


Kafka客户端支持大部分主流语言


Kafka架构:

主题(Topic):在工程中通常一个业务一个主题。

分区(Partition):一个topic中的消息数据按照多个分区组织,分区是kafka消息队列组织的最小单位,一个分区可以看做是一个FIFO的队列。

备份(Replication):为了保证分布式可靠性,kafaka0.8开始对每个分区的数据进行备份(不同Broker上),防止其中一个Broker宕机造成分区数据不可用。











0 0
原创粉丝点击