码迷,mamicode.com
首页 > 其他好文 > 详细

Kafka 入门

时间:2018-10-28 11:10:16      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:基本   ror   设计   复杂度   永久   开发   发布订阅   col   lower   

 

什么是Kafka?

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 

 

Kafka基本概念

  • Broker:物理概念,Kafka集群中的每个Kafka节点;

  • Topic:逻辑概念,Kafka消息的类别,对数据进行区分、隔离;

  • Partition:物理概念,Kafka下数据存储的基本单元。一个Topic数据,会被分散存储到多个Partition,每一个Partition是有序的;

  • Replication(副本、备份):同一个Partition可能会有多个Replica,多个Replica之间数据是一样的;

  • Replication Leader:一个Partitionn的多个Replica上,需要一个Leader负责该Partition上与Producer和Consumer交互;

  • ReplicaManager:负责管理当前broker所有分区和副本的信息,处理KafkaController发起的一些请求,副本状态的切换、添加/读取消息、Leader的选举等。

 

Kafka概念延伸

Partition(最小存储单元)

  • 每一个Topic被切分为多个Partitions(Partition属于消费者存储的基本单位);

  • 消费者数目小于或等于Partition的数目(多个消费者若消费同个Partition会出现数据错误,所有Kafka如此设计);

  • Broker Group中的每一个Broker保存Topic的一个或多个Partitions(一个Broker只会保存一个Partition,若Partition太大则多个Broker保存同个Partition);

  • Consumer Group中的仅有一个Consumer读取Topic的一个或多个Partitions,并且是唯一的Consumer(避免同一个Partition被多个Consumer消费)。

 

Replication

  • 当集群中有Broker挂掉的情况,系统可以主动地使Replicas提供服务;

  • 系统默认设置每一个Topic的replication系数为1(即默认没有副本,节省资源),可以在创建Topic时单独设置。

特点:

  1. Replication的基本单位是Topic的Partition;

  2. 所有的读和写都从Leader进,Followers只是做为备份(只有Leader管理读写,其他的Replication只做备份);

  3. Follower必须能够及时复制Leader的数据;

  4. 增加容错性与可拓展性。

 

Kafka基本结构

技术分享图片

技术分享图片

 

Kafka消息结构

技术分享图片

 

Kafka特点

  • 分布式(多分区,多副本,多消费者,基于ZooKeeper调度);
  • 高性能(高吞吐,低延时,高并发,时间复杂度为O(1));
  • 持久性和扩展性(数据可持久化,容错率,支持在线水平扩展,消息自动平衡)。

 

Kafka应用场景

消息队列,行为跟踪,元信息监控,日志收集,流处理,事件源,持久性日志(commit log)等。

 

Kafka安装(Linux下)

  需要安装JDK(步骤略过)与ZooKeeper。

 

ZooKeeper安装: 

1. 下载,解压,配置:

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
tar -zxvf zookeeper-3.4.12.tar.gz
# zookeeper-3.4.12/conf中复制zoo_sample.cfg为zoo.cfg
cp zoo_sample.cfg zoo.cfg
# 修改zoo.cfg文件中下面两行(dataDir和dataLogDir后面所指的文件夹必须要存在如果不存在的话,在启动ZooKeeper服务端的时候会报错。这里是单机情况下的配置情况,如果是集群的话,要在clientPort下面添加服务器的ip。如server.1=192.168.180.132:2888:3888
server.2=192.168.180.133:2888:3888...等等。)
dataDir=/tmp/zookeeper  
dataLogDir=/tmp/zookeeper/log 

 2. 配置环境变量(全用户永久更改方式):

修改/etc/profile文件,尾部添加:

ZOOKEEPER_INSTALL=/usr/local/zookeeper-3.4.12 
PATH=$PATH:$ZOOKEEPER_INSTALL/bin  

export ZOOKEEPER_INSTALL
export PATH

3. 启动检验:

# 进入zookeeper的bin目录下,启动
./zkServer.sh start  
# 查看状态
./zkServer.sh status
# 启动zookeeper的客户端(本地不需要-server参数)
./zkCli.sh -server 192.168.147.128:2181

注:如拒绝连接,检查防火墙配置。

 

Kafka 入门

标签:基本   ror   设计   复杂度   永久   开发   发布订阅   col   lower   

原文地址:https://www.cnblogs.com/weswes/p/9864182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!