各位读者朋友,大家好。面试的时候,我经常问候选人:“你们项目是分布式架构吗?” 十个人里有九个会自信满满地回答:“是啊,我们用了 Spring Cloud,全家桶都上了,Nacos、Feign、Sentinel 一个都没少。”再往下问:“那分布式事务怎么处理的?服务雪崩怎么预防的?网络分区了怎么办?” 大部分人就开始支支吾吾,最后憋出一句:“呃……这些框架底层应该都帮我们处理了吧?”这就是典型的“伪分布式”。很多人以为引几个 Jar 包,把单体应用拆成几个 Jar 包运行,就是分布式架构师了。今天咱们就来泼盆冷水,聊聊架构师眼里真正的分布式挑战,以及这些概念在软考高级架构师里是怎么考的。一、 最大的谎言:网络是可靠的L. Peter Deutsch 早在 1994 年就总结了“分布式计算的八大谬误”,排名第一的就是“网络是可靠的”。在单体应用里,你调一个函数,要么成功,要么抛异常,几乎没有第三种状态。 但在分布式系统里,服务 A 调用服务 B,可能会出现最恶心的 **“超时”**状态。请求发出去没?不知道。对方收到了没?不知道。对方处理完了没?还是不知道。架构师的思维转变:做单体是“基于确定性”编程,做分布式是“基于不确定性”防御