kafka 内部原理及实例

                                                             kafka介绍

Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,它使用Scala编写,后成为Apache的一部分,支持多种客户端语言(C++,JAVA,python)

目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark等都支持与Kafka集成。

具有高水平扩展性、高容错性、访问速度快、分布式等特性

                                                           内部原理深度解析

1.producer: 生产者发布消息到 kafka 集群。生产者根据指定算法将消息发送到partition中
2.consumer:消费者从 kafka 集群中消费消息。kafka中跟别的消息队列不一样的是consumer端记录offset(偏移量)
3.broker:  每一个broker可以理解为kafka 集群中一台服务器。
4.topic:    kafka 集群的消息类别,即 kafka 是面向 topic 的。
5.partition:    每个 topic 包含一个或多个 partition。 Partition都是有序的,每个个consumer以partition为单位进行消费的。
6.Consumer group:每个 consumer 都属于一个 consumer group,在同一个 consumer group 中的一个 Consumer 不能消费同一个partition,
但不同consumer group Consumer 还是可以消费同一个partition
7.replica:    partition 的副本,保障 partition 的高可用。
8.leader:    replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
9.follower:   replica 中的一个角色,从 leader 中复制数据。
10.zookeeper:   kafka 通过 zookeeper 管理元数据(meta) 信息,集群管理,Leader 选举

 

         

                                                                              常用命令

./bin/zookeeper-server-start.sh ./config/zookeeper.properties &      // 起动kafka 之前要先启动zookeeper
./bin/kafka-server-start.sh ./config/server.properties &             //起动kafka
./bin/kafka-server-stop.sh        停掉kafka
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topicname    创建tipoc  replication-factor:指有同个备份
./bin/kafka-topics.sh --list --zookeeper localhost:2181   查看tipic
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topicnametest    生产端生产消息
./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic topicnametest --from-beginning   消费者消息消息,从头消费

 

 

                                                                           kafka 实例

  生产端代码

 

消息端代码

 

 

 

 

 

posted @ 2018-11-08 15:45  陈艺馨  阅读(2610)  评论(2编辑  收藏  举报