zoukankan      html  css  js  c++  java
  • Kafka集群搭建

    使用场景

    • 异步处理: 如用户注册后,发送注册邮件,再发送注册短信。
    • 应用解耦: 如用户下单后,订单系统需要通知库存系统。
    • 流量削峰:如秒杀活动,一般会因为流量过大,导致流量暴增。
    • 日志处理:解决大量日志采集后的传输问题。消息队列负责日志后续处理转发。
    • 消息通讯:

    优点

    • 高吞吐量,非常普通的应将kafka也可以支持每秒数百万的消息。

    • 支持通过kafka服务器和消费机集群来区分消息。

    • 支持hadoop并行数据加载。

    关键概念:

    • broker: kafka集群中的一台或多台服务器统称broker。

    • Topic: kafka处理的消息源(feeds of messages)的不同分类。

    • partition:Topic物理机上的分组,一个topic可分为多个partition,每个partition是一个有序的队列。其中的每条消息都会被分配一个有序的id(offset)。

    • Message :消息,是通信的基本单位。每个producer可以向一个topic(主题)发布一些消息。

    • Producers:消息和数据的生产者,向kafka的一个topic发布消息的过程叫producers。

    • consumers:消息和数据消费者,订阅topic并处理其发布的消息的过程叫做consumers。

    安装运行

    官网地址:http://kafka.apache.org/downloads

    1. 软件环境

    • CenOS7/Ubuntu 虚拟机三台。
    • 已经搭建好的zookeeper集群。
    • 软件版本:kafka_2.12-2.2.0

    2. 安装步骤

    • 下载官方二进制包
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz
    

    1558545503830

    • 解压
    tar -zxvf kafka_2.12-2.2.0.tgz -C /usr/local/
    
    • 修改配置文件
    vim /usr/local/kafka_2.12-2.2.0/config/server.properties
    
    # 不可重复
    # 这是这台虚拟机上的值,在另外两台虚拟机上应该是2或者3,
    # 这个值是唯一的,每台虚拟机或者叫服务器不能相同
    broker.id=1
    
    # 填写本机ip
    listeners=PLAINTEXT://192.168.137.200:9092
    
    log.retention.hours=24
    
    # 新增下面三项
    message.max.byte=5242880
    default.replication.factor=2
    replica.fetch.max.bytes=5242880
    
    # 设置zookeeper的连接端口,新版本的kafka不再使用zookeeper
    # 而是通过brokerlist的配置让producer直接连接broker
    # 这个brokerlist可以配置多个,只要有一个能连接上,就可以让producer获取道集群中的其他broker的信息,绕过了zookeeper
    zookeeper.connect=192.168.137.1:2181,192.168.137.1:2182,192.168.137.1:2183
    

    3. 启动运行

    # 进入kafka的bin目录
    cd /usr/local/kafka_2.12-2.2.0/bin/
    
    # 启动kafka
    ./kafka-server-start.sh -daemon ../config/server.properties
    
    • 检测是否启动成功

      jps
      

      1558551474814

    4. 验证是否创建成功

    • 创建 topic
    ./kafka-topics.sh --create --zookeeper 192.168.137.1:2181 --replication-factor 2 --partitions 1 --topic my-topic
    

    参数解释:

    --replication-factor 2 // 复制两份
    --partitions 1 // 创建1个分区
    --topic // 主题为my-topic
    -- --zookeeper // 此处为为zookeeper监听的地址

    • 创建生产者 producer
    # IP地址可以写brokerlist中的任意一个
    ./kafka-console-producer.sh --broker-list 192.168.137.200:9092 --topic my-topic
    

    此时,console处于阻塞状态,可以直接输入数据。

    • 创建消费者 consumer
    # 要切换到另一台虚拟机的shell界面输入以下命令
    ./kafka-console-consumer.sh --bootstrap-server 192.168.137.100:9092 --topic my-topic --from-beginning
    
    • 显示所有topic
    ./kafka-topics.sh --list --zookeeper 192.168.137.1:2181
    

    5. Kafka-manager 搭建

    下载地址:https://github.com/yahoo/kafka-manager/releases

    # 在线下载
    wget https://github.com/yahoo/kafka-manager/archive/2.0.0.2.tar.gz
    # 解压到 /usr/local
    tar -zxvf 2.0.0.2.tar.gz -C /usr/local
    # 修改配置
    vim /usr/local/kafka-manager-2.0.0.2/conf/application.conf
    
    • 编辑配置文件 application.conf
    ## 注释这一行,下面添加一行
    # kafka-manager.zkhosts="kafka-manager-zookeeper:2181" 
    
    ## 根据自己的zookeeper重新配置
    kafka-manager.zkhosts="192.168.137.1:2181,192.168.137.1:2182,192.168.137.1:2183"
      
    
    • 启动 Kafka-manager
    # 切换到bin目录
    cd /usr/local/kafka-manager-2.0.0.2/
    
    # 执行生成zip部署文件
    ./sbt clean dist
    
    # 打包结束后,提取zip文件并解压到/usr/local
    unzip /usr/local/kafka-manager-2.0.0.2/target/universal/kafka-manager-2.0.0.2.zip
    
    # 移动到/usr/local/
    mv kafka-manager-2.0.0.2 /usr/local/kafka-manager
    
    # 启动项目 
    # -Dhttp.port,指定端口,默认端口 9000 
    # -Dconfig.file=conf/application.conf 指定配置文件:
    
    # 切换到目录,
    cd /usr/local/kafka-manager/bin
    
    # 方式1 简单启动
    ./bin/kafka-manager
    
    # 方式2 指定配置,端口,后台启动
    nohup ./kafka-manager -Dconfig.file=../conf/application.conf -Dhttp.port=9000 &
    
  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/LingCoder/p/10963583.html
Copyright © 2011-2022 走看看