欢迎光临
大白话认识 Kafka 背后优秀的架构设计
   

大白话认识 Kafka 背后优秀的架构设计

按照刚刚前面提到的消息系统的作用,我们知道了消息系统其实就是一个模拟缓存 ,且仅仅是起到了缓存的作用 而并不是真正的缓存,数据仍然是存储在磁盘上面而不是内存。

1.Topic 主题


kafka学习了数据库里面的设计,在里面设计了topic(主题),这个东西类似于关系型数据库的表

大白话认识 Kafka 背后优秀的架构设计,第1张

此时我需要获取中国移动的数据,那就直接监听TopicA即可

2.Partition 分区


kafka还有一个概念叫Partition(分区),分区具体在服务器上面表现起初就是一个目录,一个主题下面有多个分区,这些分区会存储到不同的服务器上面,或者说,其实就是在不同的主机上建了不同的目录。

这些分区主要的信息就存在了.log文件里面。跟数据库里面的分区差不多,是为了提高性能。

大白话认识 Kafka 背后优秀的架构设计,第2张

至于为什么提高了性能,很简单,多个分区多个线程,多个线程并行处理肯定会比单线程好得多

Topic和partition像是HBASE里的table和region的概念,table只是一个逻辑上的概念,真正存储数据的是region,这些region会分布式地存储在各个服务器上面,对应于kafka,也是一样,Topic也是逻辑概念 ,而partition就是分布式存储单元。这个设计是保证了海量数据处理的基础。

我们可以对比一下,如果HDFS没有block的设计,一个100T的文件也只能单独放在一个服务器上面,那就直接占满整个服务器了,引入block后,大文件可以分散存储在不同的服务器上。

注意:1.分区会有单点故障问题,所以我们会为每个分区设置副本数

2.分区的编号是从0开始的

3.Producer - 生产者


往消息系统里面发送数据的就是生产者

大白话认识 Kafka 背后优秀的架构设计,第3张

4.Consumer - 消费者


从kafka里读取数据的就是消费者

大白话认识 Kafka 背后优秀的架构设计,第4张

5.Message - 消息


kafka里面的我们处理的数据叫做消息

二、kafka的集群架构

================

创建一个TopicA的主题,3个分区分别存储在不同的服务器,也就是broker下面。Topic是一个逻辑上的概念 ,并不能直接在图中把Topic的相关单元画出

大白话认识 Kafka 背后优秀的架构设计,第5张

需要注意:kafka在0.8版本以前是没有副本机制的,所以在面对服务器宕机的突发情况时会丢失数据,所以尽量避免使用这个版本之前的kafka

Replica - 副本


kafka中的partition为了保证数据安全,所以每个partition可以设置多个副本。

此时我们对分区0,1,2分别设置3个副本(其实设置两个副本是比较合适的)

大白话认识 Kafka 背后优秀的架构设计,第6张

而且其实每个副本都是有角色之分的,它们会选取一个副本作为leader,而其余的作为follower,我们的生产者在发送数据的时候,是直接发送到leader partition里面 ,然后follower partition会去leader那里自行同步数据,消费者消费数据的时候,也是从leader那去消费数据的 。

大白话认识 Kafka 背后优秀的架构设计,第7张

Consumer Group - 消费者组


我们在消费数据时会在代码里面指定一个group.id,这个id代表的是消费组的名字,而且这个group.id就算不设置,系统也会默认设置

conf.setProperty(“group.id”,“tellYourDream”)

我们所熟知的一些消息系统一般来说会这样设计,就是只要有一个消费者去消费了消息系统里面的数据,那么其余所有的消费者都不能再去消费这个数据。可是kafka并不是这样,比如现在consumerA去消费了一个topicA里面的数据。

consumerA:

group.id = a

consumerB:

group.id = a

consumerC:

group.id = b

consumerD:

group.id = b

再让consumerB也去消费TopicA的数据,它是消费不到了,但是我们在consumerC中重新指定一个另外的group.id,consumerC是可以消费到topicA的数据的。而consumerD也是消费不到的,所以在kafka中,不同组可有唯一的一个消费者去消费同一主题的数据 。

所以消费者组就是让多个消费者并行消费信息而存在的,而且它们不会消费到同一个消息,如下,consumerA,B,C是不会互相干扰的

consumer group:a

consumerA

consumerB

consumerC

大白话认识 Kafka 背后优秀的架构设计,第8张

如图,因为前面提到过了消费者会直接和leader建立联系,所以它们分别消费了三个leader,所以一个分区不会让消费者组里面的多个消费者去消费 ,但是在消费者不饱和的情况下,一个消费者是可以去消费多个分区的数据的 。

Controller


熟知一个规律:在大数据分布式文件系统里面,95%的都是主从式的架构,个别是对等式的架构,比如ElasticSearch。

kafka也是主从式的架构,主节点就叫controller,其余的为从节点,controller是需要和zookeeper进行配合管理整个kafka集群。

kafka和zookeeper如何配合工作


kafka严重依赖于zookeeper集群(所以之前的zookeeper文章还是有点用的)。所有的broker在启动的时候都会往zookeeper进行注册,目的就是选举出一个controller,这个选举过程非常简单粗暴,就是一个谁先谁当的过程,不涉及什么算法问题。

那成为controller之后要做啥呢,它会监听zookeeper里面的多个目录。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

大白话认识 Kafka 背后优秀的架构设计,img,第9张

大白话认识 Kafka 背后优秀的架构设计,img,第10张

大白话认识 Kafka 背后优秀的架构设计,img,第11张

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

大白话认识 Kafka 背后优秀的架构设计,img,第12张

Spring全套教学资料

Spring是Java程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!目前99%的公司使用了Spring,大家可以去各大招聘网站看一下,Spring算是必备技能,所以一定要掌握。

目录:

大白话认识 Kafka 背后优秀的架构设计,第13张

大白话认识 Kafka 背后优秀的架构设计,第14张

部分内容:

大白话认识 Kafka 背后优秀的架构设计,第15张

大白话认识 Kafka 背后优秀的架构设计,第16张

Spring源码

  • 第一部分 Spring 概述
  • 第二部分 核心思想
  • 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
  • 第四部分 Spring IOC 高级应用

    基础特性

    高级特性

  • 第五部分 Spring IOC源码深度剖析

    设计优雅

    设计模式

    注意:原则、方法和技巧

  • 第六部分 Spring AOP 应用

    声明事务控制

  • 第七部分 Spring AOP源码深度剖析

    必要的笔记、必要的图、通俗易懂的语言化解知识难点

    大白话认识 Kafka 背后优秀的架构设计,第17张

    大白话认识 Kafka 背后优秀的架构设计,第18张

    脚手框架:SpringBoot技术

    它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。

    Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。

    • SpringBoot入门
    • 配置文件
    • 日志
    • Web开发
    • Docker
    • SpringBoot与数据访问
    • 启动配置原理
    • 自定义starter

      大白话认识 Kafka 背后优秀的架构设计,第19张

      大白话认识 Kafka 背后优秀的架构设计,第20张

      微服务架构:Spring Cloud Alibaba

      同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

      • 微服务架构介绍
      • Spring Cloud Alibaba介绍
      • 微服务环境搭建
      • 服务治理
      • 服务容错
      • 服务网关
      • 链路追踪
      • ZipKin集成及数据持久化
      • 消息驱动
      • 短信服务
      • Nacos Confifig—服务配置
      • Seata—分布式事务
      • Dubbo—rpc通信

        大白话认识 Kafka 背后优秀的架构设计,第21张

        大白话认识 Kafka 背后优秀的架构设计,第22张

        Spring MVC

        目录:

        大白话认识 Kafka 背后优秀的架构设计,第23张

        大白话认识 Kafka 背后优秀的架构设计,第24张

        大白话认识 Kafka 背后优秀的架构设计,第25张

        部分内容:

        大白话认识 Kafka 背后优秀的架构设计,第26张

        大白话认识 Kafka 背后优秀的架构设计,第27张

        a—分布式事务

        • Dubbo—rpc通信

          [外链图片转存中…(img-zUAOIvEF-1710753811917)]

          [外链图片转存中…(img-TDaNDI4k-1710753811918)]

          Spring MVC

          目录:

          [外链图片转存中…(img-K7DxpJFu-1710753811918)]

          [外链图片转存中…(img-Dh0VS9lR-1710753811918)]

          [外链图片转存中…(img-j754mBFl-1710753811918)]

          部分内容:

          [外链图片转存中…(img-Gn7PYMhs-1710753811919)]

          [外链图片转存中…(img-VbgRe8xh-1710753811919)]

          本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

           
打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《大白话认识 Kafka 背后优秀的架构设计》
文章链接:https://goodmancom.com/wl/176053.html