知识卡片
两段式提交牺牲吞吐量,异步模型靠反向压力限流
内容
两段式提交要求收银员和顾客都拿钱和收据在前台等到交易完成才能离开,虽省去错误处理,却大幅减少同时段能服务的顾客数——高吞吐系统应针对最优路径优化,而非为罕见出错情况做事务处理。异步模型也不能无限扩展:队列变长时星巴克会临时调配收银员做咖啡,却给未付款顾客施加”反向压力”(不想等就只能离开)。发散:声称”高吞吐”的系统,若链路上还留着两段式提交,该反问这段一致性是否真必要。
参考来源
- 位置:《架构师应该知道的37件事》第2章《架构》之"2.1 咖啡店不使用两段式提交法"·"2.1.4 事务"与"2.1.5 反向压力"(源文件:_epub-src/OEBPS/Text/chapter002.html)
- 结论依据:原文说明"两段式提交法虽然可以简化工作,但会影响消息的自由流动……高吞吐的系统需要针对最优路径做优化,而不是在出错的时候为那些罕见的情况进行事务处理",以及"随着咖啡杯的队列越排越长,星巴克可以临时调配一个收银员去制作咖啡……这也会给还未付款的顾客施加反向压力",直接支撑本卡结论。
- 原始内容:没人喜欢排队等候,但如果还没付款,你可以选择离开不喝咖啡,或者溜达到不远处的下一家咖啡店去看看。