• Kafka入门知识点


    这里转载一篇B站上比较好理解的内容,非原创!转载连接小朋友也可以懂的Kafka入门教程,还不快来学_哔哩哔哩_bilibili

    1、介绍

            Kafka是个消息发布于订阅的系统,可以想象一下公众号,作者把文章发布到平台上,阅读者只需要去订阅相应的公众号,有新文章发布的时候就可以阅读这篇文章了,这种发布者和阅读者没有直接沟通,而是通过中间站来传递消息就是发布于订阅模式了。这个模式是一种必然.....

    当只有一个程序向另一个程序发送消息时:

            这只有一条链路。

    当很多个应用程序向其他很多程序发送消息时:

        这个链路会变得复杂,出现这个情况可能还是可以接受的....

    当链路越来越多时:

     

     这样链路太多容易造成三个问题:第一团队之间可能进行着重复的工作造成资源的浪费;第二当信息过多无法及时同步时,会造成信息的丢失;第三,各个程序之间相互依赖,耦合度太高,可能会牵一发而动全身。

    这时候就需要一个中间的服务平台,Kafka就是这样一个东西。简单来说Kafka可以接收不同生产者消息,然后让不同消费者来订阅这些消息。

     2、消息、生产者、消费者

    消息:可以认为是数据库里的一行数据;生产者:就是发布消息的程序;消费者:就是订阅消息的程序。Kafka就相当于一个管道,所有的生产者把消息扔到这里,所有消费者都从这里拿消息。

    那就会有一个问题:消费者如何拿到自己想要的消息呢?主题(Topic)!

    3、主题与分区

            生产者将消息放入Kafka时需要给消息分好主题,而消费者则会订阅不同的主题;比如圆宝宝只需要圆蛋蛋的主题,它就会订阅主题定语圆蛋蛋的消息,这样所有圆蛋蛋的消息圆宝宝都可以拿到,而且不会被方框框和小心心的消息干扰。

     一个主题里面可能会包含多个分区,分区可以分布在不同的服务器上,这样一个主题也就可以分布在多个服务器上,这样会比单个服务器更强大。

    如下图所示,生产者会把消息放入到相应的主题的相应的分区下面,那应该怎么知道消息该放入哪个分区里呢?

            这里可以分为两种情况:1、生产者指定了分区;2、如果生产者没有指定分区,分区器会根据消息里的键来决定消息的去处.....

     4、分区器与键

    键:就是一个标记;分区器:一个算法。

    这样我们就知道一条消息包含了:主题、分区、键和值,这样它才能找到相应的去处。

    那我们消费者如何读取数据呢? 

    5、偏移量

    消费者在读取数据的时候都是说“给我partion 0的第二个”,这个第几个就是偏移量了

     偏移量在写入的时候就已经被定义好了,我们的消费者在读取数据时都是根据偏移量来读取数据的。

    1、偏移量(offset):第几个;2、一个分区里,每个消息的偏移量都是唯一的;3、消费者只能顺序读取

     6、Kafka

    kafka使用主题来组织数据,每个主题被分为如干个分区,每个分区有多个副本。那些副本被保存在broker上,每个broker可以保存成百上千个属于不同主题和分区的副本。

     一个独立的kafka也称为broker,一个broker中可能有多个主题,每个主题里面又可能有多个分区,broker接收来自生产这的消息,为每个消息设置相应的偏移量,然后保存到磁盘里,broker也为消费者提供服务,响应消费者的请求。 如果有多个broker就会组成Kafka集群。

    7、Kafka集群

     这是由两个broker组成的kafka集群,broker1里有主题:圆蛋蛋 分区1、主题:圆蛋蛋分区2;broker2里有主题:圆蛋蛋分区0、主题:圆蛋蛋分区1。这样的重复性保证了数据的安全,当broker1宕机了,broker2里的数据是完好的,可以从broker2内读取数据。

    kafka集群中还需要一个broker来充当控制器的角色,可能要处理一些分区该分配给哪个broker,监控哪个borker挂机了这种事情。

  • 相关阅读:
    Spring注解之@ExceptionHandler 统一异常处理和获取方法名
    vue3 快速入门系列 —— 其他API
    【译】拥抱 SQL Server 2022 与 SSDT 17.8:揭示关键更新
    docker自定义镜像
    LoongArch 指令集设计——单周期5条指令exp5
    防火墙实验一
    国家开放大学 练习题
    【云原生 | Kubernetes 系列】----污点与容忍
    etcd详解
    3.3背景平铺
  • 原文地址:https://blog.csdn.net/qingxiao__123456789/article/details/126050601