自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 RocketMQ5 基于时间轮的延迟消息

RocketMQ老版本的延迟消息是基于定时任务扫描任务实现的,而RocketMQ 5 的延迟消息是基于时间轮实现的。

2025-08-10 01:05:08 338

原创 十、Redis的过期策略、淘汰策略

我们都知道Redis所有的数据结构都可以设置过期时间,时间一到,就会自动删除。但是当Redis的key过期的时候,具体是怎么处理的呢,如何让这个key失效的?过期策略所有的key的过期时间和key的信息都会存放到一个过期字典里面。这个过期策略有两种,分为主动的和被动的。主动的就是有个定时任务去删除这个节点,被动的就是惰性删除,当访问到这个key的时候,顺带检查其有没有过期,过期了就删除。

2025-06-22 00:01:56 321

原创 九、Redis集群模式-Cluster

不同于前面的两种集群模式:主从复制、哨兵模式。Cluster集群模式是官方力推的模式。

2025-06-21 18:20:49 395

原创 八、Redis的主从原理、哨兵

想要了解Redis的主从原理,首先得认识一个基本的分布式理论-CAP理论。要理解这个理论,其实也非常简单。

2025-06-21 17:26:01 1125

原创 七、Redis的持久化策略

Redis这个缓存存放的数据是存到内存的,假如宕机了,那么就会数据丢失。如何避免这种情况呢?由此,Redis推出了两种持久化机制。第一种机制就是以二进制序列形式存储数据的RDB快照,第二种机制就是以命令形式存放的aof日志。那么Redis为什么不推出一种统一的持久化机制,而是采用了两种呢?其实就是对应不同的两种使用场景。设想一种场景,Redis机器重启时,这时候需要重新加载所有的数据来恢复内存。但有一种场景,不需要重新加载数据,而只需要加载的数据。

2025-06-21 15:54:41 384

原创 六、Redis的Pipeline

什么是pipeline?简单来讲就是批处理技术。处理请求时,不会一个一个处理。而是一次性处理一批请求。这种思想在mysql批处理请求中,也有体现。可以看出来管道节省了网络交互次数,等待时间,以及网络资源的消耗。是一种常见的优化性能的方式。

2025-06-18 01:14:23 183

原创 五、Redis的IO模型

在谈及Redis为什么快的时候,很多人都只觉得redis是基于内存,所以快。但他们往往不知道,决定redis快的因素,还有它的IO模型-Reactor模型。谈及Redis的IO模型之前,先补充一下IO模型的基础知识。

2025-06-18 00:49:26 758

原创 四、Redis实现限流

简介:简介:限流算法在分布式领域是一个经常被提起的话题,当系统的处理能力有限时,如何阻止计划外的请求继续对系统施压。系统要限定用户的某个行为在指定的时间里只能允许发生 N 次,如何使用 Redis 的数据结构来实现这个限流的功能?固定窗口比如我们规定我们的一个接口一分钟只能访问10次的话。

2025-06-17 00:29:55 336

原创 三、一些好用的数据结构

Redis有一些特殊的数据结构,在特定的业务场景具有奇效,能起到减少存储空间、且功能实现简单快捷的作用。

2025-06-16 23:51:02 467

原创 二、Redis的分布式锁

分布式锁本质上要实现的目标就是在Redis里面进行一个占位,当别的进程也要来占有时,发现已经有位置了,就只好放弃或者稍后再试。实现指令实现分布式锁的指令是set nx ex。即set if not exists expire的缩写。注意这个指令是一起执行,并不是先执行set nx 再执行ex,因为假如服务设置setnx 时挂了,还没来得及设置ex,那么此时就会没有过期时间。进而导致锁不释放,甚至可能死锁。

2025-06-16 00:58:12 933

原创 一、Redis的五种基本数据结构

Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的value数据。不同类型的数据结构的差异就在于 value 的结构不一样。String的底层结构是动态字符串,是可以修改的字符串,内部结构实现上类似于Java的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M。

2025-06-15 22:38:54 340

原创 Redis简介

Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此,常用于。

2025-06-08 20:33:35 367

原创 十、Kafka的高吞吐

1.:当生产者发送消息到 Kafka broker 时,这些消息首先被写入到内存中的缓存,即操作系统的 PageCache。PageCache 是操作系统用于缓存文件数据的内存区域,可以显著提高文件读写的性能。2.:消息在 PageCache 中积累到一定量后,Kafka 会异步地将这些消息从缓存写入到磁盘上。这种异步操作意味着消息的写入磁盘过程不会阻塞生产者发送消息的操作,从而提高了整体的处理速度。3.

2025-06-08 19:55:26 511

原创 九、消费者组状态机和Rebalance流程

在理解Rebalance全流程之前,需要了解消费者组的状态流转这个前置知识。

2025-06-08 19:36:23 999

原创 todo~

todo~

2025-06-08 17:05:52 103

原创 InnoDB数据页结构

页,它是InnoDB管理存储空间的基本单位,⼀个页的大小⼀般是16KB。InnoDB为了不同的目的而设计了许多种不同类型的页,比如存放表空间头部信息的页,存放Insert Buffer信息的页,存放INODE信息的页,存放undo日志信息的页等等。

2025-06-08 17:04:48 121

原创 todo~

todo~

2025-06-08 16:58:09 111

原创 todo~

todo。

2025-06-08 16:56:52 141

原创 八、Kafka的请求是如何处理的

对于如何处理请求,我们很容易想到的两个方案。

2025-06-08 16:37:32 355

原创 七、Kafka副本机制

所谓的副本机制(Replication),也可以称之为备份机制,通常是指:分布式系统在多台网络互联的机器上保存有相同的数据拷贝。副本机制有什么好处呢?但Kafka的副本机制只能保证数据冗余,无法提升读性能和其他优点。为什么呢?

2025-04-15 20:35:31 933

原创 六、如何减少Rebalance

Rebalance是Kafka中消费者组(Consumer Group)内部的一个重要机制,指的是消费者实例之间重新分配Topic分区(Partition)的过程。Rebalance的目的是确保消费者组能够均匀地消费数据,从而提高系统的性能和稳定性。

2025-04-15 17:58:10 414

原创 五、Kafka消息删除策略

Kafka数据清理策略是由log.cleanup.policy参数决定的,当前有两种策略,第一种是delete,第二种是compact。

2025-04-15 16:15:17 701

原创 四、 Kafka怎么保证消息不丢失

首先,kafka保证消息不丢失,是由一定限制的。一句话概括,Kafka 只对的消息(committed message)保证不丢失。什么叫做已提交的消息?Kafka的若干个Broker将消息写入日志时,会回调告诉生产者这条消息已经提交。那为什么是若干个 Broker 呢?这取决于你对“已提交”的定义。你可以选择只要有一个Broker 成功保存该消息就算是已提交,也可以是令所有 Broker 都成功保存该消息才算是已提交。不论哪种情况,Kafka 只对已提交的消息做持久化保证这件事情是不变的。

2025-04-14 20:14:11 386

原创 三、消息压缩

可一旦你在 Broker 端设置了不同的 compression.type 值,就一定要小心了,因为可能会发生预料之外的压缩 / 解压缩操作,通常表现为 Broker 端 CPU 使用率飙升。一般情况下这种消息格式转换对性能是有很大影响的,除了这里的压缩之外,它还让 Kafka 丧失了引以为豪的 Zero Copy 特性。因此如果 Kafka 享受不到这个特性的话,性能必然有所损失,所以尽量保证消息格式的统一吧,这样不仅可以避免不必要的解压缩 / 重新压缩,对提升其他方面的性能也大有裨益。

2025-03-20 15:30:03 277

原创 二、消息分区机制

这种分区的理念,在其他中间件也有体现。比如一个主题下有 3 个分区,那么第一条消息被发送到分区 0,第二条被发送 到分区 1,第三条被发送到分区 2,以此类推。消息进入topic,会通过一定的策略,发送到不同的分区。常见的分区策略有下面几种。Kafka 允许为每条消息定义消息键,简称为 Key。轮询策略有非常优秀的负载均衡表现,它总是能保证消息最。分区的作用即是为了负载均衡,提高消费速度。Key 的所有消息都进入到相同的分区里面。随意地将消息放到任意一个分区。Kafka如何定义分区策略?

2025-03-20 11:02:29 235

原创 一、Kafka概念、简介

一个开源的消息引擎系统。A系统发送给消息引擎,B系统接受消息引擎的消息。为什么众多消息引擎,偏偏选择了Kafka呢?性能高、提供了持久化存储的能力。同时Kafka又是个分布式流处理平台。通常来说,有下面两种方式。1.点对点方式:A系统发消息,只发给B系统。其他系统不能接收2.发布/订阅模型:有一个主题TOPIC,发送方可以是很多个。而接收方,也可以是很多个。而Kafka可以基于这两个方式,都能传输消息 削峰填谷。顾名思义,就是说,削减峰值流量,平滑流量曲线,防止一瞬间涌入大量的消息,打爆系统,

2024-12-06 00:20:09 363

原创 自定义注解

一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在等的前面,用来对这些元素进行说明,注释。作用:可以用作标记,配合反射机制,可以实现一个注解达到复用代码的效果。

2024-12-02 00:04:00 305 1

原创 BigDecimal

在项目中,金额的计算通常使用BigDecimal来保证精确计算。BigDecimal可以处理任意长度数字序列的数值,实现了任意精度的浮点数运算。《阿里巴巴 Java 开发手册》中提到:浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能用 equals 来判断。

2024-09-06 00:16:00 675

原创 [多线程] 二:CompletableFuture

CompletableFuture提供了一种观察者模式类似的机制,可以让任务执行完成后通知监听的一方。使用场景:多个任务异步执行,互不影响,提高应用的响应速度和吞吐量。提供了不用回调的API、以及可以回调的API。

2024-09-02 00:49:31 749

原创 [多线程] 一:线程池

(3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。为什么任务已经堆积很多了,队列满了,才开新线程处理任务?而不是核心线程满了之后,就开新线程执行任务?(1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。当任务到达时,任务可以不需要等到线程创建就能立即执行。答:降低资源消耗,防止频繁创建线程。1.线程名前缀:可用于日志排查。CPU密集型:CPU核数+1。最佳实践:动态线程池。

2024-09-01 21:49:01 2131

空空如也

空空如也

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

TA关注的人

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