Kafka 是由 LinkedIn 使用 Scala 编写的一个分布式消息系统,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础,具有高水平扩展和高吞吐量。Spack、Elasticsearch 都支持与 Kafka 集成。下面看一下几种分布式开源消息队列系统的对比:

ActiveMQRabbitMQKafka
所属社区/公司ApacheMozilla Public LicenseApache/LinkedIn
开发语言JavaErlangScala
支持的协议OpenWire、STOMP、REST、XMPP、AMQPAMQP仿AMQP
事务支持不支持不支持
集群支持支持支持
负载均衡支持支持支持
动态扩容不支持不支持支持(zk)

这里 Linux 选择 CentOS 7.2。

Kafka 集群架构:

kafka集群架构

一般不建议直接使用 Kafka 自带的 Zookeeper 建立 zk 集群,这里我们使用独立的 zk 集群,zk 集群搭建参考文章 https://blog.csdn.net/smartbetter/article/details/52778023。

# java -version                 //检查是否安装jdk,没有安装的话需要先安装jdk

# cd /usr/local
# mkdir kafka
# cd kafka
# wget -P /usr/local/kafka https://archive.apache.org/dist/kafka/1.1.0/kafka_2.12-1.1.0.tgz
# tar -zxvf kafka_2.12-1.1.0.tgz
# mkdir kafka-logs

# cd kafka_2.12-1.1.0/config
# vim server.properties

编辑配置文件 (配置项可以参考 http://kafka.apache.org/documentation.html#brokerconfigs) 为:

# 唯一标识,0开始
broker.id=0

# 服务器端口和ip
port=9092
host.name=192.168.2.20
# 日志数据保存的目录
log.dirs=/usr/local/kafka/kafka-logs

log.retention.hours=168
# 每条消息能够容纳的最大大小,默认1000012
message.max.bytes=5242880
# 默认的副本因子,即保存消息的副本数,默认1
default.replication.factor=2
# 取消息的最大直接数,默认1048576
replica.fetch.max.bytes=5242880

# 配置zk地址
zookeeper.connect=192.168.20.11:2181,192.168.20.12:2181,192.168.20.13:2181

启动 Kafka 之前需启动 Zookeeper,然后启动 Kafka,各个节点需单独启动:

# cd /usr/local/kafka/kafka_2.12-1.1.0/bin
# ./kafka-server-start.sh -daemon ../config/server.properties  //后台启动服务
# jps                         //查看服务是否启动成功
# ./kafka-server-stop.sh      //关闭服务

最后我们在三台不同的服务器上各部署一个 Kafka 进程,以构成一个 Kafka 集群。开始使用可以参考官方文档 http://kafka.apache.org/documentation.html#quickstart。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐