自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FightingITPanda的博客

及时总结、积累,滴水石穿

  • 博客(220)
  • 收藏
  • 关注

原创 kafka 入门到起飞 - 举个栗子一步一步说HW、LEO如何写入

举个简单栗子,如上图。

2023-08-17 20:46:13 203

原创 Kafka 入门到起飞 - 什么是 HW 和 LEO?何时更新HW和LEO呢?

高水位可以理解为一个`横切面`,存储的也是`Offset`(位移)值,木水桶原理

2023-08-16 22:46:05 1753 1

原创 Kafka 入门到起飞 - Kafka是怎么保证消息可靠性的呢

在这里插入图片描述我们已经了解到,复习一下创建topic时,可以指定副本因子轮询Leader 副本只有一个,负责读写,其他节点都是Follower副本,Producer 只把消息发送到Leader分区,Follower副本负责从Leader同步数据ISR 同步副本列表 (包含Leader)当前时间为了保证可靠性,可以设置确认机制ack= all。

2023-08-15 22:15:54 380

原创 Kafka 入门到起飞系列 - 怎么从ISR中选出的Leader呢? Leader选举机制

上文我们讲了分区分成Leader 和 Follower两种角色,当Leader宕机后,会从ISR同步副本中选出一个分区作为leader分区继续工作,那么leader是怎么选出来的呢?

2023-07-27 18:59:04 217

原创 Kafka入门到起飞系列 - 副本机制,什么是副本因子呢?

我们一直在讲一个主题会有多个分区,这多个分区可以分布在一台服务器上,也可以分布在多台服务器上,还可以增加分区(Kafka目前只支持分区),这是Kafka提供的一种横向扩展的手段比如我们创建了一个主题,给主题分配50个分区(这个数不大,_consumer_offset主题默认就50个分区),每个分区放在不同的broker上,那么我们要保证这50台服务器都不能宕机,一旦服务器宕机,分区数据就丢失了,保障服务不宕机这是很难的,所以Kafka给我们提供了副本机制。

2023-07-27 18:23:29 1198

原创 Kafka 入门到起飞系列 - 到底什么是再平衡?谁来执行再平衡呢?什么是组协调器呢?

每个消费组分配一个组协调器,用于组管理和位移管理消费组的第一个消费者启动后,会和Kafka broker确认,谁是组协调器(是一个broker)之后启动的所有消费者需要和该组协调器保持通信,发送心跳由组协调器来检测消费者的增加和减少,确认何时出发再平衡。

2023-07-27 15:42:11 217

原创 Kafka 入门到起飞系列 - 消费者组管理、位移管理

消费者组是Kafka 提供的可扩展且具有容错性的消费者机制。

2023-07-27 14:49:49 711

原创 Kafka 入门到起飞系列

Kafka 入门到起飞系列[Kakfa 为什么牛? 为什么这么火?有什么优势呢?](https://blog.csdn.net/FightingITPanda/article/details/131941293)[工欲善其事,必先利其器 - 核心概念(术语解释)](https://blog.csdn.net/FightingITPanda/article/details/131710912)Kakfa 为什么牛? 为什么这么火?有什么优势呢?工欲善其事,必先利其器 - 核心概念(术语解释)

2023-07-26 20:07:17 1117

原创 Kakfa 入门到起飞 - 什么是再平衡?什么时候会触发再平衡呢?Kafka为什么遭大家诟病了呢?

那么为什么大家会诟病再平衡这个事呢,因为在再平衡过程中,消费者组下的所有消费者需要暂停,无法从Kafka消费消息,这样Kafka的消费能力突然就下来了,如果Kafka集群比较大,几百个节点,那么再平衡会消耗非常多的时间,几分钟到几小时都有可能,这个时间内Kafka基本处于不可用状态。消费主题数变更的情况就是,当消费者组订阅主题通过正则或者通配符的方式,比如topic.*这样,当新增一个主题topic.A,那么相当于这个新增主题下的消息自动被当前消费者组订阅了,需要将分区进行分配,那么就会触发一次再平衡。

2023-07-26 19:50:43 300

原创 Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?

如果上面结构还不够,两个消费者消费速度依然跟不上,那么我们还可以继续添加消费者,添加到4个消费者,此时主题分区与消费者的关系再次发生变化,需要再平衡,此时一个消费者消费一个分区消息,达到并行消费的效果。如上图,当前只有一个消费者组订阅这个Topic,消费者组里只有一个消费者,那么当前Topic中所有分区的消息都由这个消费者消费。消费者也不是越多越好,消费者数受限于分区数, 过多消费者会导致有的消费者没有分配分区导致空闲,如下图。如上图,消费者组扩展一个消费者后,消费者1、2分别消费两个分区的消息。

2023-07-26 17:52:14 2270

原创 Kafka 入门到起飞 - 生产者参数详解 ,什么是生产者确认机制? 什么是ISR? 什么是 OSR?

我们在生产者发送消息时可以指定acks参数值,来决定收到消息发送后什么样的确认即可继续发送后面的消息acks : 生产者发送消息确认机制acks = 0: 生产者不等broker确认,不断发送消息,发送消息快,允许丢消息,只要将消息放到了socket的缓冲区,就认为消息已发送成功acks = 1:默认值,允许少量消息丢失,broker上leader分区写入消息即返回生产者消息确认,不等待follower副本分区的确认,这种情况下,存在消息丢失的风险acks = all。

2023-07-26 17:03:31 767

原创 Kafka 入门到起飞系列 - Kafka 为什么牛? 为什么这么火?有什么优势呢?

在zk上记录这个数据就很不合适,zk每个节点能放的数据最大也就1M,zk主要是用来做服务注册与发现的一个协调服务,对高并发的一个偏移量的读写就不是它的强项, 所以后面的高版本里不在zk保存消息的偏移量了,直接在客户端保存 ,我们通常使用的DB都是关系型数据库,都是将数据持久化到磁盘中,数据的访问在对磁盘进行读写,我们都知道对磁盘进行IO比较慢,那么如何让读写速度加快呢,就产生了redis等产品,redis访问数据快是因为将数据都存储到内存去了;,来保证零数据丢失,除非连副本机器也偷走了,那没办法了哈哈,

2023-07-26 16:09:32 119

原创 Kafka 入门到起飞系列 - 磁盘存储 -零拷贝

Redis 是 在内存存储数据的,数据读取时不要经过磁盘的IO,只需要内存的操作,这也是redis访问速度快的原因Kafka背道而驰,,发送过来的数据交给Kafka后会落盘,消费者读取数据时,也是通过磁盘读取,发送给消费者减少不必要的拷贝次数。

2023-07-17 00:08:57 629

原创 Kafka 入门到起飞系列 - 生产者发送消息流程解析

批次的概念很好理解,缓冲区就像一辆公交车,有两种发车方式,一是人满了就发车,一是等5分钟就发车,不管是人满了还是到5分钟了,发车,go~Producer 创建时,会创建一个Sender线程设置为守护线程。Producer 生产消息,内部是一个异步流程。Producer 创建时,会创建缓冲区。

2023-07-16 17:29:31 1996 2

原创 Kafka 入门到起飞 - 核心概念(术语解释)

通常一个topic下的分区分散在kafka集群的不同实例(broker)上,producer向一个topic发送消息会发送给不同分区中,这样消息就可以实现并行发送与处理,增加吞吐量。当一台机器能力不足时,可以通过添加机器横向扩展broker,在新的机器上创建分区,这样就可以实现无限水平扩展。压缩带来的磁盘空间和带宽的节省,远大于CPU开销的代价,这样的压缩是值得的。消息顺序写入分区,每个分区时一个有序队列,kafka不保证跨分区消息有序。批次越大,单位时间内处理的消息越多,单个消息传输时间越长。

2023-07-14 15:57:52 1771

原创 撤销本地merge(合并过来一堆commit)未push

git merge之后,如何进行撤销

2022-10-17 12:22:18 5578 1

原创 idea一顿切换分之后编译项目提示找不到其他分支类的解决办法~

idea 一顿切换分支,编译项目失败,,提示找不到其他分支的类,提示找不到本分支不存在得类,,,

2022-09-24 13:12:56 1796 3

原创 spring boot 整合 swagger自动生成接口文档,搬砖都快乐了~

spring boot 整合 swagger 自动生成接口文档,搬砖都快乐了~

2022-08-12 14:01:34 1058 1

原创 ArrayList集合数据按字段排序,升序、降序

ArrayList集合数据按字段排序,升序、降序。

2022-08-11 15:50:59 980

原创 Eureka 流程 +原理

Register 服务注册Renew 服务续约Cancel 服务注销/下线Fetch Registries 获取注册列表信息Eviction 服务剔除⚠️开启自我保护时,client请求数15分钟内低于85%,Serber不会将剔除任何实例eureka 仪表盘中:renew threshold :为eureka server计算的60s应该收到心跳请求数量renew(last min): 为eureka server 上一分钟收到的心跳请求数量当 renew(last min)/ renew thre

2022-06-12 23:36:01 541

原创 panda白话 - Spring AOP 入门+实战

Spring 两大🐮特性:IOC 、AOP面试必问😄基本上大家都是对IOC理解比较深刻,Spring通过IOC容器帮我们管理bean嘛AOP其实使用也很广泛,只是你没咋关注过因为基本属于框架级的,基本配置一次就不用管了,那起码要看懂呀,let`s go~~AOP定义: Oriented Object Progamming (面向切面编程)概念:连接点 - joint point切入点 - point cut通知 - advice织入 - weaving切面.

2022-05-21 00:45:45 174

原创 Panda白话 - 再认识JAVA反射

最近学习路线:AOP原理 -> JDK 动态代理 -> java 反射真是人生无常,大肠包小肠呀~~反射定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。这个定义看了n遍,每次都是???(小朋友你是否有很多问号?)最近又看了书、文章、视频,有了新的理解,码下来。。万一对你有用知识储备(面试高频):类加载机制j.

2022-05-19 00:29:26 213

原创 Panda 白话 - MySQL 事务 - ACID、隔离级别、MVCC

先奉上大佬的肩膀:MySQL专题: 脏读、不可重复读、幻读区别MySQL事务隔离级别和实现原理轻松理解MYSQL MVCC 实现机制看一遍: 哦! -> 看两遍:嗯~ -> 看三遍:哦~~ -> 写一遍 :just so soACID - 衡量事务的4个特性A - Automacity : 原子性 - 事务不可分割,要么全部提交成功,要么全部失败回滚C - Consistency - 一致性 - 事务开始前和结束后,数据库完整性约束没有被破坏I - Isol

2021-12-30 17:31:29 633

原创 Mybatis代码自动生成 - generatorConfig.xml -so so so so ..easy

二话不说,开炸~准备工作数据库,表新建个spring boot项目pom.xml 中引入 mybatis-generator 插件准备生成器配置文件 generatorConfig.xml昨天下班突然。。。今天继续。。。以上准备够用,开始吧 1、准备库-panda_local、表-panda ,介么简单,不说了~ 新建个spring boot项目 pom.xml 中引入 mybatis-generator 插件 准备生成器配置文件 generatorConfig.xml.

2021-12-30 10:18:10 542

原创 panda 白话 - 磁盘结构

磁盘结构硬盘大小 = 磁头数 × 柱面数 × 扇区数 × 每个扇区大小磁头数 - Heads - 硬盘的盘面数 × 2 (正反面)柱面数 - Cylinders - 硬盘的每个盘面有几个磁道扇区数 - Sectors - 每个磁道上面有几个扇区扇区大小 - 一般512byte盘片盘片是一个扁平的圆盘,类似于唱片,每个盘片有两个面,正面为 0面,反面为 1面盘面上有很多圆圈,称为 磁道数据记录在磁道上磁道:每个盘片上一圈一圈的同心圆- 就是 磁道最外圈磁道是0

2021-12-28 13:50:00 661

原创 panda白话 - G1垃圾收集器 - Mixed GC - 并发标记阶段 - 源码分析

G1垃圾收集 - Mixed GC:初始标记阶段 - Initial Mark并发标记阶段 - Concurrent Mark最终标记阶段 - Remark清理阶段 - Clean Up并发标记阶段 - Concurrent Mark特性:与Mutator并发进行以初始标记的根出发进行深度扫描根分区扫描步骤:scanRootRegions扫描所有survivor分区scanRootRegion 逐个region进行扫描处理[bootom, top]区间内所有的对象gra.

2021-12-15 15:15:29 820

原创 Python - 读Excel数据落库 - 手把手教学

背景:有一批数据业务只能线excel的方式给excel与数据表结构不一致当然可以直接通过navicat导入excel数据,but、、python也得用起来呀let us go ~准备:编辑器 - 写代码得有开发工具啊,pyCharm也行、本文idea 2020.3python 解释器 - 直接通过idea插件方式安装即可导包 - 需要啥导啥步骤:1 idea 安装python 插件File -> Settings -> plugins -> Market

2021-12-15 10:46:38 2871

原创 panda白话 - G1垃圾收集器 - Mixed GC - 初始标记(根分区扫描)源码分析

G1垃圾收集 - Mixed GC:初始标记阶段 - Initial Mark并发标记阶段 - Concurrent Mark最终标记阶段 - Remark清理阶段 - Clean Up初始标记阶段 - Initial Mark - 根标记特性:STW以Young GC后的survivor分区作为根进行扫描扫描的是survivor 分区到老年代Region对象的引用所以Mixed GC 一定发生在Young GC 之后根分区扫描步骤:scanRootRegions扫描所.

2021-12-10 17:36:23 1009

原创 Panda白话 - G1垃圾收集器 - SATB、写屏障

Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB上文讲到G1在并发标记过程中,通过三色标记法来标记存活对象, 三色标记法存在漏标问题,会影响程序正确性, G1采用SATB方案解决漏标问题,本文我们就来重点分析一下SATBSATB - Snapshot At The Beginning 初始快照由Taiichi Yuasa开发的一个算法 - 首先它是一种思想主要用于GC的并发标记阶段记录并发标记是mutator修改的引用记录,remark阶段(STW)无需全量重新扫.

2021-12-10 15:10:43 1797

原创 Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB

三色标记法:GC HandBook把对象分成三种颜色:黑色(Black) - 根对象,自身及可达对象都已经被标记灰色 (Grey) - 自身已经被标记,可达对象还未被标记白色 (White) - 还未被标记、垃圾对象举个栗子吧:A.b = new B();B.c = new C();C.d = new D();如上图、有这么个引用关系:A对象有个field(成员变量)b,引用了B对象(存储B对象的物理地址),field c没有引用B对象有个field(成员变量)c,引用了C

2021-12-09 17:42:26 1285

原创 Panda白话 - G1垃圾收集器 之 Refine线程

Refine线程:G1引入的并发线程池线程数 = G1ConcRefinementThreads+1 (默认)Refine线程的功能:处理新生代分区的抽样 - 更新YHR(Young Heap Region)的数目管理RSet处理新生代分区的抽样:功能: 设置YHR - 新生代分区的个数,使G1满足GC的预测停顿时间-XX:MaxGCPauseMillis抽样方法 - 关键源码:concurrentG1RefineThread.cppvoid ConcurrentG1Refi.

2021-11-23 18:58:34 1178 1

原创 Panda 白话 - G1垃圾收集器 之 RSet(Remembed Set)源码解读

G1的知识点越看越多,这个RSet和卡表老也整不明白,单拎出来白话一下吧~我们已经知道G1将堆内存划分为2048个(默认、可调整)大小相等的Region,新创建的对象都是放在新生代Eden区。Region分为5中类型:YHR - Yound Heap Reagion :年轻代分区ERH - Eden Heap Region : eden区,伊甸园,放新创建对象SRH - Survivor Heap Region : Survivor 区,存货去,放每次GC后存活对象OHR - Old.

2021-11-19 18:12:30 1760 6

原创 Panda白话 - G1垃圾收集器

are you ready~~知识点太多,肝一篇长文~,let us go ~~G1 - Garbage First 垃圾收集器What is G1:见名思议,garbage first,垃圾优先,先回收垃圾多的region,region你还不知道是啥,往下看

2021-11-15 21:28:44 1630 1

原创 Panda白话 - Synchronized底层同步机制

Synchronized 都用过,那么它是怎么做到简单修饰一下就能做到并发场景下资源同步的呢?让我们来揭开它神秘的面纱~JDK6以前它是重量级锁,很笨重,就是当一个线程t1访问同步资源时,立马上锁,其它线程过来竞争锁的话直接阻塞,然后等待t1释放锁,线程唤醒再去上重量级锁,线程的阻塞和唤醒需要OS切换CPU(内核态与用户态)的状态来完成,这个状态转换消耗处理器时间,开销大,影响性能,so~ 在JDK 6 引入了偏向锁(默认开启偏向锁) 和 轻量级锁所以现在有四种锁状态,无锁 -> 偏向锁 -&

2021-10-26 16:49:17 213

原创 Panda白话 - volatile

之前看的抓心挠肝,多看几遍混熟了一点~ 赶紧码下来~volatile 是什么volatile 是一个类型修饰符,只能修饰共享变量volatile 什么用看这个单词的意思,不稳定的,易变的,可以看出,专治这些易变易产生问题数据,嘎嘎1、程序并发执行过程中,对共享变量的修改其他线程可见,即数据可见性、一致性2、防止指令重排导致程序异常先来做个知识储备和普及~共享变量共享变量指的是并发中,不同线程访问主存中同一数据的变量,主存是给所有CPU共享的,大家伙都要用这个变量,那它就是共享变量,我

2021-10-19 19:48:54 173

原创 Panda白话 Reactor -背压策略

上回书我们讲了元素采样和延迟响应操作符 - 传送门五、背压策略背压:下游消费速度跟不上上游发送数据速度,导致阻塞或异常,进而影响上游。reactor提供了集中背压策略onBackPressureBuffer - 顾名思义,来不及消费的数据先缓存在队列里onBackPressureDrop - drop,丢掉,来不及消费的数据直接扔掉onBackPressureLatest - 保留最新数据,一旦下游请求出现,立即推向下游onBackPressureError - 下游消费速度跟不上,直接抛异

2021-07-29 15:06:58 1161

原创 Panda白话 Reactor -操作符-系列四

上回书我们讲了扁平处理操作符 - 传送门四、元素采样操作符-sample、sampleTimeout采样,就是抽取的意思,取样、抽查,这么个意思sample - 隔一个时间段取样一个元素,其它不要public final Flux<T> sample(@NotNull java.time.Duration timespan)弹珠图:可以看到,原始响应式流序列为:先订阅了一个元素然后隔一段时间取下一个元素,没取到,再隔一个时间段取到元素,然后原序列发送了一个黄球,但是还

2021-07-29 10:49:46 411 2

原创 Panda白话 Reactor -操作符-系列三

上回书我们讲了订阅流操作符 - 传送门三、数据扁平处理操作符-flatMap VS concatMap VS flatMapSequential扁平处理就是一个拍扁的动作,元素都放同一个层级扁平处理前 - 流 - 3个元素【1、2、3】 、 【“hello”,“panda”】、【33,44,55】扁平处理后 - 流 - 8个元素【1、2、3、“hello”、“panda”、33、44、55】flatMap VS concatMap VS flatMapSequential* flatMap =

2021-07-28 14:51:04 407

原创 Panda白话 Reactor -操作符-系列二

​上回书我们讲了创建流的几种操作符 - 传送门这回书我们讲订阅响应式流操作符Flux提供了很多种重载的订阅方法,我们找一些常用的搞的demo实战一下吧1、Flux.subscribe() - 不处理任何信号、常与doOnXXX方法一起使用Flux.subscribe(Consumer dataConsumer) 只处理onNext数据信号demo:1、创建一个流,放俩字符串2、订阅,对订阅到的元素数据逐个拼接“hello” 再打印Flux.just("kongfu","panda")

2021-07-27 18:06:21 265

原创 Panda白话 Reactor -操作符-系列一

哈哈哈,这个标题一语双关啊,东北话的“白话”就是瞎白话的意思,java中是化繁为简、深入浅出、讲的浅显易懂的意思。1、创建流发布者-Publisher Reactor提供两个发布者 Flux 和Mono订阅者-Subscriber首先我们理解一下啥是流,流就像一个管道,我们可以逐个往里推数据,啥类型都行,那啥是订阅呢,Publisher和Subscriber是一对多的模式,管道是公共的啊,你想用这个数据,得先从管理里把数据取出来吧,就是订阅,写几个demo来感受一下:Flux.just

2021-07-27 17:15:11 300

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除