当前位置:   article > 正文

后台服务于工具消息中间件 kafka架构及高可用集群安装部署教程_消息中间件 +应用程序 高可用

消息中间件 +应用程序 高可用

目录

一、 简单介绍

二、 架构

三、利用安装 zookeeper 的三台服务器做 KAFKA 集群

3.1 下载 kafka_2.9.2-0.8.1

3.2 创建log文件夹

3.3 配置kafka

3.4 启动kafka

3.5 问题解决 

 四、KAFKA 集群验证

4.1 创建 topic

4.2 查看 topic

4.3 开启发送者并发送消息

4.4 开启消费者并接收消息


一、 简单介绍

什么是 kafka 呢,他是 LinkedIn 开发的一个分布式消息系统,用 scala 编写的,可以水平扩展和高吞吐率。
原本开发自 LinkedIn,用作他们的活动流和运营数据处理管道的基础,之后被多家公司使用,慢慢发展壮大起来。

kafka 是分布式的,基于发布/订阅的消息系统。
1、 即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。
2、 高吞吐率:即使在非常廉价的商用机器上也能做到单机支持每秒 100k 条以上消息的传输。
3、 支持分区,消息分布式消费,但是只能保证每个 partition 内的消息顺序传输。并且支持在线水平扩展。
为何使用消息中间件呢,大家肯定接触过 rabbitmq、activemq、redis 等,估计有很多感触。我就不详细描述了,这
个只能亲身参加过大的技术架构,自己身在其中,并且感受到不用消息中间件和用的区别。

二、 架构

了解架构之前,我们先了解一下基本名词。
Broker:安装了 kafka 的服务器就是一个 broker。
Topic:消息的类比,最好一类数据定一个 topic 去存储传输。
Partition:分区,topic 可以定分到几个分区中。
Producer:发送消息,发送者。
Consumer:消费消息,消费者。
Consumer Group:每个 Consumer 属于一个特定的 Consumer Group。

 

从图中来看,kafka 集群包含若干个 producer 和 consumer 以及 broker,还有一个 zk 集群。Producer 通过 push 模式将数据发送到 broker,Consumer 通过 pull 模式拉取数据。
Producer 发送消息到 broker 时,根据 partition 机制选择分不到哪一个 partition,设置合理的情况下,所有消息可以均匀分不到不同的 partition 里,实现了负载均衡。

三、利用安装 zookeeper 的三台服务器做 KAFKA 集群

3.1 下载 kafka_2.9.2-0.8.1

下载地址:https://archive.apache.org/dist/kafka/0.8.1/kafka_2.9.2-0.8.1.tgz
分别在三台服务器创建kafka目录并且下载kafka压缩包
 

  1. mkdir /usr/local/kafka
  2. tar –zxvf kafka_2.9.2-0.8.1.tar.gz

3.2 创建log文件夹

mkdir /usr/local/kafka/kafkalogs

3.3 配置kafka

  1. cd /usr/local/kafka/kafka_2.9.2-0.8.1/config
  2. # vi server.properties 修改项如下:
  3. broker.id=0 //当前机器在集群中的唯一标识
  4. port=9092 //kafka对外提供服务的tcp端口
  5. host.name=10.211.55.7 //主机IP地址
  6. log.dirs=/usr/local/kafka/kafkalogs //log存放目录
  7. message.max.byte=5048576 //kafka一条消息容纳的消息最大为多少
  8. default.replication.factor=2 //每个分区默认副本数量
  9. replica.fetch.max.bytes=5048576
  10. zookeeper.connect=10.211.55.7:2181, 10.211.55.8:2181, 10.211.55.9:2181

3.4 启动kafka

 ./kafka-server-start.sh -daemon ../config/server.properties //后台启动运行

3.5 问题解决 

root@master ~]# /export/kafka/bin/kafka-console-producer.sh --broker-list
10.14.2.201:9092,10.14.2.202:9092,10.14.2.203:9092,10.14.2.204:9092 --topic test
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
# /export/kafka/bin/kafka-console-consumer.sh --zookeeper
10.14.2.201:2181,10.14.2.202:2181,10.14.2.203:2181,10.14.2.204:2181 --topic test --from-beginning
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

解决方法:

  1. # 下载slf4j-1.7.6.zip
  2. # http://www.slf4j.org/dist/slf4j-1.7.6.zip
  3. # 解压
  4. unzip slf4j-1.7.6.zip
  5. # 把slf4j-nop-1.7.6.jar 包复制到kafka libs目录下面
  6. cd slf4j-1.7.6
  7. cp slf4j-nop-1.7.6.jar /export/kafka/libs/

 四、KAFKA 集群验证

4.1 创建 topic

./kafka-topics.sh --create --zookeeper 10.211.55.7:2181 --replication-factor 1 --partitions 1 --topic test

4.2 查看 topic

 ./kafka-topics.sh --list --zookeeper 10.211.55.7:2181

4.3 开启发送者并发送消息

./kafka-console-producer.sh --broker-list 10.211.55.7:9092 --topic test

4.4 开启消费者并接收消息

./kafka-console-consumer.sh --zookeeper 10.211.55.8:2181 --topic test --from-beginning

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/781266
推荐阅读
相关标签
  

闽ICP备14008679号