kafka复习(2)

 

一、简介

---------------------------------------

  1.kafka是一个分布式的、可分区的、可复制的消息系统。它提供了消息系统的功能,但是有自己独特的设计。

  2.名词解释:

      (1)topic:kafka将罅隙以topic为单位

      (2)producer:向kafka发送消息的程序

      (3)consumer:将预定topics并消费的程序

      (4)broker:kafka以集群的形式来运行,可以由一个或者多个服务组成,每个服务叫做一个broker

  3.producer通过网络将消息发送到kafka集群,集群向消费者提供消息,如下图所示:

      

    客户端和服务端通过TCP通信。Kafka提供了java客户端,并提供了多种语言的支持

  4.Topics和Logs:kafka提供了一个抽象的概念:topic

    一个topic是对一组消息的归纳。对每个topic,kafka对他的日志尽行了分区,如下图所示:

    

  (1)每个分区都由一系列有序的、不可变的消息组成,这些消息被连续追加到分区中。分区中的每个消息都有一个连续的序列号叫做offset,用来在分区中唯一标识这个消息。

  (2)在一个可以配置的时间内,kafka集群保留所有发布的消息,不管这些消息有没有被消费。比如消息的保存策略设置为2天,那么在一个消息发布的两天的时间内,他都是可以被消费的,如果没有被消费,就会保留在分区中。之后将会被丢弃来释放空间。Kafka的性能是和性能无关的常量级的,所以保留太多的数据不是问题。

  (3)实际上每个consumer需要唯一维护的数据是消息在日志中的位置,也就是offset,这个offset由consumer来进行相应的维护:一般情况下随着consumer不断的读取消息,这个offset的值会不断增加,但是consumer可以任意顺序读取消息,比如可以将offset设置为一个旧的值来重读之前的消息。

  (4)以上特点的结合,使得kafka consumer是一个非常的轻量级:他们可以在不对集群和其他consumer造成影响的情况下读取消息。可以使用命令行来tail消息而不会对其他正在消费的消息的consumer造成影响。

  (5)日志分区可以达到以下目的:首先使得每个日志数量不会太大,可以在单个服务商保存。每个分区可以单独发布和消费,并未发布操作topic提供了一种坑能。

  6.分布式

每一个分区在kafka集群的若干服务中都有副本,这样持有副本的服务可以共同处理数据和请求,副本数量是可以配置的。副本使得kafka具备了容错的能力。每个分区都由一个容器作为leader,0或者若干服务器作为flower,leader负责处理消息的读和写,flowers则则去复制leader,如果f

猜你喜欢

转载自www.cnblogs.com/bigdata-stone/p/9656053.html