前面我们说过,微服务的拆分方式,反映的是其背后技术团队的组织方式。
那,技术团队的组织方式是什么决定的呢?
是由系统内各部分天然的内聚性决定的:用户相关的业务和商品相关的业务都有很强的内聚性,它们之间不会主动发生关联,但它们会分别和订单发生关联。
我们用商品下单处理流程来推演一个电商订单的生命周期内对用户、商品、订单三个部分数据库的读写情况。
我们可以看出,大部分情况下,每一步都只有一个主要的微服务被需要,其它微服务都处于辅助地位:只读,且大部分都是单点读取。这就为我们降低了数据库单点的负载——只要把这三个微服务部署到三个独立的数据库上,就可以通过 API 调用的形式降低单个数据库的极限 QPS。
既然我们不能把拼多多和淘宝的系统称作一个系统,那么,在拼多多和淘宝系统内,肯定还可以基于类似的逻辑继续拆分:
把几乎不相互写入的数据拆到两个数据库上,这种组织形态在人类社会随处可见:两个国家的人分别在自己国家申请护照,他们有时也可以到对方国家内的本国领事馆申领本国护照;两个村的人各自在本村的井里打水,有时也可以不怕麻烦地去隔壁村的水井里打水;你每天早上都用滴滴打车上班,万一滴滴打不到车你还可以用高德来补救...
微服务的拆分思想相信大家都理解了,下面我们来解决现实问题。
如果你真的成为了“设计百万 QPS 系统”的架构师,相信我,你第一个想到的,一定是“削峰”。
📙 高并发的哲学原理 《Philosophical Principles of High Concurrency》
Copyright © 2023 吕文翰