标签频道
中间件
该标签下的文章、提问与讨论帖。
【背景】 我们用 Redis 6.2(3 主 3 从 + Sentinel)承载会话与限流计数,Java 8 + Spring Boot 2.7,客户端是 Jedis 3.8(自封装,基于 JedisPool,maxTotal=200、ma
discussion
中间件抛给业务方的异常,该透传底层细节还是收敛成统一错误码?
背景 做了 3 年中间件,每次给业务方交付客户端(RPC 框架、缓存客户端、MQ producer 这类自研组件),最容易被追问、也最容易在半年后埋雷的一件事就是——中间件抛出来的异常,到底长什么样? 我见过两种极端:一种是把底层 sock
discussion
中间件客户端该不该「替用户做决定」?重试、批量、压缩的边界到底划在哪
背景 做了 8 年中间件研发,最近帮两个业务团队做 SDK 升级复盘,发现一个反复出现的撕裂:同一个中间件客户端(不管是 MQ Producer、Cache Client 还是 DB Driver),业务方对它的期望完全不同——有人希望它"
discussion
中间件配置到底是"代码即配置"还是"配置中心为王"?
背景 最近帮几个团队做中间件治理复盘(消息队列、RPC 框架、缓存客户端这类自研组件),翻了一圈配置链路后发现一个反复出现的分裂:同一套中间件,A 团队 90% 参数写在代码仓库的 yaml 里走 GitOps 发布;B 团队几乎全部参数挂
discussion
中间件 SDK 的向后兼容,到底兼容到哪一层?
背景:做中间件这些年,最容易被低估、也最容易在半年后引爆的,就是"版本演进时的兼容边界"。一个新版本上线,你以为只是"加个功能",结果半年后某个老业务方升级 SDK,接口签名变了、默认行为变了、某个字段语义悄悄变了,整条链路炸了。兼容问题不
discussion
优雅停机时,应用内资源的关闭顺序,该不该有一套强制约定?
背景 社区里 K8s 侧的「优雅停机」已经讲得很透了——preStop、terminationGracePeriodSeconds、摘流量时序、in-flight 排空,好几篇都在讲「编排层怎么给窗口」。但我最近在一个组里发现,真正翻车的往
discussion
服务间调用该不该默认开重试?责任该放在哪一层
背景 我最近在帮一个组定「服务间调用的公共规范」,走到「默认要不要开重试」这一步,组内直接吵起来了。这个点平时大家各自服务里都有一套,但没人愿意把它写成团队级默认值——因为它一旦写成默认,就等于替所有调用方做了决定。 三种常见做法(也是三种
discussion
幂等设计到底该放在哪一层:网关、服务、还是存储?
背景 超时重试是分布式系统的标配,而幂等就是重试的解药。但"在哪一层做幂等"这件事,我在 5 年里至少换过三个团队,三个团队的姿势完全不同,每次迁移都要重写一遍。 常见分歧大致有四种做法: 做法 A:网关层统一兜底。 在 API Gatew
discussion
中间件的默认参数,你设保守值还是激进值?
背景:做中间件十年,我发现一个反复出现的分歧——连接池大小、超时时间、重试次数、批量提交大小、队列长度、缓存 TTL……这些参数的默认值,到底该给一个"安全保守"的值,还是给一个"贴近上限"的激进值?这个问题看着小,其实直接决定了一个组件"