Kafka基础(二)

常用命令

#启动服务 服务器上所有服务已启动。
启动Zookeeper:> bin/zookeeper-server-start.sh config/zookeeper.properties
启动Kafka:> bin/kafka-server-start.sh config/server.properties

#创建topic (默认已进入kafka目录)
./bin/kafka-topics.sh --create --zookeeper 10.136.96.151:24002/kafka --replication-factor 1 --partitions 1 --topic topic4zk1 

#查看topic情况  列出所有topic的分区情况:
./bin/kafka-topics.sh --list --zookeeper 10.136.96.151:24002/kafka

#查看topic4zk1的分区具体情况:
bin/kafka-topics.sh --describe --zookeeper 10.136.96.151:24002 --topic topic4zk1

#启动producer,控制台发送消息(先看kafka的conf文件里的producer.properties,确定端口)
./bin/kafka-console-producer.sh --broker-list 10.136.96.159:21005,10.136.96.165:21005 --topic topic4zk1  

#启动consumer,控制台接收消息
./bin/kafka-console-consumer.sh --zookeeper 10.136.96.151:24002,10.136.96.165:24002/kafka --from-beginning --topic topic4zk1

注:在新版本的kafka中,使用 bootstrap.servers 配置项,具体查一下官网就明白了。

参考资料:

http://www.cnblogs.com/davidwang456/p/4313784.html

https://blog.csdn.net/xiaolang85/article/details/22194571#t7

 

 

组成

 

按照不同模块的职责来区分,一个正常运行的KAFKA共有四个部分:Zookeeper,Broker,Producer和Consumer;

Kafka基础(二)_第1张图片

Producer

消息产生者,产生消息,发送到Broker;

Consumer

消息Consumer,从Broker得到消息;

Broker

亦即KAFKA的Server;中间人,消息中转站;一堆Broker组成的集群叫做cluster

Zookeeper

管理连接信息,包括各个节点的IP,端口等;Producer和Consumer需要到Zookeeper请求Broker的信息,从而进行消息的收发;一个新的Broker的启动也需要到Zookeeper来注册; zookeeper也可以配集群。目的是防止某一台挂了;

 producer和consumer通过zookeeper去发现topic,并且通过zookeeper来协调生产和消费的过程;

 

术语

 

 

 

Topic:是KAFKA对消息分类的依据;一条消息,必须有一个与之对应的Topic;

    比如现在又两个Topic,分别是Love和Hate,Producer向Love发送一个消息aa,然后向Hate发送一个消息bb;那么,订阅Love的Consumer就会收到消息aa,订阅Hate的Consumer就会收到消息bb;(每个Consumer可以同时订阅多个Topic,也即是说,同时订阅Love和Hate的Consumer可以收到aa和bb);

Message:就是我们所说的消息,是KAfKA操作的对象,消息是按照Topic存储的;

    KAFKA中按照一定的期限保存着所有发布过的Message,不管这些Message是否被消费过;例如这些Message的保存期限被这只为两天,那么一条Message从发布开始的两天时间内是可用的,超过保存期限的消息会被清空以释放存储空间;

Partition:每一个Topic可以有多个Partition,这样做是为了提高KAFKA系统的并发能力;

    每个Partition中按照消息发送的顺序保存着Producer发来的消息,每个消息用ID标识,代表这个消息在改Partition中的偏移量,这样,知道了ID,就可以方便的定位一个消息了;每个新提交过来的消息,被追加到Partition的尾部;如果一个Partition被写满了,就不再追加;(注意,KAFKA不保证不同Partition之间的消息有序保存)。

Leader:Partition中负责消息读写的节点,Leader是从Partition的节点中随机选取的;

ReplicationFactor:一个Partition中复制数据的所有节点,包括已经挂了的;

isr:ReplicationFactor的子集,存活的且和Leader保持同步的节点;

Consumer Group:传统的消息系统提供两种使用方式:队列和发布-订阅;

    队列,是一个池中有若干个Consumer,一条消息发出来以后,被其中的一个Consumer消费;发布-订阅,是一个消息被广播出去,之后被所有订阅该主题的Consumer消费;KAFKA提供的使用方式可以达到以上两种方式的效果:Consumer Group;每一个Consumer用Consumer Group Name标识自己,当一条消息产生后,改消息被订阅了其Topic的Consumer Group收到,之后被这个Consumer Group中的一个Consumer消费;

如果所有的Consumer都在同一个Consumer Group中,那么这就和传统的队列形式的消息系统一样了;

如果每一个Consumer都在一个不同的Consumer Group中,那么就和传统的发布-订阅的形式一样了。

上个图片:

一个Topic,两个Broker,五个Partition,大概是这么个样子:

 

参考资料:https://my.oschina.net/u/1475616/blog/374686

 

 

 

你可能感兴趣的:(kafka,大数据)