kafka入门(一)

一、简介

Kafka是一种高吞吐量的分布式发布订阅消息系统 。

    相关术语:

     Toptic:kafka按照Toptic分类来维护消息,可以理解为一类消息放在一个Toptic里。

     Producer(生产者):我们将消息发布到Toptic中的进程称为生产者。

     Consumer(消费者):我们将订阅Toptic并且处理Toptic中消息的进程称为消费者。

     Broker:kafa以集群方式运行,集群中的每一台服务器称之为Broker。

producers生产者通过网络发送消息到Kafka集群,然后consumer消费者来进行消费,无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。如图:

                                        kafka入门(一)_第1张图片

二、Topic/logs 

     一个toptic就是一类消息,每个toptic下又有多个partition(分区),每个分区可以理解成一个有序的消息队列,这些message按顺序添加到一个叫做commit log的文件中,每次生产者发布到的消息都会追加到日志文件的尾部,这样每个消息在区中就会有个编号,这个编号称为offset(偏移量)它唯一标记这条消息。每个消费者的offset是记录在zookeeper里的,由每个消费者自己维护,这里每个toptic设置多个分区,目的是为了提高消费者的并发量,一个分区只能有一个消费者去消费,可以保证消费的顺序性。当一个消息被消费后,不会被删除,日志文件将会根据broker中的配置要求,保留一定的时间之后删除;比如log文件保留2天,那么两天后,文件会被清除,无论其中的消息是否被消费.kafka通过这种简单的手段,来释放磁盘空间,以及减少消息消费之后对文件内容改动的磁盘IO开支,kafka的性能与保留的数据量的大小没有关系,因此保存大量的数据(日志信息)不会有什么影响。

注意:每个partition(区)都有个commit log文件,一个区中的message消息offset(偏移量)是唯一的,但在不同的区中这个偏移量可能相同。

 

                                          kafka入门(一)_第2张图片

三、kafka伪集群

       此处以伪集群举例模拟3台机器,复制 server.properties文件,重新命名为 server1.properties、server2.properties,然后分别修改每个配置文件的broker.id 、 端口号、日志文件路径,之后就可以启动每个kafka了。

在创建toptic时可以指定备份因子,默认是一个分区,也可以指定分区数,kafka是在创建toptic时分配主从的,每个分区都会有个kafka服务做为主,其他的为从,不同的分区主可能不一样,其他的为从,这样做的主要目的是提高高可用,也就是说如果某个分区的主挂了,那么我其分区不受影响,可以正常操作,每次发送消息都是发送给主,然后从进行复制消息,kafka的消息发送和消费都是主来进行的,从没什么用,只有在主挂掉之后才会在从里重新选出主来。

                               kafka入门(一)_第3张图片

发送到toptic的消息可以指定发送到哪个分区,如果不指定kafka会根据发送消息的key进行hash取值,进而决定发送到哪个分区。kafka分区的个数可以超过集群的个数,但是备份因子的个数最多与机器数相同。kafak的性能非常高,每秒可接受上百万的数据。

 

你可能感兴趣的:(kafka入门(一))