暂无搜索历史
踩坑场景:每次评审会,大家都说"没问题",结果上线后问题一堆。因为大家觉得"反正是架构师定的,出了问题也是他的责任"。
踩坑场景:容器内存限制2GB,JVM默认堆大小是物理内存的1/4。在16GB内存的机器上,堆大小变成4GB,超出容器限制,被OOMKilled。
2020年,我们上线了一个新的支付模块,直接全量发布。结果10分钟后开始出现"双重扣款"的bug。
2018年,我们从单机扩展到多实例部署。用户反馈"登录状态丢失"——在A机器登录,请求到了B机器就没登录了。
2022年双十一前夜,某电商平台的全链路压测进入最终阶段。当模拟订单量打到每秒10万笔时,团队信心满满——毕竟Kafka集群已经经过了两轮扩容,所有配置都经过了...
登上服务器一看,Eureka Server的进程不见了。查看日志,发现是内存泄漏导致OOM崩溃。
2019年,我们的文件存储用的是NAS(网络附加存储),所有服务器挂载同一个NAS目录。
我登录服务器,用grep查日志。结果发现日志分散在8台机器上,每台机器的日志格式还不一样。花了2小时才找到报错的那条日志,又花了2小时才定位到原因——一个第三方...
后来算了一下,那2个小时的停机损失超过200万。从那以后,我对缓存的理解深入了很多。
50个线程处理10万条,需要6000秒。更关键的是,每个任务还要往另一个队列里塞数据,那个队列也是无界的。
最初用的是TCC模式,每个服务都要实现try/confirm/cancel三个接口。开发量巨大,而且每次新增一个步骤,所有相关的补偿逻辑都要改。
2018年,后端团队修改了一个返回字段的名字,把userName改成了username。
2020年,我们的后台管理系统出了一个权限漏洞:普通运营人员通过修改URL参数,直接访问了管理员的操作页面,把一个下架的商品重新上架了。
多活架构不是银弹,复杂度很高。在决定做多活之前,先评估业务重要性和你愿意付出的成本。
当时的实现方案非常简单——写了一个定时任务,每5分钟扫描一次数据库,把过期的优惠券状态改为"已过期"。
用户点击支付后,因为网络抖动,前端没有收到响应,于是用户又点击了一次。两个支付请求同时到达后端,系统扣了两次款。
后来我们才知道,Redis恢复后业务恢复,但因为没有做好熔断和限流,系统在故障期间完全失去了自我保护能力。
活动上线10分钟,1元商品被刷走了8000份,公司损失80万。更要命的是,真正的用户在社交平台上骂我们"黑幕"。
暂未填写学校和专业
暂未填写个人网址
暂未填写所在城市