六、简述kafka的Rebalance【偏向实战,有难度】

1、背景

kafka日志:在消息量大、高并发时,经常会出现rebalance中

rebalance会影响kafka性能,会阻塞partition的读写操作

2、了解其机制,以避免rebalance的发生

3、Rebalance是什么

coordinator:leader节点所在的broker,作为一个协调者,监控cg中消费者的存活,判断consumer是否消费超时

七、kafka的副本同步机制

注意:LEO从哪落盘、HW从哪消费【更新】、最后已被消费、最先待消费、起始的offset

leader(处理读写请求)和多个follower(负责数据同步),主备模式

根据offset判断消费到了哪里

LEO:待写入数据的index

HW:HW前(下面)的数据对消费者可见,能够被消费者消费

第一条未提交的数据

最后一条已提交的数据

leader和follower都有HW,LEO会选择ISR中最小的HW和自身LEO进行写入,LEO落盘后,进行+1

当leader挂掉,变为follower后,follower的HW会覆盖当前节点的HW,从而会导致数据的丢失

消息丢失的解决,会在后面讲述

八、简述kafka的架构设计

zk管理集群,存储一些元信息,作为znode中的一个节点

topic类似于queue,特点是可以分区

cg中不同的consumer消费同一topic的不同分区【cg是逻辑上的概念,实际上还是一个消费者】

如果指定同一消费者组的多个消费者同时消费某个分区,则多个消费者则会互斥,消息不会被重复发送

九、kafka中zk的作用(老版本)

1、后续zk的作用越来越小

2、哪些作用

无生产者信息,broker、topic、partition

十、kafka中高性能的原因

指其读写很快

顺序写、零拷贝

1、顺序写

kafka是一个日志系统,写到文件中

不是存入内存中,消息堆积能力强

硬盘是用磁头随机读写,而kafka是通过顺序写的方式(HBASE)

2、零拷贝

直接从磁盘读入网卡中

通过操作系统来实现

3、不依赖于java堆内存

使用操作系统的pageCache,进行读写

【消息队列面试】6-10:Rebalance机制、副本同步机制、架构设计、zk的作用、kafka的高性能的更多相关文章

  1. Kafka 0.8 副本同步机制理解

    Kafka的普及在很大程度上归功于它的设计和操作简单,如何自动调优Kafka副本的工作,挑战之一:如何避免follower进入和退出同步副本列表(即ISR).如果某些topic的部分partition ...

  2. Zookeeper的选举机制和同步机制超详细讲解,面试经常问到!

    前言 zookeeper相信大家都不陌生,很多分布式中间件都利用zk来提供分布式一致性协调的特性.dubbo官方推荐使用zk作为注册中心,zk也是hadoop和Hbase的重要组件.其他知名的开源中间 ...

  3. 消息队列RabbitMQ(二):RabbitMQ的系统架构概述

    前言 RabbitMQ是基于AMQP协议的,要想深入理解RabbitMQ,就必须先了解AMQP是个什么东东? AMQP协议 AMQP即Advanced Message Queuing Protocol ...

  4. 内核同步机制-RCU同步机制

    转自:https://blog.csdn.net/nevil/article/details/7718375 转自http://www.360doc.com/content/09/0805/00/36 ...

  5. Kafka副本同步机制

    引用自:http://blog.csdn.net/lizhitao/article/details/51718185 Kafka副本 Kafka中主题的每个Partition有一个预写式日志文件,每个 ...

  6. java 异步机制与同步机制的区别

    所谓异步输入输出机制,是指在进行输入输出处理时,不必等到输入输出处理完毕才返回.所以异步的同义语是非阻塞(None Blocking). 网上有很多网友用很通俗的比喻  把同步和异步讲解的很透彻 转过 ...

  7. js-异步机制与同步机制

    Javascript的优势之一是其如何处理异步代码.异步代码会被放入一个事件队列,等到所有其他代码执行后才进行,而不会阻塞线程 1 理解异步代码: 1.1 JavaScript最基础的异步函数是set ...

  8. nginx源代码分析--进程间通信机制 & 同步机制

    Nginx源代码分析-进程间通信机制 从nginx的进程模型能够知道.master进程和worker进程须要通信,nginx中通信的方式有套接字.共享内存.信号.对于master进程,从外部接受信号, ...

  9. 转载:消息队列MQ

    本文大概围绕如下几点进行阐述: 为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的 ...

  10. 一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬

    消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL, ...

随机推荐

  1. 8.云原生之Docker容器镜像构建最佳实践浅析

    转载自:https://www.bilibili.com/read/cv15220861/?from=readlist 本章目录 0x02 Docker 镜像构建最佳实践浅析 1.Dockerfile ...

  2. Linkerd、Consul、Istio、Kuma、Traefik、AWS App服务网格全方位对比

  3. git pull提示如下信息时候的操作

    执行git pull时提示信息如下: There is no tracking information for the current branch. Please specify which bra ...

  4. ingress-nginx自带认证功能【nginx自带】

    问题:通过nginx可以给某些web网站设置登录使用的用户名和密码,现在网站部署到k8s中,通过配置nginx-ingress->service->pod来访问的,怎么给这个网站再配置上访 ...

  5. .Net 7内容汇总(3)--反射优化

    反射这玩意,一直以来都是慢的代名词.一说XXX系统大量的反射,好多人第一印象就是会慢. 但是呢,我们又不得不使用反射来做一些事情,毕竟这玩意可以说啥都能干了对吧. It's immensely pow ...

  6. Python实现给图片加水印功能

    前言 最近忙得连轴转,很久没更新博客了,代码倒是没啥写,积累了好些东西,接下来一有时间就来更新吧~ 本文记录使用Python实现给图片添加水印的功能实现过程 先看效果 把公众号的封面作为素材 原图是这 ...

  7. 手把手教你使用LabVIEW OpenCV DNN实现手写数字识别(含源码)

    @ 目录 前言 一.OpenCV DNN模块 1.OpenCV DNN简介 2.LabVIEW中DNN模块函数 二.TensorFlow pb文件的生成和调用 1.TensorFlow2 Keras模 ...

  8. hive数据导出到linux本地

    方法1(hive下执行):insert overwrite local directory 'Linux本地目录' row format delimited fields terminated by  ...

  9. 邻接矩阵dfs

    #include<bits/stdc++.h> using namespace std; int a[11][11]; bool visited[11]; void store_graph ...

  10. ARC144 D - AND OR Equation

    ARC144 D - AND OR Equation Solution 首先可以猜测和答案仅和每一个二进制位以及\(f(0)\)有关系,不妨把按位\(\operatorname{AND}\)和按位\( ...