生活中有什么"缓存"的例子?
计算机原理 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
老师改了成绩,学生还看到旧分数,可能是什么原因?
这像什么生活场景?
一个班只有一把教室钥匙,属于什么问题?
冗余会带来什么代价?
三个人各记一本班费账,怎么保证三本一致?
转账时网络断了,钱可能处在什么状态?
重试转账可能造成什么后果?
判断这几个操作是否幂等:查余额、加 100 元、把余额设为 100。
抢票时"排队中,请稍候"是什么在起作用?
参考答案(家长):缓存没更新。要么等它过期,要么改数据时同步清掉缓存。
参考答案(家长):如把常用的书放桌上而不是每次去书架取。
参考答案(家长):单点故障——钥匙丢了全班进不去,所以要配备用钥匙。
参考答案(家长):像超市多个收银台前有人引导排队,或医院的分诊台。
参考答案(家长):每笔账都要通知三个人同时记,且要确认都记上了。
参考答案(家长):更贵、更复杂,还要保证多份之间内容一致。
参考答案(家长):可能转两次。所以要让操作"重复做也只生效一次"。
参考答案(家长):可能已扣未到、可能都没发生。所以要有机制确认并补救。
参考答案(家长):请求被放进队列了,系统在按序处理而不是全部同时处理。
参考答案(家长):查余额幂等、设为 100 幂等、加 100 不幂等。
点外卖属于同步还是异步?
两人同时给班费加 100,最后可能只加了 100,为什么?
锁像什么?
两人过独木桥互不相让,是什么问题?
如果转账只做了一半会怎样?
为什么横向扩容对程序有要求?
按什么规则分,才能让各台机器数据量差不多?
为什么"读多写少"适合这种结构?
如果没有监控,系统出问题你怎么知道?
这和"狼来了"的故事有什么共同点?
参考答案(家长):两人都读到旧值 0,各自算出 100 再写回,后写的覆盖了先写的。
参考答案(家长):异步——下单后你该干嘛干嘛,送到了会通知你。
参考答案(家长):死锁。约定"谁先到谁先过"这类统一规则即可避免。
参考答案(家长):像洗手间的门锁,一次只让一个人进,其他人排队。
参考答案(家长):程序不能把状态存在自己机器上,否则换一台就找不到了。
参考答案(家长):钱凭空消失或凭空多出,账就乱了。所以必须放进一个事务。
参考答案(家长):读可以分给很多从机分担,写还是集中在一台保证不乱。
参考答案(家长):规则要让数据均匀分散,否则会出现一台特别满、别台很空。
参考答案(家长):假警报多了,真出事时没人当回事。
参考答案(家长):只能等用户来投诉,那时已经晚了。
灰度发布和 Day 982 的分支有什么共同思路?
为什么"先恢复再查因"是对的?
学校选课系统为什么常在开放选课那一刻崩掉?
限流像什么?
一个考试系统压力过大时,该保住什么、可以先关什么?
租机器相比买机器,好处和坏处各是什么?
这对"选课系统"这种潮汐型服务有什么价值?
容器和搬家用的集装箱有什么相似?
拆成微服务一定更好吗?
为什么给三个人用的程序不需要负载均衡?
参考答案(家长):用户等不起。先止血,再看病。
参考答案(家长):都是控制风险——小范围试,不行就撤,不影响主体。
参考答案(家长):像景区限制每日入园人数,保证进去的人有良好体验。
参考答案(家长):平时没人用,开放瞬间全校涌入,远超平时容量。
参考答案(家长):好处是灵活、省心、初期便宜;坏处是长期成本可能更高、依赖服务商。
参考答案(家长):保住答题和交卷,可暂关排行榜、头像这类次要功能。
参考答案(家长):标准化打包,换什么运输工具都能装,里面的东西不用重新整理。
参考答案(家长):高峰扛得住,平时不浪费钱。
参考答案(家长):一台机器绰绰有余,加了只是徒增复杂和成本。
参考答案(家长):不一定。小系统拆了反而更麻烦,复杂度从代码内部转移到了服务之间。