kafka学习(1)了解kafka

我的梦境 提交于 2020-02-29 13:56:23

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

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

如果只是单纯的传递数据的方法,有很多,http,rpc,webservice,定时任务

如果接收方,一下子接收不过来那么多数据怎么办?

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

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

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

                  发布者:一般情况下是将消息以推的方式,发送给消息系统。

                  订阅者:可以采用拉和推的方式从消息系统中拿数据

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

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创建消费者

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!