bjmayor 发布于 2025-11-05

高并发问题的处理思路:架构师的权衡之道

高并发系统的设计本质上是一场资源与需求之间的博弈。当系统面临流量洪峰时,我们需要的不是单一的技术方案,而是一套系统性的思维框架。这个框架的核心可以概括为一句话:分层加缓存。但这句话背后,隐藏着无数需要权衡的技术决策。

阅读全文 »

bjmayor 发布于 2025-11-03

百万并发抽奖实现:从 SQL-only 到 Redis + Lua 的抽奖优化实战

Day 4:从 SQL-only 到 Redis + Lua 的抽奖优化实战

本文记录今天将抽奖核心从“纯数据库事务”升级为“Redis + Lua 原子扣减 + 异步落库”的过程、优化点、踩坑与结果。

目标与背景

  • 目标:在保证功能正确与可观测的前提下,提高单机并发与整体吞吐,缓解数据库热点与锁竞争。
  • 背景:V1 方案所有请求走 PostgreSQL 事务,存在连接/锁瓶颈;V2 引入 Redis 作为热点写入层与限流去重层。

阅读全文 »

bjmayor 发布于 2025-11-02

百万并发抽奖基础版本实现-rust+postgresql

今天是第三天实验这个百万并发抽奖实现。
纯postgresql+rust实现结果:

这次压测的吞吐量约为 3951 QPS(10000 次请求在 2.53s 内完成 = 3951.68 QPS)。延迟分位说明:P50≈63.5ms、P95≈71.3ms、P99≈78.0ms,平均≈
63.9ms,代表单次抽奖接口的响应时延分布。若要更接近真实上限,建议服务和压测都用 release 模式并关闭调试日志后再测。

阅读全文 »

bjmayor 发布于 2025-11-02

TypeScript 泛型终极指南:从懵圈到精通-(AI教我学编程)

TypeScript 泛型终极指南:从懵圈到精通

前言

如果你学 TypeScript 时被泛型搞得头晕目眩,恭喜你,你不是一个人。泛型(Generics)可能是 TypeScript 中最让初学者困惑的概念之一。那些满屏的 <T><K, V>extends 看起来就像天书。

但其实,泛型的核心思想出奇地简单。读完这篇文章,你会发现泛型不过是"类型层面的函数"而已。

阅读全文 »

bjmayor 发布于 2025-10-29

百万并发抽奖系统细节讨论

今天是第二天和 AI 聊抽奖系统。
主要集中下面几个话题:

  1. 具体的概率算法实现方式(权重法 vs 区间法)
  2. 前端转盘的动画实现方案(CSS动画 vs Canvas)
  3. 管理后台免登录实现
  4. 错误码和异常处理规范
  5. 是否需要连接池监控和慢查询日志

编码只应该占据项目时间的20%,也就是有了ai, 你也应该和ai讨论各种细节。最后再让ai写代码,这样写出来的才是符合你预期的代码。

阅读全文 »