遥远的相似性:经济学原理如何应用于技术架构
1 比较优势原理
1.1 基本概念
我们首先介绍一个经济学概念:比较优势原理。假设有A和B两个小镇,两镇居民都以制作足球和篮球为生:
- 做1个足球:A需要100小时,B需要80小时
- 做1个篮球:A需要200小时,B需要40小时
我们可以得到如下结论:
- 做1个足球和1个篮球
- A需要300小时
- B需要120小时
- 全社会420小时拥有2个足球、2个篮球
1.2 成本分析
本章节分析A和B做足球和篮球的成本,注意计算过程不是A和B互相比较,而是自己与自己比较。
- A成本分析
- 做1个足球成本:(100/200) = 0.5个篮球
- 做1个篮球成本:(200/100) = 2个足球
- B成本分析
- 做1件足球成本:(80/40) = 2个篮球
- 做1个篮球成本:(40/80) = 0.5个足球
根据计算结果可以得出结论:
- 做足球成本:A小于B
- 做篮球成本:B小于A
1.3 核心内容
根据成本分析可以知道,A擅长做足球,B擅长做篮球。如果A只做足球,B只做篮球会有什么效果?
- A用300小时只做足球:(300/100) = 3个足球
- B用120小时只做篮球:(120/40)= 3个篮球
- 全社会420小时拥有3个足球、3个篮球
- 分工后整个社会多出1个足球、1个篮球
比较优势原理核心内容是:单个个体将有限资源只用来生产具有比较优势的产品,全社会总产值可以达到最大值。
亚当斯密对分工合作持积极态度,其认为分工合作有以下三个优点:
- 降低工作切换成本
- 促进工人熟能生巧
- 促进机器替代人力
正如《理性乐观派》这本书所表达的核心思想:分工和交易是人类本能,正是这种本能把全人类带到了如今之高度。
2 遥远的相似性
在不同领域经过广泛实践的理论,看似无关但又有相通之处,这就是人类智慧之结晶。我们不难在互联网技术领域找到【分工与交换】思想之应用。
2.1 架构演进
互联网应用由单点架构到SOA、再到微服务架构,这种演进过程就是划分职责(分工)与相互通信(交换)之体现
2.2 领域划分
在架构设计时,领域与领域之间,工程与工程之间边界明确,职责清晰,互不越界,各司其职,领域与领域间通过协议进行通信
2.3 组织划分
技术团队大体可以划分为中间件团队和业务团队。中间件团队又划分为消息中心、缓存中心、配置中心、大数据中心等等。业务团队又划分为订单中心、用户中心、商品中心等等
2.4 拆分任务
2.4.1 任务未拆分
- 一个机构有2名员工
- 每个员工全天工作8小时
- 全流程业务处理需要2小时
- 全天接待人次 = 2 x 8 x 0.5 = 8
2.4.2 任务拆分
- 总业务拆分为两个子流程
- 每个子任务需要1小时
- 员工1仅处理A业务
- 员工2仅处理B业务
- 全天接待人次 = 2 x 8 x 1 = 16
3 付出的成本
3.1 思维陷阱
如果分工过细一个技术人员很难感受到架构全貌,容易陷入手里有把锤子,看什么都像钉子这个思维陷阱。例如提升系统性能,服务端开发最容易想到加缓存,但这仅仅是从缓存层去思考,作为架构师应该进行更全面的思考。
3.1.1 四个方法
- 减少请求
- 空间换时间
- 任务并行化
- 任务异步化
3.1.2 五个层面
- 代理层
- 前端层
- 服务层
- 缓存层
- 数据层
3.1.3 实际应用
(1) 减少请求 + 前端层
在秒杀场景中设置前置验证码
(2) 减少请求 + 服务层
多次RPC是否可以转换为一次批量RPC
(3) 空间换时间 + 服务层
引入缓存
(4) 空间换时间 + 缓存层
引入多级缓存
(5) 空间换时间 + 数据层
新增索引
(6) 任务并行化 + 服务层
如果多个调用互不依赖,使用Future并行化
(7) 任务异步化 + 服务层
如果无需等待返回结果,可以异步执行
3.2 复杂度上升
《为什么需要生物学思维》这本书中提到复杂系统形成的四个原因:吸积,交互,必须处理的意外情况、普遍的稀有事务,交互是复杂系统四要素之一。
交互带来两种特性:第一是互操作性。在搜索引擎上查询去某地怎么走,搜索引擎会告诉你打车需要多长时间,并提供一个打车按钮。第二是相互依赖性。例如下订单时需要使用优惠券,如果促销系统出现问题时就会影响订单系统。
一个技术系统不仅作用于自身,还会与其它大量系统产生交互。例如下单购买一件商品,订单系统,商品系统,支付系统,物流系统,促销系统多个系统之间会交互协作。由于交互特性的出现,复杂度呈现几何级数上升。
3.3 沟通成本上升
大家应该看过【你比划我猜】这种游戏形式,一个词语从第一个人传到最后一个人,往往根本不是同一回事,这就是交互产生的信息噪音。
分工合作需要成员相互协作,但是如果沟通不畅,信息传递不及时或不准确,可能会导致任务延误或错误。
4 文章总结
第一本文通过实例介绍了经济学中比较优势原理。第二本文不同领域有相通之处,例如技术架构中架构演进、领域划分、组织划分与任务拆分都体现了分工与交互。第三本文介绍了分工合作需要注意的问题,例如思维陷阱、复杂度上升与沟通成本上升,希望本文对大家有所帮助。
转载自:https://juejin.cn/post/7219332033721122873