kafka学习(1)了解kafka

1.消息中间件\消息系统web

将数据从一个系统传递给另外一个系统架构

若是只是单纯的传递数据的方法,有不少,http,rpc,webservice,定时任务负载均衡

若是接收方,一会儿接收不过来那么多数据怎么办?scala

2.消息系统的分类:点对点,发布-订阅server

点对点:主要采用队列的方式,如A->B, 当B消费掉队列中的数据,队列中的数据就会被删除,若是B一直不消费,队列中就会有不少脏数据。中间件

发布-订阅:必需要有主题的概念,主题:一个消息分类blog

                  发布者:通常状况下是将消息以推的方式,发送给消息系统。队列

                  订阅者:能够采用拉和推的方式从消息系统中拿数据开发

3.kafka的说明:开发语言是scala,kakafka_2.11-2.2.0  其中,2.11是scala的版本,2.2.0是kafka的版本rpc

4.kafka的架构:

broker服务:通常状况下一台主机就一个broker服务,也能够一台主机中有多个broker服务,只要端口不同,存储路径不同能够,可是不推荐。

zookeepr服务:管理broker集群,管理元数据。

producer:生产者,发布消息的,这个消息,须要指定主题。

consumer:消费者,当多个消费者订阅同一个主题,那这个主题的同一条消息,会被重复消费。

consumer group:消费组,在同一个消费组中的消费者,对同一条消息,只能消费一次。

offset:某一个消费组,当前对一个主题的某个分区下的消费偏移量。

5.kafka的架构:

上游能够有多个生产者,生产者在生产消息时,消息须要指定主题Topic(主题以后,还能够指定分区和key),生产者生产什么主题的消息,由生产者本身决定,而不是kafka指定的,因此只要kafka存在这个主题,任何生产者均可以生产这个主题的消息。

若是消息是由kafka通知某个producer来生产的,那么kafka就须要管理全部生产者的消息,但实际上kafka是无论理生产者的。而生产者在注册的时候,实际上会通知zookeeper,且broker服务在注册时,也会通知zookeeper。

在建立一个主题的时候,须要指定副本数和分区数,主题至少须要一个分区才能建立成功。

分区数:若是主题至少须要设置1个分区,那么100条数据都会放在这个主题下的一个分区里。但若是指定了分区数是3,那么90条数据,就会放在3个分区中,且每一个分区中有30条数据。

消费组在拉取消息时,能够拉取某个主题下的消息,也能够拉取某个主题下的某个或某几个分区下的消息。生产者在生产消息时,也能够指定生产某个主题及某个主题下的某个分区的消息。

架构说明:

一个典型的kafka集群包含若干producer,若干broker,若干Consumer,以及一个Zookeeper集群,kafka经过Zookeeper管理集群配置,选举Leader,以及在Consumer Group发生变化时进行Rebalance(负载均衡)。Producer使用push(推)的方式将消息发布到Broker,Consumer使用pull(拉)的方式从Broker订阅并消费消息。

5.1先启动zk

5.2启动kafka server 

5.3建立主题

5.4建立生产者

5.5建立消费者

相关文章
相关标签/搜索