幂等设计是防重复也是防补偿失败
幂等设计是防重复也是防补偿失败幂等常被理解成防止用户重复点击。这个理解没错,但还不够。真实系统里,消息重试、定时补偿、网络超时后的再次请求,也都需要幂等保护。 先找到业务唯一性幂等的关键是找到业务上能代表同一次动作的唯一标识。它可以来自请求号、订单号、流水号,也可以来自业务字段组合。没有稳定标识,幂等就只能靠猜。 这个标识应该由调用方和服务方共同约定。调用方负责传入,服务方负责校验和落库。 状态判断比简单拦截更可靠有些场景只靠请求...
JVM高频面试题
JVM 高频面试题 高频说明:这里的“高频”来自 Java 后端面试常见覆盖面整理,不代表公开统计排名;暂无来源可查。复习方式:先背“答题模板”,再用“追问”检查自己能不能展开。 快速答题框架 先讲定义:它解决什么问题。 再讲机制:核心流程、关键组件、边界条件。 再讲问题:常见坑、线上表现、排查工具。 最后讲实践:你会怎么设置、监控、验证。 运行时内存区域JVM 运行时数据区有哪些?面试官想看什么 是否知道线程共享区和线程...
Jvm&微服务
JVM & 微服务高频面试题 高频说明:题目来自 Java 后端面试常见覆盖面整理,不代表公开统计排名。复习方式:每题先抓关键词和核心思路,再用”追问”自检能不能展开。覆盖范围:JVM 篇 + Spring Cloud Alibaba 组件篇。 快速答题框架 JVM 题:先讲”是什么 / 解决什么”,再讲”机制流程”,再讲”问题与排查工具”,最后讲”实践怎么设”。 微服务题:先讲”架构目标”,再落到”组件职责”...
微服务高频面试题
微服务高频面试题 高频说明:这里的“高频”来自 Java 后端面试常见覆盖面整理,不代表公开统计排名;暂无来源可查。复习方式:先按“架构目标”回答,再落到“组件、故障、治理、实践”。 快速答题框架 先讲为什么拆:复杂度、团队协作、独立发布、弹性伸缩。 再讲怎么拆:业务边界、数据边界、接口契约、团队边界。 再讲怎么治:注册发现、网关、配置、限流、熔断、链路追踪、日志、指标。 最后讲怎么兜底:降级、重试、幂等、补偿、灰度、回滚。 ...
surge ponte 实现同时内网穿透和科学上网
用 Surge 实现内网穿透和科学上网共存背景最近飞牛的安全漏洞让我重新重视 NAS 的隐私安全问题。之前我一直没有太重视隐私安全,NAS 也是直接公网暴露在外面。出了这件事以后,我决定关闭公网访问,改用内网穿透方案。 一开始我尝试过 Tailscale,但体验不够丝滑。手机上同一时间只能开一个 VPN: 想用内网穿透,就不能科学上网; 想科学上网,就不能用内网穿透。 对我这种高频使用科学上网、同时又经常访问家里 NAS 服务...
消息重试要有出口
消息重试要有出口消息失败后直接重试,是最容易想到的方案。但如果失败原因一直存在,无限重试只会让队列堆积、日志刷屏、下游压力增加。重试机制必须有出口。 先区分失败类型消费失败可能是临时网络问题,也可能是参数错误、业务状态不允许、下游数据缺失。临时问题适合重试,确定性的业务错误则不应该一直重试。 所以消费端不能只 catch 异常后统一抛出。它需要尽量识别错误类型,把可恢复和不可恢复的问题分开处理。 重试要配合幂等只要有重试,就必须考...
权限系统先从资源和动作开始
权限系统先从资源和动作开始权限系统如果一开始只围绕角色设计,很容易后面变成角色越来越多、规则越来越乱。更稳定的方式是先拆资源和动作,再用角色去组织权限。 资源是什么资源可以是订单、用户、文件、配置、报表,也可以是某个后台功能模块。资源定义清楚后,系统才知道权限保护的对象是什么。 如果资源边界不清,角色里就会堆满含糊的权限项,比如管理、处理、查看全部。这类权限后期很难审计。 动作是什么动作是对资源能做的事情,比如查看、创建、修改、删...
文件上传接口要先考虑失败场景
文件上传接口要先考虑失败场景文件上传看起来只是接收文件再保存,但真正上线后会遇到很多失败场景:格式不对、文件过大、存储失败、业务绑定失败、用户重复上传、临时文件没人清理。 校验要前置上传接口应该尽早校验文件类型、大小、业务场景和用户权限。校验越靠后,浪费的资源越多,也越容易留下半成品。 文件类型不能只相信文件名。文件名可以被随意修改,服务端至少要结合实际内容、业务白名单和存储策略一起判断。 存储和业务要解耦文件保存成功,不代表业务...