IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 消息队列Kafka-研学篇(一) -> 正文阅读

[大数据]消息队列Kafka-研学篇(一)

一、Kafka概述

1.1 定义

Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要用于大数据实时处理领域。

1.2 消息队列

1.2.1 传统消息队列的应用场景(优点)

参考文档:https://blog.csdn.net/weixin_45393094/article/details/106160234

  1. 解耦
  2. 异步
  3. 流量削峰
  4. 消息通信
  5. 日志处理

1.2.2 消息队列的两种模式

参考文档:https://blog.csdn.net/noaman_wgs/article/details/70918795

  1. 点对点模式(一对一,消费者主动拉取数据,消费收到后消息清除)
  2. 发布订阅模式(一对多,消费者消费数据之后不会清除消息)

1.2.3 kafka采取的消息模型

kafka 采取的是 发布订阅/模式中的 消费者主动拉取模型,这种模型缺点是消费者需要轮询的请求生产者,判断是否有新的消息产生。

1.3 Kafka基础架构

参考文档:https://blog.csdn.net/student__software/article/details/81486431

二、Kafka快速入门

这里利用docker容器来快速安装部署

2.1 利用Docker-compose部署Kafka(单节点)

  1. 编写docker-compose.yml文件
version: '3.1'
services:
  zookeeper:
    image: wurstmeister/zookeeper                   # 镜像
    container_name: kk-zookeeper
    ports:
      - "2181:2181"                                 # 对外暴露的端口号
    networks:
      - kafka-net                                   # 网络设置

  kafka:
    image: wurstmeister/kafka                       # 镜像
    container_name: kk-kafka
    volumes:
      - /etc/localtime:/etc/localtime               # 挂载位置(kafka镜像和宿主机器之间时间保持一直)
      - /usr/local/kafka:/kafka                     # 挂载kafka数据
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "9092:9092"
    networks:
      - kafka-net
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 47.100.227.1      # 修改:这里配置为宿主机外网ip
      KAFKA_ADVERTISED_PORT: 9092                   # kafka端口
      KAFKA_ZOOKEEPER_CONNECT: 47.100.227.1:2181    # 修改:kafka运行是基于zookeeper的
      KAFKA_BROKER_ID: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M" #按需
    depends_on:
      - zookeeper

  kafka-manager:
    image: sheepkiller/kafka-manager                # 镜像:开源的web管理kafka集群的界面
    container_name: kk-manager
    environment:
      ZK_HOSTS: 47.100.227.1:2181                   # 修改:宿主机外网ip:2181
    ports:
      - "9000:9000"                                 # 暴露端口
    networks:
      - kafka-net
    depends_on:
      - kafka
      - zookeeper

networks:
  kafka-net:
    driver: bridge
    ipam:
      config:
        - subnet: "173.110.1.0/16"
  1. 部署启动docker-compose up -d
[root@iZuf60iq1x5h6s5apkzxd3Z ~]# docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED       STATUS       PORTS                                                                   NAMES
47f8419a5093   sheepkiller/kafka-manager   "./start-kafka-manag…"   4 hours ago   Up 4 hours   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp                               kk-manager_1
fbb53816e9b2   wurstmeister/kafka          "start-kafka.sh"         4 hours ago   Up 4 hours   0.0.0.0:9092->9092/tcp, :::9092->9092/tcp                               kk-kafka_1
05e3181bacc7   wurstmeister/zookeeper      "/bin/sh -c '/usr/sb…"   4 hours ago   Up 4 hours   22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp   kk-zookeeper_1
  1. 然后通过docker exec -it 容器id bash命令进入容器内部
[root@iZuf60iq1x5h6s5apkzxd3Z ~]# docker exec -it kafka_kafka_1 bash
bash-5.1#

进入kafka安装文件夹 cd /opt/kafka/bin

2.2 Kafka基本语法

  1. 对topic进行增删改查
# 增加topic
kafka-topics.sh --create --topic example --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1
# 查看topic
kafka-topics.sh --zookeeper zookeeper:2181 --list
# 删除topic
kafka-topics.sh --zookeeper zookeeper:2181 --delete --topic example
# 查看topic详情
kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic example
  1. 命令行发送、消费消息(测试)

启动消费者和生产者后,生产者发送消息,消费者就会接收到

# 生产者发送消息(控制台测试)
bash-5.1#  kafka-console-producer.sh --broker-list  localhost:9092 --topic example
>hello
>hello world

# 消费者接受消息(控制台测试)
bash-5.1#  kafka-console-producer.sh --bootstrap-server  localhost:9092 --topic example [--from-beginning]
hello
hello world
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 23:08:34  更:2021-08-10 23:08:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:47:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码