kafka

文章目录

  • kafka
    • 前言:kafka设计
    • kafka相关概念
    • kafka与其他消息中间件相比,优劣势
    • kafka操作指令
    • 问题思索

前言:kafka设计

  • 磁盘顺序读写

    kafka的消息是顺序写到磁盘文件的末尾,以此能提升写入性能。topic的每个分区都是一个文件,收到消息,kafka会把消息插入到文件的末尾。
    每个消费者对其订阅的topic都有一个offset来表示读取到了第几条数据。

  • 页缓存

    利用操作系统本身的page cache来优化读写性能,kafka的读写基于内存,速度快

  • 零拷贝

    减少应用程序与操作系统上下文切换

  • 分区分段 + 索引

    kafka 的消息按topic分类存放,一个topic的消息又是可以存放到多个partition,每个分区对应一个broker节点,这个符合分布式系统的设计思想。
    每个分区又会分段,消息实际上存放在各个分区的segment上,每次文件操作就是操作这个segment,为了进一步的优化,kafka为每个分段文件建立一个索引文件。

    这种设计提高了读取速率,同时也提高数据操作的并行度。

  • 批量读写

    写入消息时,启用批次写入,这样可以避免在网络中频繁网络请求,提高吞吐量;

    //默认16kb,不宜过大,过大会有延迟
    batch.size=16384
    
  • 批量压缩

    //设置发送消息的缓冲区大小,默认32M
    buffer.memory=33554432
    //开启gzip压缩,减少网络`io`损耗
    compression-type: gzip
    

    批量读写和批量压缩都是kafka提高吞吐量的设计优点。

kafka相关概念

  • broker:存储消息

  • producer:生产者,发送消息

  • consumer:消费消息,完成消息的读取及后续的业务处理

  • consumer group:消费者组,管理一组消费者,同组消费者可以消费订阅的同一个主题的消息。

  • group coordinator:每个消费者组会选择一个broker来监控消费者组里面各个消费者的心跳情况,以及判断是否宕机,这个broker就是coordinator

    hash(groupId)/partition,找到分区所在的broker,作为coordinator

    rebalance:策略:

    ​ (1)range策略,按照分区范围进行消费

    ​ (2)round-robin,轮询

    ​ (3)sticky策略,尽量不懂属于原本消费者消费的分区,把空闲多余的分区在分配给各个存活的消费者

  • topic(逻辑上的概念)消息按topic进行分类

  • partition(分区,这个是真实的物理概念,每个分区都在不同的服务器上),对topic设置多个partition,所有的消息都会不断地追加到partition日志文件的末端,且每套消息都有自己的offset

  • 文件存储

    • .log文件(存储消息)
    • .index文件,用来定位消息
    • offset 消息相对偏移量
  • ack[all, -1, 0, 1]

    //0:请求发出去,不保证消息发送成功;1:leader partition写成功;-1:ISR列表里面,所有副本写入完成,这条消息才算发送成功
    kafka.producer.acks=1
    
    • ISR 保持同步的副本

    一个leader partition会维护一个ISR列表

    为了保证生产者发送消息成功,topic的每个分区在收到消息后,都要向producer发送ack消息确认,生产者收到ack就会发送下一个消息,否则重新发送

    acks=all集群副本同步主节点的消息成功,则发送ack,这样即使主节点挂掉,从节点也能及时选出新的主节点。

kafka与其他消息中间件相比,优劣势

  • 吞吐量高。tps达到百万

  • 单机支持的队列数不能过多

  • 不支持消息查询

  • 消息回溯

  • 不支持broker端类似tag的消息过滤

kafka操作指令

./kafka-topics.sh --describe --zookeeper ip:port --topic "topicname"
.kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --partitions 1 --replication-factor 1

问题思索

  1. kafka消息积压如何处理?

    分析原因:

    (1)消费者服务中间出现宕机,在这段时间生产者源源不断在生产消息就会积压;

    (2)消费者服务消费能力不足,需要增多消费者服务;

    (3)消费线程触发死锁或者资源等待;

    (4)消费者每次拉取消息的量太小,导致单位时间内生产的消息比消费的的消息量小,导致消息积压,需要加大拉取消息的量;

    处理:短时间内需要扩容消费者实例数来处理积压消息

  2. 如何保证顺序消费消息?

    (1)一个主题只创建一个分区;

    (2)生产者指定分区发消息;

【消息中间件】kafka技术探秘相关推荐

  1. apache kafka技术分享系列(目录索引)--转载

    原文地址:http://blog.csdn.net/lizhitao/article/details/39499283 kafka开发与管理: 1)apache kafka消息服务 2)kafak安装 ...

  2. 消息中间件 --- Kafka快速入门

    消息中间件 --- Kafka 快速入门 消息中间件:https://blog.51cto.com/u_9291927/category33 GitHub: GitHub - scorpiostudi ...

  3. 消息中间件的技术选型心得-RabbitMQ ActiveMQ和ZeroMQ

    消息中间件的技术选型心得-RabbitMQ.ActiveMQ和ZeroMQ 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs RabbitMQ.Active ...

  4. 高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper)

    高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper) 一.集群搭建要求 1.搭建设计 2.分配六台Linux,用于安装拥有三个节点的Kafka集群和三个节点的Zookeep ...

  5. [DEV] 陷阱技术探秘 ──动态汉化Windows技术的分析

    "陷阱"技术探秘 ──动态汉化Windows技术的分析 四通利方(RichWin).中文之星(CStar)是大家广为熟知的汉化Windows产品,"陷阱"技术即 ...

  6. 陷阱技术探秘 ----动态汉化Windows技术的分析

    "陷阱"技术探秘 ──动态汉化Windows技术的分析 四通利方(RichWin).中文之星(CStar)是大家广为熟知的汉化Windows产品,"陷阱"技术即 ...

  7. 陷阱技术探秘 ──动态汉化Windows技术的分析

    "陷阱"技术探秘 ──动态汉化Windows技术的分析 四通利方(RichWin).中文之星(CStar)是大家广为熟知的汉化Windows产品,"陷阱"技术即 ...

  8. 陷阱技术探秘 ──动态汉化Windows技术的分析 (转)

    "陷阱"技术探秘 ──动态汉化Windows技术的分析 (转)[@more@] "陷阱"技术探秘 ──动态汉化windows技术的分析 四通利方(RichWin ...

  9. 微服务 消息中间件kafka消息丢失问题

    微服务 消息中间件kafka消息丢失问题 1. kafka消息丢失概述 1.1 kafka概述 1.2 kafka架构 1.3 kafka问题 2. kafka消息传递语义 3. kafka消息丢失问 ...

最新文章

  1. Linux下bash的PS1
  2. Memcached学习---(1) 教程
  3. Discuz!NT实际安装流程
  4. Qt6程序打包(如何解决Qt程序在其他电脑上无法运行的问题)
  5. 都说人工智能入门难?但80%的人都错了……
  6. clickhouse 的mysql表引擎
  7. java异常处理:finally中不要return
  8. 转载:什么是良好的Verilog代码风格?(作者KellenWang)
  9. 深度学习网络架构(三):VGG
  10. robotframework 新建UI自动化测试用例实例一(2)
  11. STL Container
  12. Qt入门使用Qt编写程序详细全过程
  13. STM32程序下载1:通过keil-ST-Link方式下载
  14. 项目01——图书进、销、存(jxc)系统(单机版)
  15. Hibernate validator 官网前言中文版
  16. Origin源码阅读笔记——RPC
  17. PS网页设计_新手建站入门视频教程
  18. 01-css3动画之过渡详解 以及 实战纯css打造手风琴图片特效
  19. dubbo空指针异常
  20. Python 克莱姆法则求解方程组

热门文章

  1. 云顶之奕账号服务器的缩写,云顶之弈各服务器上线时间一览
  2. 产品经理——测试,验收和上线
  3. adobe是什么软件
  4. 六、JConsole性能分析
  5. 使用CSS让矩形图片只展示中间正方形区域且图片不变形(div/img两种标签)
  6. iPhone上最好用的像素画编辑器推荐2023
  7. 最后一个晚上了...
  8. 浅谈Blob及使用场景
  9. OCA、OCP、OCM傻傻分不清?
  10. 蓝桥杯2016年初赛 卡片换位Java