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

ActiveMQ RabbitMQ Kafka
所属社区/公司 Apache Mozilla Public License Apache/LinkedIn
开发语言 Java Erlang Scala
支持的协议 OpenWire、STOMP、REST、XMPP、AMQP AMQP 仿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开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐