美文网首页
了解大数据kafka

了解大数据kafka

作者: 南苑bert | 来源:发表于2020-05-24 14:55 被阅读0次

    原视频https://www.bilibili.com/video/BV1vx411f7hA?from=search&seid=16681595996688576491
    作者:等等小姐姐

    发布与订阅系统

    我们可以想象一个校园论坛, 比如生产者把文章发布到论坛上,消费者接受文章(阅读文章)

    image.png

    当业务线变多时,我们的程序通信链路就会变得复杂。


    image.png

    当然不止这样如果还有更多呢


    image.png

    缺点:

    1. 当每个通信线路单独运行时,团队有可能会做重复的操作,会资源浪费

    2. 信息过多。无法同步时会造成信息丢失

    3. 各个程序相互依赖,耦合度太高

    解决方法

    image.png

    消息,生产者,消费者

    1. 消息:数据库的一条数据

    2. 生产者发布消息

    3. 消费者接收消息

    image.png

    问题:不同的消费者想要的不一样怎么办?

    主题(topic)

    如果我只要看,校园论坛的篮球,我只要订阅论坛篮球主题就OK了


    image.png

    分区(partition)

    1. 指定分区

    image.png

    2. 不指定分区

    分区器会根据键来进行分区

    键:一个标示
    分区器:一个算法

    image.png image.png
    1. 顺序读取
    2. 分区的下标都是唯一的


      image.png
    image.png image.png

    会用一个大的broker 会有一个控制器,来分发,监控作用

    broker1等于 broker2的数据,第一安全不会数据丢失,第二


    image.png

    当然是不会这么简单的。这是个大概而已,
    比如

    image.png

    我们先分析一波。每个的身份
    首先我们是分布式订阅系统肯定是要集群的那么同一个主题,在别的服务器就叫副本,那我总结一下吧,

    当我们同一个主题,在集群中会有一个大哥叫leader,。其他都是小弟,小弟还有一个名字叫follower,大哥只能有一个,小弟可以有多个

    kafka工作流程

    生产者要发消息,生产者会找到我那个主题的大哥,然后把消息给大哥,大哥收到消息会找个地方储存起来,当大哥储存起来后,小弟知道大哥存贮成功后,会主动来找大哥复制一份消息,当小弟复制完并且存贮起来后,就会返回一个标示(ack),告诉大哥我存贮成功了,当大哥收到所有小弟的标示(ack),大哥就会向生产者发送一条标示(ack),来告诉生产者,我和我的小弟都存贮了一份成功了,然后在把消息发给消费者

    1.⽣产者从Kafka集群获取分区leader信息
    2.⽣产者将消息发送给leader
    3.leader将消息写入本地磁盘
    4.follower从leader拉取消息数据
    5.follower将消息写入本地磁盘后向leader发送ACK
    6.leader收到所有的follower的ACK之后向生产者发送ACK

    手册

    image.png

    相关文章

      网友评论

          本文标题:了解大数据kafka

          本文链接:https://www.haomeiwen.com/subject/mytjahtx.html