三马代驾在分布式锁上踩过的坑足够写一篇事故集:先用 SETNX + EXPIRE 两条命令,进程崩溃在两句之间导致锁永远不释放;后来改原子命令,又因为业务执行超...
三马代驾的缓存曾经在早高峰出过一次小事故:司机端"附近车辆"接口 5 分钟内 RT 从 30ms 涨到 900ms,数据库连接池一度打满。事后复盘,起因是一个运...
三马代驾去年吃过一次发布事故:结算服务带着一个空指针直接全量上线,五分钟内所有司机的当日账单接口报错,回滚又因为配置不兼容花了二十分钟。那次之后我们把"能不能灰...
去年双十一前夜,三马代驾的派单接口被脚本刷了四十多万次:不是竞争对手,是有人拿脚本批量领取优惠券。那次事故没宕机,但正常司机的抢单请求被拖慢了两秒。之后我们把防...
支付回调是代驾系统里容错率最低的入口:它直接决定钱有没有到账、券有没有退、订单能不能往下走。三马代驾接入第三方支付的第一年,吃过两次大亏——一次是渠道重发通知导...
网约车业务里最容易出诡异 bug 的地方,往往不是高并发链路,而是订单状态。三马代驾早期的订单服务里,状态判断散落在十几个 service 中,"司机取消之后支...
代驾履约的临门一脚是派单:乘客发单之后,系统要把单子递到最合适的司机手上。递得不准,司机绕路过来乘客已经取消;递得不快,池子里的单没人接直到超时。三马代驾的派单...
拉新补贴是代驾平台增长最快也最烧钱的模块,同时是黑产最集中的入口。三马代驾在补贴风控上迭代了三个版本,第一版只靠手机号黑名单,被薅到怀疑人生;现在跑的这版把设备...
代驾平台说到底是在跟钱打交道:司机今天跑了多少单、平台抽成多少、什么时候到账,这三个问题答不好,司机一定会走。三马代驾的结算体系前后推翻过两次,现在跑的这版把几...
前一篇聊了三马代驾系统的整体架构和三级派单,这次往细里抠一层:司机端和乘客端挂在 Netty 长连接上,手机进电梯、切后台、弱网闪断都是家常便饭,连接断了之后怎...
作为一名独立全栈开发者,过去这一年我最直观的感受是:国内开发者的创作形态正在全面向“轻量化”与“多端化”倾斜。很多人利用业余时间开发了非常惊艳的工具,其中很大一...
线上 Redis 的 used_memory 一路上涨、最终触发 maxmemory 淘汰或 OOM,是常见故障。本文给出一套从“看全局指标”到“定位具体 ke...
Redis GEO 是 Redis 3.2 版本引入的地理位置(Geospatial)功能,用于存储、计算和查询经纬度坐标。
春节档热门场次,3 秒钟 10 万人抢 2000 个座位。这道题出现在面试里,考的不是你画图快不快,而是五硬功夫:防超卖、原子性、延迟任务、幂等、缓存一致性。我...
博物馆票务和普通景区不太一样:免费不免票、实名预约、分时段限流、瞬时到馆高峰集中。我们在做博物馆票务系统时,遇到几个典型问题:
导读:很多团队用Redisson加分布式锁,图的就是它有看门狗自动续期,业务不用算过期时间。但线上还是出过"锁提前释放、两个线程并发写同一份库存"的事故。这篇把...
前两篇聊了三马代驾系统的整体架构和长连接心跳,这篇聊一个更刺激的:同一时间几十个司机抢一个订单,怎么保证不超卖、不漏单、不重复派。
自从文旅部推行景区限流政策以来,分时预约已经成为5A/4A景区的标配能力。但在实际落地中,我们在千里达票务系统的多个景区项目中发现,分时预约的技术难点不在于"做...
先说结论:秒杀场景库存变负、订单超卖,根子就一句——"扣库存"和"写订单"不是原子操作,高并发下读-改-写互相覆盖。解法也固定:扣减用数据库原子语句或 Redi...