Kafka快速入门

一.简介

  Kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Kafka是一个高吞吐的分布式消息队列系统。特点是生产者消费者模式,先进先出(FIFO)保证顺序,本身不会丢失数据,默认清理7天之前的数据。消息队列常见常见场景:系统之间解耦合,峰值压力缓冲,异步通信等等。

二..架构

  producer:消息生产者

  consumer:消息消费者

  broker:Kafka集群的servevr,负责处理消息读、写请求,存储数据

  topic:消息队列、分类

  

三.特点

  1.一个topic分成多个partition【提高并行度】

  2.每个partition内部消息强有序【FIFO】,其中的每个消息都有一个序号叫offset【偏移量】

  3.一个partition只对应一个broker,一个broker可以管理多个partition

  4.消息直接写入文件,并不是保存在内存中【NIO:不经过用户内存,直接写入磁盘】

  5.默认【一周】根据时间策略删除数据,而不是消费完就删除  

  6.producer自己决定往哪个partition写消息,可以基于轮询【负载均衡】策略,或者基于hash策略

  7.consumer自己维护消费到哪个offset

  8.每个consumer都有对应的group,每个consumer消费不同的partition,一个消息在group内只消费一次

  9.每个group各自独立,互不影响

  10.高性能,单节点支持上千个客户端,百MB/s吞吐

  11.分布式,数据副本冗余,流量负载均衡,可扩展

  12.kafka和很多消息系统策略不同,很多消息系统是消费完就删除,而kafka是根据时间策略进行删除的,不是消费完就删除,在kafka里面没有消费完,只有过期。

  备注:零拷贝

  

四.Kafka与其它消息队列比较

  1.RabbitMQ:分布式,支持多种MQ协议,重量级

  2.ActiveMQ:与RabbitMQ类似

  3.ZeroMQ:以库的形式提供,使用复杂,无持久化

  4.Redis:纯内存性能好,持久化较差

五.相关命令

  

  

  

六.优先副本策略

  kafka中有一个优先副本(preferred replicas)的概念。如果一个分区有3个副本,且这3个副本的优先级分别为0,1,2,根据优先副本的策略,0优先级副本所在的broker会作为leader。当这个broker挂掉时,会自动启动1优先级副本所在的broker当做leader。当0优先级副本所在的borker重启后,会自动切换回该borker作为leader。这样就不会负载不均衡和资源浪费,这就是leader的均衡机制。

posted @ 2019-03-17 21:58  云山之巅  阅读(217)  评论(0编辑  收藏  举报