首页 > 其他分享 >kafka入门必备知识

kafka入门必备知识

时间:2023-07-02 20:57:07浏览次数:34  
标签:入门 必备 kafka topic 消息 当中 leader 分区

1. Kafka是一个分布式流处理平台:

  1. 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。
  2. 可以储存流式的记录,并且有较好的容错性。
  3. 可以在流式记录产生时就进行处理。

2. 消息系统:

定义

  1. 将数据从一个应用程序传递到另一个应用程序,通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
  2. 分布式系统利用消息系统,在多应用之间进行高效、稳定、安全的数据传递。
  3. 应用场景有跨系统数据传递、高并发流量削峰、数据异步处理。

两种消息模式:

  1. 点对点:若干个生产和消费者,处理队列当中的数据,一旦该数据被消费,则从队列当中被移除。(多线程:生产消费者模型)
  2. 发布-订阅:消息是被保留在主题当中,消费者一个消费一个或者若干个主题当中的消息

3. kafka的一些概念

1. 术语:

术语 术语
Topics(主题) Kafka Cluster(Kafka集群)
Partition(分区) Producers(生产者)
Partition offset(分区偏移) Consumers(消费者)
Replicas of partition(分区备份) Leader(领导者)
Brokers Follower(追随者)

2. 发布和订阅的流程

  1. 生产者向topic当中提交消息,Brokers将topic当中的数据在对应的分区当中依次保存;
  2. 消费者向Brokers请求获取消息,Brokers向消费者提供偏移量,消费者根据偏移量要求获取消息。
  3. 消费者排队的前提,消费者数量大于分区数量
  4. 同一个消费者组内的消息不会重复消费。

3. 生产者:

主要是消息提供者,根据业务需要往指定的topic推消息,一般也俗称为消息的上游。

4. 消费者:

  1. 要指定消费者的分组:默认情况下,分组是test
  2. 消费者可以同时消费若干个topic:
    1. 消息是已key-value格式进行发送
    2. 每个key如果重复发送,其偏移量会递增
    3. 新key的偏移量从0开始
  3. 消费者要放在一个独立的线程当中,才能始终处于消费状态
  4. Spring是没有办法直接给线程当中进行依赖注入的
  5. 消费者的线程如果要通知其他的任务执行,需要从Spring的bean当中获取相关的业务对象

5. kafka写消息的路由策略

  1. 如果指定分区:直接使用分区进行路由
  2. 指定了key,但是没有指定分区,那么会对key进行hash运算,通过运算的值得到一个分区
  3. 如果都没指定,那么会轮询写入一个分区

6. kafka写硬盘:

  1. 传统写硬盘是随机写
  2. kafka是顺序写硬盘,是随机写硬盘速度的6000倍
  3. 写数据的流程
    1. 首先找到leader
    2. 将消息写入leader的日志文件
    3. Followers(包含ISR中的成员,也包含不在ISR中的成员)会同步leader当中的消息,同步完以后会向leader发送一个ACK确认。
    4. leader在接收到isr所有成员的ACK确认后,正式提交commit保存

7. kafka的消息安全策略:

  1. 默认是保证一定成功(同步)
  2. 不重复发送,不保证成功(异步)

8. kafka的备份:

  1. 备份是由分区来创建的
  2. 一个分区有1个leader和0-n个follower,只要leader不宕机,所有的follower都宕机了也不影响读写。follower只负责数据备份,不负责数据读写。

9. Kafka的isr:

  1. 同步备份:保证isr集合当中至少存活一个,如果leader不挂,正常提供服务,如果leader挂了,重新选leader然后提供服务;每个分区都有自己的isr
    1. 备份的算法:
    1. 分区:分区编号,取余代理数量 (p_i mod b_num)
    2. 备份:分区编号 + 备份编号之和, 取余 代理数量(p_i+r_j) mod b_num
  2. 判定存活:配置延时replica.log.max.messages,replica.log.time.max.ms来判定是否宕机
  3. kafka如何解决zookeeper的压力的
    1. Kafka有容器机制
    2. 每一个代理会创建一个新的容器
    3. 容器负责维护leader的读写,和选举
  4. leader是在zk上竞争创建节点来获取leader资格,如果leader宕机,选举策略是所有的follower(ISR当中保存的成员)重新竞争创建节点,获取leader资格;容器会记录新的leader,并保持
  5. 如果所有的ISR成员都死亡:
    1. 等待ISR成员任意一个苏醒,但是这个过程是不可控的
    2. 默认:只要有一个不是isr的成员存活,把这个作为新的leader。但是并不能保证这个成员是否数据和原本leader数据一致。

10. kafka的数据保存:

  1. Kafka的日志分为两种,一种是运行日志;还有一种是用于保存消息的日志;
  2. 一个分区对应日志当中的一个目录
    1. 索引文件
    2. 数据文件
      1. 数据长度
      2. 数据类型
      3. 时间戳
      4. 偏移量
      5. Key
      6. Value
      7. 头信息
    3. 数据保留策略
      1. 时间:
      2. 大小:
      3. 注意:清理数据对kafka的读写没有任何影响
      4. Kafka是在硬盘磁道上进行顺序读写,所以性能和文件大小没有任何关系

11. topic的创建和删除流程:

  1. 创建topic,是首先获取代理的ids,然后将这些ids组成一个isr,作为一个新的容器
  2. 删除topic:
    1. 默认情况下delete.topic.enable=false;也就是被删除的节点会被移入zk的这个节点/admin/delete_topics
    2. 要彻底删除
    1. delete.topic.enable=true:一旦删除,容器会清空在/admin/delete_topics节点上的监听
    2. auto.create.topics.enable=false:自动创建主题,如果他为true,那么只要还有一个用户在往这个主题当中写消息,这个主题就不会真正被删除。即便是你已经删了,他依然还会创建一个出来。

标签:入门,必备,kafka,topic,消息,当中,leader,分区
From: https://www.cnblogs.com/yin-feng/p/17521364.html

相关文章

  • (一)kafka从入门到精通之初识kafka
    一、发布订阅系统在学习kafka之前,我们先来看看什么是发布订阅系统。概念数据的发送者不会直接把消息发送给接收者,这是发布与订阅消息系统的一个特点。发布者以某种方式对消息进行分类,接受者订阅它们,以便接受特定类型的消息。发布与订阅系统一般会有一个broker,也就是发布消息的......
  • (二)kafka从入门到精通之kafka的优势
    学习传送门(一)kafka从入门到精通之初识kafka一、常用消息队列比较基于发布与订阅的消息系统那么多,为什么Kafka会是一个更好的选择呢?咱们先来简单的看看mq的一个对比图吧。特性ActiveMQRabbitMQRocketMQKafka生产者消费者模式支持支持支持支持发布订阅......
  • 入门前端学习内容
    html css js es6(重要)axiosgitwebpacknodejsvue2和3uniapp,react和Typescript可以等到工作后再学UI组件库可以学下ElementUI,其中webpack和nodejs了解即可,其他的最好认真学习......
  • Kong入门学习实践(8)流量控制插件
    Kong的一大特色就在于强大的可扩展性,具体实现方式就是插件。一来Kong已经提供了很多内置的插件,二来我们也可以使用Lua语言自定义开发插件。今天,我们就来了解一些常用的流量控制插件。关于流量控制插件我们在实际应用往往会有一些场景需要限流和限频,从而管理入站和出站的流量。......
  • ASP.NET Core SignalR 入门
    本章将和大家分享使用SignalR生成实时应用的基础知识。通过本文您将学习如何:使用ASP.NETCoreSignalR+MVC+Vue2.x+require最终创建一个正常运行的简易聊天应用。废话不多说,我们直接来看一个Demo,Demo的目录结构如下所示:本Demo的Web项目为ASP.NETCoreWeb应用程序(目......
  • Linux 图形栈从入门到放弃 --- Linux 图形相关概念简介
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  在日常生活中,像我们常用的ubuntu(Linux),windows,android,mac等等系统,我们都能够看到丰富的图形界面。此外,如果大家了解过以前的嵌入式系统,很多......
  • LinuxDNS分析从入门到放弃(记一次有趣的dns问题排查记录,ping 源码分析,getaddrinfo源码
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  ubuntu18.04前言  我们这里有一块嵌入式板卡,当我们通过PING测试内网IP时,发现外网IP访问正常,但是测试域名访问一直报unknownhost。一般来说,在ubun......
  • Maven cheat sheet 手抄:从入门到无语
    Mavencheatsheet手抄写给懒人看的概念生命周期由阶段构成:validate,compile,test,package,verify,install,deploy基础基础编译:mvncleanpackage环境变量:MAVEN_HOME,MAVEN_OPTS,MAVEN_ARGS配置打印激活的配置:mvnhelp:active-profiles激活Profile:-Pprofi......
  • 工业机器人课程推荐 ROS机械臂开发从入门到实战
    ROS系统最早起源于2007年斯坦福大学人工智能实验室,是目前世界上较主流且使用人数众多的开源机器人操作系统。ROS的发展历史并不长,国内配套的资源也不够丰富,二次开发相对困难,大部分产品并不配备相应的支持包。为解决机械臂使用者的难题,我们引进了一款ROS系统的机械臂,它配备着相应......
  • Excel入门_2023/6/30
    常见用途整理记录(美化、简化)数据计算、分析数据展现难点问题数据量、计算效率、价值赋予、组织协作学习目标学习核心功能,解放学习思路,做到举一反三。学习方法  ......