自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 架构师成长之路06:缓存设计收官篇,缓存该放哪?写缓存怎么用?这篇讲透最后两个核心问题

摘要: 本文从缓存位置与写缓存角度,解析微信/淘宝安装包增大、机票订单处理中等现象。缓存放得越靠前(如客户端、CDN),性能收益越大,能减少级联系统调用。常见缓存位置包括客户端缓存(如网约车计价规则)、静态缓存(如新闻页)、服务端缓存(如订单服务缓存用户等级)和数据库缓存(如缓冲池)。写缓存则通过缓冲写请求(如订单异步处理)提升用户体验,但需权衡数据一致性风险。核心原则:优先在请求链路前端加缓存,读缓存关注命中率,写缓存优化高并发写场景。

2025-09-23 09:21:48 745

原创 架构师成长之路 05:从更新机制到风险防控,彻底解决数据一致性与雪崩问题

上一篇我们聊到缓存更新的4种核心方案,尤其是“先更数据库再删缓存(Cache-Aside)”被很多公司采用,但细心的读者会发现:就算用了延时双删,在等待窗口内还是会有数据不一致;而且当缓存空间满了,该删哪些数据才能不影响命中率?更要命的是,大促时突然大量缓存失效,数据库直接被打垮——这些问题,正是我们今天要解决的“缓存进阶难题”。作为缓存系列的第三篇,我们会从“更新机制的终极方案”讲到“缓存清理的3种策略”,最后拆解“击穿、穿透、雪崩”这三大致命风险的应对方法。

2025-09-22 09:14:44 984

原创 架构师成长之路 04:缓存进阶避坑:Value 存储防污染、数据同步最优方案,再也不怕宕机拖垮 DB

上一篇我们聊了缓存的核心逻辑:怎么选缓存数据、怎么设计Key才不重复。但很多开发者会忽略一个问题——就算Key设计对了,Value存错格式、缓存和数据库数据不同步,照样会引发生产事故:比如用户看到的商品价格是旧的,或者缓存一宕机数据库直接被打垮。今天我们就顺着上一篇的思路,继续拆解缓存的“后半段知识”:从Value的两种存储方式怎么选,到哪些场景绝对不能用缓存,再到最关键的“缓存更新机制”——毕竟,让缓存和数据库保持一致,才是缓存设计的终极考验。

2025-09-19 09:14:35 820

原创 架构师成长之路 03:缓存别乱加!架构师必算的 “收益账”+3 层缓存逻辑 + Key 设计防重复技巧

你有没有遇到过这样的情况:电商大促时,商品页面加载半天打不开;后台统计报表刷新一次要等10秒,老板催着要数据却只能干着急?这些问题的核心,大多指向「数据访问效率」,而缓存,就是解决这类性能瓶颈的“特效药”。今天我们从实际场景出发,聊透分布式缓存的核心逻辑:它是什么、为什么能提升性能、哪些场景适合用,以及最关键的「缓存Key怎么设计才不踩坑」。看完这篇,你就能搞懂缓存的底层逻辑,甚至能上手设计简单的缓存方案。

2025-09-18 10:00:03 946

原创 架构师成长之路 02:集群不是 “堆服务器”!搞懂并行并发 + 4 种架构选型,避开 3 大致命误区

工作久了会发现:几乎所有分布式系统的问题,最终都能追溯到“单机扛不住”的痛点——大促时商品页面打不开,游戏高峰时段频繁掉线,后台报表计算半天出不来……这些问题的解药,本质都是“集群”。作为架构师成长之路的第一部分,今天我们从基础概念到实战误区,彻底聊透集群:它不是“多台服务器堆在一起”这么简单,而是一套“平衡业务需求与技术复杂度”的设计思想。看完这篇,你不仅能分清“并行”和“并发”的区别,更能知道不同业务该选哪种集群架构。

2025-09-16 19:29:02 1023

原创 架构师成长之路 01:别再只会 “画架构图”!从技术炫技到问题解决,这套方法论帮你搭建核心认知

很多初级架构师会陷入一个误区:觉得架构设计就是“画架构图+选中间件”,比如上来就用微服务、搞异地多活,最后系统复杂到运维扛不住,业务还没上线就崩了。其实真正的架构设计,不是堆技术,而是一套“解决复杂度”的方法论——从识别问题到落地方案,每一步都有章可循。作为架构师成长之路的开篇,今天我们从“架构师的定位”讲到“系统优化的核心思路”,帮你搭建一套完整的架构设计认知框架。看完这篇,你再面对“高并发”“高可用”需求时,就不会慌了,而是知道该从哪下手。定义问题:问题的本质是“理想和现实的差距”。

2025-09-15 19:48:49 898

原创 Mysql的加锁情况详解

至此,mysql加锁的分析就结束了,其实挺绕的,实际总是与自己想的不一致,但是要秉持一个原则,就是mysql的锁除了保证并发事务的情况下对数据的安全读写外,还会用来解决幻读问题;有时候从幻读的角度出发,那么也就理解了为什么会这样加锁了。

2024-11-21 16:18:20 2913

原创 Redis全系列学习基础篇之位图(bitmap)常用命令的解析

以日期为key,将用户id与位索引提前做好映射,比方说0位表示张三1位表示李四2位表示王五,当张三登录时在0位设置1,李四登录在1位设置1,王五登录在2位设置1,统计指定时间时将指定时间对应的key做bitop操作即可,如下:bitop or k3 20220101 20220102 上面命令表示将20220101和02这两个key做or操作,因为二进制or操作是有1即是1,最后统计k3里1出现的次数即得出20210101到02之间活跃用户数为3:bitcount k3 0 -1。

2024-10-29 19:16:42 1457

原创 基于bytebuddy自定义agent拦截项目里的请求并打印日志

,该项目构建成功运行后可以自动拦截项目中对外暴露的http请求,项目发起的http请求/dubbo请求,并打印出入参日志,且支持nacos配置,动态切换是否打印日志,有需要的小伙伴可以自取,根据自身业务修改相关逻辑即可。总结了一下agent开发过程中遇到的坑以及最终解决的办法,最近梳理了下源码,上传到gitee上了,有需要的同学可以自取(

2024-10-28 19:14:15 369

原创 zookeeper全系列学习之分布式锁实现

就像上篇文章zookeeper全系列学习之统一配置获取说的,有了naocs谁还用zk做配置中心呢一样,现在项目中用zk实现分布式锁的估计也很少了,但是我认为它其实是有存在的价值的,因为它的临时顺序节点的特点,当客户端不可用时他能及时识别从而避免客户端开线程去主动删除,无论是为了学习还是工作亦或是为了拓展知识面,我们还是了解下为好,下面开始正文好了,zk实现分布式锁的编码实现就到这了,后续有时间再写redis、数据库实现的,其实思路缕清了,编码实现还是相对简单的。

2024-10-25 18:30:56 1221 1

原创 zookeeper全系列学习之统一配置获取

前面介绍了zk的一些基础知识,这篇文章主要介绍下如何在java环境下获取zk的配置信息;主要基于zk的监听器以及回调函数通过响应式编程的思想将核心代码糅合成一个工具类,几乎做到了拿来即用;虽然现在一般都用nacos来做配置中心了,不会有人用zk做配置中心了,但是基于这个代码了解zk的特性还是很有必要的。

2024-10-24 19:09:35 810 1

原创 zookeeper全系列学习之基础介绍

刚刚介绍完了redis,接下来介绍另一个高性能的分布式协调器zookeeperzk是主从复制集群,一个leader多个follower,只有leader能写,其余节点只提供读功能,但是客户端是可以连接集群中任意节点的,当连接的是leader则直接写,当连接的是follower则会被转发到leader进行写操作;并且zk的集群分为两种状态,一种为leader存活的可用状态,另一种为leader挂了的不可用状态(无主);

2024-10-23 11:53:49 1245

原创 Redis全系列学习进阶篇之分片集群

通过前面的文章由基础到进阶把redis相关知识都讲了一遍,今天来写redis系列最后一篇文章——分片集群;我们都知道,主从集群解决了单点故障的问题,但是并没有解决因数据量大而给服务端带来的压力问题,而分片集群刚好能够完美解决;分片集群就是在海量数据的情况下把redis数据打到不同的redis实例上来减轻单台服务的压力,分片集群的解决方案各种各样,本文从理论上把我所知道的大概都过一遍,然后介绍redis支持的集群模式,最后再根据两种代理服务部署一遍redis的集群。

2024-10-22 08:48:23 3120

原创 Redis全系列学习进阶篇之哨兵机制

上一篇文章介绍了reids的主从集群机制,但是在集群中master如果挂了我们该如何识别并切换呢,这就要引入redis的哨兵机制了,它可以自动识别故障并完成主从切换,下面我们详细介绍如何搭建一个哨兵集群并实现对redis集群的故障发现和服务切换服务监控,redis集群上线后会通过ping命令实时监控集群状态,当发现服务不可用时会进行投票,当大多数哨兵都认为服务不可用时则马上进行哨兵内部选主,执行故障恢复操作。

2024-10-21 19:18:42 1073

原创 springboot源码学习之旅——环境构建

之前简单看过SpringIOC的源码,大概了解了Spring创建bean的过程以及一些拓展点,今天开始准备看springboot的源码,源码的版本还是2.2.X的,究其原因就是我发现2.2.X之后的版本好像默认是gradel构建的了,要想使用maven得自己写配置文件,而我不想折腾就直接用2.2.X版本了,此次主要是想看下springboot的启动过程和自动装配,对比了一下虽然新老版本有差别,但是核心能力应该是没变的,如果介意的就不用往下看了。

2024-10-21 15:35:07 463

原创 Redis全系列学习进阶篇之主从集群

之前介绍redis的基础应用、底层原理以及工作中的实际运用,这篇文章开始介绍redis的主从集群和哨兵机制,从概念到实操,这块我在面试中被问的挺少的,最多问问数据同步机制,但是我们工作中可能会用到,特别是没有运维需要开发自己部署环境的公司;

2024-10-21 09:42:25 667

原创 记一次基于bytebuddy创建agent拦截不生效的坑

最近需要对存量的项目进行批量日志打印操作,要求对代码零侵入,显然AOP是行不通了,于是考虑使用agent来实现对方法的拦截,但是一顿操作下来,神奇的事情发生了,我自定义的agent里的premain方法被调用了,但是定义的拦截器没有生效,即使我拦截规则用的是any(),即拦截所有请求,也不会生效,更尴尬的是,我一时找不到原因,于是就新建了一个新的springboot项目,而这个新项目对agent有效,最后通过配置main方法,修改bytebuddy的版本解决了,今天用这篇文章主要记录下排查过程,以便给跟我出

2024-10-18 08:59:36 1542

原创 Redis全系列学习进阶篇之缓存穿透、击穿、雪崩以及实用解决方案

今天来聊聊redis的缓存穿透、击穿、雪崩以及解决方案,其中解决方案包括类似于布隆过滤器这种网上一搜一大片但是实际生产部署有一定复杂度的,也有基于spring注解通过一行代码就能解决的,其中各有优劣,咱们根据实际需要选型;接下来会从穿透、击穿、雪崩的基本概念、各种问题对应的解决方案以及方案的具体实施来一一介绍@Cacheable注解是一个spring3.1后引入的缓存技术,可通过在业务代码添加spring的缓存注解来实现缓存对象和方法的效果;而不用在业务代码里显示的进行set操作,大大方便了我们的日常开发。

2024-10-17 19:50:58 2291

原创 Redis全系列学习基础篇之底层原理

redis底层原理要聊的东西其实挺多的,感觉也是面试的高频问题,这篇文章主要介绍我本身了解的原理和在面试里遇到的问题本文介绍了redis的线程模型、IO模型、持久化、缓存过期、内存淘汰等面试中常问的知识点,漏的比较重要的一个点应该就是数据类型的底层实现了,后续我会补充进来。

2024-10-16 17:30:36 1610

原创 Redis全系列学习基础篇之项目中的实际运用

作为一名java程序员在这残酷的大环境下除了学习只能学习,学习了不一定有用,不学习则肯定没用,这次裁员找工作明显比21年难,好在平时有学习的积累从而不至于那么难看,但是回头看还是觉得自己准备的不够,所以想从今天开始结合我自己这次的面试体验和日常的积累然后以博客的形式再总结一次,在给自己加深映像的同时希望也能帮助到正在找工作的小伙伴,目前计划更新的技术栈有jvm、多线程、mysql、redis、kafka、spring等,希望能坚持下去,也希望更新完成之前千万别丢了工作,哈哈。

2024-10-15 17:58:21 1147

基于bytebuddy构建的日志打印agent

可以打印项目中的日志,实现对代码的零侵入,下面是接入步骤: 1、maven构建项目后将jar包放到指定目录 2、启动命令java -jar后面加上-javaagent:第一步jar存放的目录/log-agent.jar 3、观察日志,如果输出[..............dll.logagent.premain.start..............]则表示启动成功 4、项目启动后发起对应的接口调用即可打印接口请求日志 另:支持读取nacos配置文件,可以动态调整日志是否打印,但是考虑到性能不支持开启,如果需要开启可将源码中[引入nacos动态切换日志是否打印]的相关注释放开即可

2024-10-28

spring-boot-3.2.x源码

spring-boot-3.2.x源码

2024-10-21

spring-boot-2.2.x源码

github下载太慢,上传一下spring-boot-2.2.x的源码

2024-10-21

空空如也

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

TA关注的人

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