Kafka介绍及搭建

来源:互联网 发布:国内erp软件 编辑:程序博客网 时间:2024/06/05 20:11

1 使用背景

  • Kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用做LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础,具有高水平扩展和高吞吐量。
  • 多种开源消息系统分布式系统比较
    这里写图片描述
  • RabbitMQ严格按照AMQP协议,所以性能不及ActiveMQ和kafka
  • 动态扩容方面阿里巴巴的meaq,rocketmq都有kafka的影子
  • Kafka的动态扩容目前是通过zookeeper来完成的。

2 kafka相关概念

  • AMQP协议
    这里写图片描述
  • Kafka支持的客户端语言
    这里写图片描述
  • Kafka架构
    这里写图片描述

    为了保证分布式可靠性,kafka0.8开始对每个分区的数据进行备份(不同Broker上),防止其中一个Broker宕机造成分区数据不可用
    zookeeper提供分布式状态管理、分布式配置管理、分布式锁服务等的集群。

3 Zookeeper集群的搭建

##软件环境:

  • linux服务器一台、三台、五台(2*n+1台)
    必须半数半数以上服务器存活才能继续工作,所以没必要偶数台
  • Java jdk1.7;
  • zookeper 3.4.6版//比较稳定的版本,做了大量修复和测试
  • 配置zookeeper

    a,配置快照和Log存储路径

dataDir=/home/admin/opt/zookeeper-3.4.6/datatmp/zookeeper/datadataLogDir=/home/admin/opt/zookeeper-3.4.6/datatmp/zookeeper/logs

b,client配置端口

# the port at which the clients will connectclientPort=2181

c,配置本机ip,slave与master连接端口,server选举端口

server.1=S2:2888:3888server.2=S3:2888:3888server.3=S4:2888:3888server.4=S5:2888:3888

d,依次在不同的节点,在快照路径下创建myid

[admin@VSMARTBLD02 data]$ echo "1" > myid 
  • zkServer.sh start/status/stop
    这里写图片描述
    这里写图片描述
  • zkserver事务日志的清理
    需定期清除旧的快照文件,做成定时任务,让linux每天执行
[admin@VSMARTBLD02 bin]$ crontab -lYou (admin) are not allowed to use this program (crontab)See crontab(1) for more information
  • zkcli.sh 查看整个server的运行状态。

4 kafka集群搭建

  • 集群搭建

  • 配置参数介绍

broker.id=0port=19092//提供服务的端口host.name=10.67.89.240num.io.threads=8//操作磁盘io的线程数,一般与log.dirs相符socket.request.max.bytes=104857600//最大请求数,不能超过java的线程数log.dirs=log.dirs=/tmp/kafka-logs//消息持久化路径,以,分隔多个路径log.retention.hours=168//发送到kafka的数据写到磁盘的失效期message.max.byte=5000000//每条消息发送的最大容量default.replication.factor=2//备份副本replica.fetch.max.bytes=5000000//log.segment.bytes=1073741824//超过这个文件大小将另外起一个新文件log.retention.check.interval.ms=300000//失效消息的检查时间间隔log.cleaner.enable=false//log压缩zookeeper.connect=S2:2181,S3:2181,S4:2181,S5:2181
  • 启动
opt/kafka_2.11-0.8.2.2/bin/kafka-server-start.sh -daemon  opt/kafka_2.11-0.8.2.2/config/server.properties 
  • test
    a,创建topic
 bin/kafka-topics.sh --create --zookeeper S2:2181 --replication-factor 1 --partitions 1 --topic test

b,在不同的机器上创建producer 和consumer,互发信息能看到

bin/kafka-console-producer.sh --broker-list S2:19092 --topic testhello
bin/kafka-console-consumer.sh --zookeeper S3:2181 --topic test --from-beginninghello

c,查看topic

bin/kafka-topics.sh --list --zookeeper S2:2181
0 0
原创粉丝点击