缓存穿透定义 + 成因 + 解决方案 + 实战选型。
一、缓存穿透(Cache Penetration)是什么大量请求查询根本不存在的数据,缓存查不到,全部打到数据库。
比如:
查询 id = -1 的用户
大量恶意请求不存在的商品
爬虫疯狂扫无效 ID
缓存和数据库都没有,缓存形同虚设 → 穿透。
危害
DB 压力剧增,甚至打挂
无法通过缓存挡住流量
解决方案
缓存空值
查...
Dubbo 核心知识点
1. Dubbo 是什么?Apache Dubbo 是一款高性能、轻量级、基于 Java 的开源 RPC 框架。
主要用于微服务之间的远程服务调用,提供服务注册发现、负载均衡、流量管控、集群容错、SPI 扩展等能力。
与 Spring Cloud 核心区别
Dubbo:RPC 框架
基于 TCP 长连接 + 高效序列化
性能极高,适合高并发内部服务调用
专注服务治理...
Dubbo RpcContext 深度解析RpcContext 是 Dubbo 基于 ThreadLocal 实现的线程级 RPC 上下文容器,核心用于存储单次调用的环境信息、隐式传参(Attachment)与调用状态,是分布式链路追踪、上下文透传、调用信息获取的核心组件Apache Dubbo。
一、核心本质与底层实现1. 本质定位
线程隔离:基于 InternalThreadLocal...
Dubbo 服务暴露与引用原理这一块面试最爱问:Dubbo 是怎么把一个接口变成远程服务,又怎么在调用端像调用本地方法一样调用远程的?
核心就两件事:
服务暴露(Provider 端):把接口方法 → 发布成网络可调用服务
服务引用(Consumer 端):接口 → 生成代理对象,调用时走远程 RPC
全程围绕:动态代理 + 网络通信 + 注册中心
一、服务暴露(Provider 启动...
一、Dubbo 为什么要用长连接?Dubbo 默认协议是 TCP 长连接 + NIO 复用
短连接(HTTP)每次请求都要三次握手,开销大
长连接一次建立,多次复用,性能极高
适合微服务内部高频、小包调用
但长连接必须解决三个问题:
连接断了不知道 → 心跳检测
断了之后不能恢复 → 自动重连
连接太多 / 失效 → 连接管理
二、心跳机制(核心)1. 作用
探测对方是否...
导语真正厉害的人,都是“反内耗”体质,只有停止心理内耗 ,这样才会一步步变强。
心理内耗特征心理内耗往往有如下特征:
经常觉得累、压力大,其实什么也没干;
不知道自己想要什么,不知道自己最喜欢和希望的方向是什么;
即使清楚了自己想要什么,有了方向,什么都还没开始就觉得自己很累了;
如果以上三条你都符合,那么很可能你的心理内耗比较严重,也就是说你的精神上比较疲惫劳累。
内耗现象和解决当一个...
前言每到双 11、618 等大促月时,各大电商是如何应对海量并发请求的呢,今天总结归纳下这背后的技术架构体系,并列举出我们技术人员面临的一些挑战,如何克服解决。
电商整体架构概述从组织架构到技术架构,当前各大电商系统基本趋于中台化。中台在2015由阿里提出,其实是一种企业 架构而不是单纯的技术层面,目前几乎各大电商都进行着中台化的建设。
中台没有什么神秘的,说到底,中台就是对 “共享”、“通...
前言正常情况下,在使用 elasticsearch 之前就应该把 mapping 指定写好。但特殊情况下,索引的 mapping 必须修改,比如一开始指定的 mapping 不合理,或者当有程序意外将原先 mapping 污染的时候等等。
现生产环境有一个索引 order mapping 因为业务规则更改而必须修改,但是索引中已经存在几个 G 的数据,如果删除索引重新创建 mapping 再...
问题一在当前项目中做了一个电子钱包功能,在操作电子钱包的业务中,要更新多张表数据,且存在并发操作钱包金额的情况,为了保证数据一致性且并发操作钱包金额都能成功,采用了事务+分布式锁的方式。
大致代码如下:
1234567891011@Transactional public void operateEwallet() { // 加锁 lock.lock(); ...
前言我在学习或者测试时,可能会用到 redis-cluster 环境,但当时手头没有的话得现搭,过程比较麻烦,所以搞了个 基于 Docker 快速构建 redis 集群的小工具。
集群原理就不赘述了,直接开始。
环境信息
CentOS 8
Docker 19.03.13
步骤在 ~/ 下创建 redis-cluster 目录
cd ~/redis-cluster
1. ...