2023-01-05 玩转分布式流处理平台 Kafka

第一章 玩转分布式流处理平台 Kafka 

第1集 什么是MQ消息中间件和应用场景

简介:介绍什么是MQ消息中间件和应用场景

  • 什么是MQ消息中间件

    • 全称MessageQueue,主要是用于程序和程序直接通信,异步+解耦
  • 使用场景:

    • 核心应用

      • 解耦:订单系统-》物流系统
      • 异步:用户注册-》发送邮件,初始化信息
      • 削峰:秒杀、日志处理
    • 跨平台 、多语言

    • 分布式事务、最终一致性

    • 上下游对接,数据源变动->通知下属

    • RPC调用

    • 第2集 架构师的解决方案-业界主流消息队列和技术

    • 简介:对比当下主流的消息队列和选择问题

    • 业界主流的消息队列:Apache ActiveMQ、Kafka、RabbitMQ、RocketMQ

      • ActiveMQ:http://activemq.apache.org/

        • Apache出品,历史悠久,支持多种语言的客户端和协议,支持多种语言Java, .NET, C++ 等
        • 基于JMS Provider的实现
        • 缺点:吞吐量不高,多队列的时候性能下降,存在消息丢失的情况,比较少大规模使用
      • Kafka:http://kafka.apache.org/

        • 是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统(严格意义上是不属于队列产品,是一个流处理平台),它可以处理大规模的网站中的所有动作流数据(网页浏览,搜索和其他用户的行动),副本集机制,实现数据冗余,保障数据尽量不丢失;支持多个生产者和消费者
        • 类似MQ,功能较为简单,主要支持常规的MQ功能
      • 它提供了类似于JMS的特性,但是在设计实现上完全不同,它并不是JMS规范的实现

      • 缺点:运维难度大,文档比较少, 需要掌握Scala
    • RocketMQ:RocketMQ · 官方网站 | RocketMQ

      • 阿里开源的一款的消息中间件, 纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点, 性能强劲(零拷贝技术),支持海量堆积, 支持指定次数和时间间隔的失败消息重发,支持consumer端tag过滤、延迟消息等,在阿里内部进行大规模使用,适合在电商,互联网金融等领域
      • 基于JMS Provider的实现
      • 缺点:社区相对不活跃,更新比较快,纯java支持
      • RabbitMQ:Messaging that just works — RabbitMQ

        • 是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、C、用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不错
        • 缺点:使用Erlang开发,阅读和修改源码难度大

第二章 急速入门Apache顶级项目Kafka核心概念+安装部署实战

Kafka

  • Kafka是最初由Linkedin公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目,也是一个开源【分布式流处理平台】,由Scala和Java编写,(也当做MQ系统,但不是纯粹的消息系统)

    • open-source distributed event streaming platform
  • 核心:一种高吞吐量的分布式流处理平台,它可以处理消费者在网站中的所有动作流数据。

    • 比如 网页浏览,搜索和其他用户的行为等,应用于大数据实时处理领域
  • 官网:Apache Kafka

  • 快速开始:Apache Kafka

  • 快速认识概念

    • Broker

      • Kafka的服务端程序,可以认为一个mq节点就是一个broker
      • broker存储topic的数据
    • Producer生产者

      • 创建消息Message,然后发布到MQ中
      • 该角色将消息发布到Kafka的topic中
    • Consumer消费者:

      • 消费队列里面的消息
  •  

  • 第2集 【重要】介绍分布式流处理平台kafka核心概念解释

  • 核心概念

    • Broker

      • Kafka的服务端程序,可以认为一个mq节点就是一个broker
      • broker存储topic的数据
    • Producer生产者

      • 创建消息Message,然后发布到MQ中
      • 该角色将消息发布到Kafka的topic中
    • Consumer消费者:

      • 消费队列里面的消息

    • ConsumerGroup消费者组

    • 同个topic, 广播发送给不同的group,一个group中只有一个consumer可以消费此消息

    • Topic

    • 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic,主题的意思

    • Partition分区

      • kafka数据存储的基本单元,topic中的数据分割为一个或多个partition,每个topic至少有一个partition,是有序的
      • 一个Topic的多个partitions, 被分布在kafka集群中的多个server上
      • 消费者数量 <=小于或者等于Partition数量

    • Replication 副本(备胎)

      • 同个Partition会有多个副本replication ,多个副本的数据是一样的,当其他broker挂掉后,系统可以主动用副本提供服务
      • 默认每个topic的副本都是1(默认是没有副本,节省资源),也可以在创建topic的时候指定
      • 如果当前kafka集群只有3个broker节点,则replication-factor最大就是3了,如果创建副本为4,则会报错

    • ReplicationLeader、ReplicationFollower

      • Partition有多个副本,但只有一个replicationLeader负责该Partition和生产者消费者交互
      • ReplicationFollower只是做一个备份,从replicationLeader进行同步

    • ReplicationManager

      • 负责Broker所有分区副本信息,Replication 副本状态切换
    • offset

      • 每个consumer实例需要为他消费的partition维护一个记录自己消费到哪里的偏移offset
      • kafka把offset保存在消费端的消费者组里

第3集 阿里云Linux服务器选择和常用软件介绍

简介:阿里云Linux服务器购买和常用软件介绍

 

第4集 急速部署-Kafka相关环境准备和安装JDK8

简介: 急速部署-Kafka相关环境准备和安装

./kafka-server-start.sh -daemon ../config/server.properties &

  • 需要的软件和环境版本说明

    • kafka-xx-yy

      • xx 是scala版本,yy是kafka版本(scala是基于jdk开发,需要安装jdk环境)
      • 下载地址:Apache Kafka
    • zookeeper

      • Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册
      • 下载地址:Apache ZooKeeper
    • jdk1.8

  • 步骤

    • 上传安装包(zk、jdk、kafka)

    • 安装jdk

      • 配置全局环境变量

        • 解压:tar -zxvf jdk-8u181-linux-x64.tar.gz

        • 重命名 mv jdk-8u181*** jdk 1.8

        • vim /etc/profile

        • 配置

    • JAVA_HOME=/usr/local/software/jdk1.8
      CLASSPATH=$JAVA_HOME/lib/
      PATH=$PATH:$JAVA_HOME/bin
      export PATH JAVA_HOME CLASSPATH

      mkdir /usr/local/software

    • 第5集 Linux环境下Zookeeper和Kafka安装启动

      简介: Linux环境下Zookeeper和Kafka安装启动

    • 安装Zookeeper (默认2181端口)

      • 默认配置文件 zoo.cfg

      • 启动zk

        bin/zkServer.sh start
    • 安装Kafka (默认 9092端口)
    • broker.id=0
      #修改下面两个配置 ( listeners 配置的ip和advertised.listeners相同时启动kafka会报错)
      listeners(内网Ip)
      advertised.listeners(公网ip)
      #修改zk地址,默认地址
      zookeeper.connection=localhost:2181
      bin目录启动
      #启动
      ./kafka-server-start.sh ../config/server.properties &
      #停止
      kafka-server-stop.sh
      创建topic
      ./kafka-topics.sh --create --zookeeper 112.74.55.160:2181 --replication-factor 1 --partitions 1 --topic xdclass-topic
      查看topic
      ./kafka-topics.sh --list --zookeeper 112.74.55.160:2181

  • lsof -i:2181 若此命令不存在

    yum install -y lsof

    第6集 Linux环境下daemon守护进程运行Kafka

    简介: Linux环境下daemon守护进程运行Kafka

  • kafka如果直接启动信息会打印在控制台,如果关闭窗口,kafka随之关闭
  • 守护进程方式启动
  • 第四章 Kafka点对点-发布订阅模型讲解和写入存储流程实战

    第1集 Kafka命令行生产者发送消息和消费者消费消息实战

    *简介: Kafka命令行生产者发送消息和消费者消费消息实战**

    创建topic

    ./kafka-topics.sh --create --zookeeper 121.40.61.224:2181 --replication-factor 1 --partitions 2 --topic xdclass-topic

    查看topic

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

    生产者发送消息

    ./kafka-console-producer.sh --broker-list 121.40.61.224:9092 --topic version1-topic

    消费者消费消息 ( --from-beginning:会把主题中以往所有的数据都读取出来, 重启后会有这个重复消费)

    ./kafka-console-consumer.sh --bootstrap-server 121.40.61.224:9092 --from-beginning --topic t1

    删除topic

    ./kafka-topics.sh --zookeeper 112.74.55.160:2181 --delete --topic t1

    查看broker节点topic状态信息

    ./kafka-topics.sh --describe --zookeeper 112.74.55.160:2181 --topic xdclass-topic

121.40.61.224

172.21.119.230

未完--------------------------待更新------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

qq_48283218

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值