kafka

•Kafka是一个分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。

•Kafka主要特点

  (1) 高吞吐量。据了解,Kafka每秒可以生产约25万条消息(50 MB),每秒处理55万条消息(110 MB)。

      (2) 持久化。将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。

    (3) 分布式系统。所有的producer、broker和consumer都会有多个,均为分布式的。     

      (4) 可扩展性。kafka使用zookeeper来实现动态的集群扩展,不需要更改客户端(producer和consumer)的配置。broker会在 zookeeper注册并保持相关的元数据(topic,partition信息等)更新。而客户端会在zookeeper上注册相关的watcher。

     (5) 数据传输效率高。 kafka不在JVM进程内部维护消息Cache,消息直接从文件中读写,完全依赖操作系统在文件系统层面的cache,避免在JVM中管理Cache带来的额外数据结构开销和GC带来的性能代价。基于批量处理和顺序读写的应用模式,最大化利用文件系统的Cache机制和规避文件读写相对内存读写的性能代价。(零拷贝)

Kafka中角色与术语

•Producer

  向kafka中发布消息的进程

•Comsumer

  从Kafka中订阅消息的进程

•Broker

  Kafka集群中每一个kafka服务

•Topic

  保存在Kafka中的每一类消息

  它们之间的数据流程如右图所示 

 

 

 

•Partition

  每一个topic可以被分成多个partition(分区)

Kafka集群中维护的partitions如图所示:

 

•Replication

     一个partition可以有多个备份,默认为1,可以分布在不同broker上

•Leader/Follower

     每个partition都有一个唯一的leader,所有的读写操作都在leader上完成。

•Offset

  每个消息在partition中的位置叫做offset。

•Consumer Group

  同一个Consumer Group中的consumers,Kafka将相应Topic中每个消息只发送给其中一个Consumer。

Kafka系统架构

 

 

 

 

kafka是显式分布式架构,producer、broker(Kafka)和consumer都可以有多个。

Kafka的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存

负载均衡

•负载均衡可以分为两个部分:producer发消息的负载均衡和consumer读消息的负载均衡。

•producer有一个到当前所有broker的连接池,当一个消息需要发送时,需要决定发到哪个broker(即partition)。这是由 partitioner实现的,partitioner是由应用程序实现的。

broker和consumer之间利用zookeeper进行负载均衡。所有broker和consumer都会在zookeeper中进行注册,且 zookeeper会保存他们的一些元数据信息。如果某个broker和consumer发生了变化,所有其他的broker和consumer都会得到 通知

 

•Producer将消息发布到指定的Topic中。

•同时Producer也能决定将此消息归属于哪个partition;比如基于"random","round-robin",

   "key-hash"方式或者通过其他的一些算法等。

   注:如果客户端不指定Patition,也没有指定Key的话,使用自增长的数字取余数的方式实现指定的Partition。这样Kafka将平均的向Partition中生产数据

 

消费者

•消费者需要获取数据时,向broker发送fetch请求,并告知所要获取消息的offset,随后consumer会得到相应的数据。Consumer端也可以重置offset来重新消费消息。

Kafka集群中对应Topic中的一个分区只能被Consumer Group中一个Consumer

 

 

http://www.importnew.com/24973.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值