在分布式软件架构中,一般来说,对于系统的分离有两种方式,一种是以服务的种类来做分离,一种是以用户来做分离
按服务的种类来做分离
例如下图,将系统分成了用户、商品、社区三个版块。三个板块分别使用不同的域名、服务器和数据库,做到从接入层到应用层再到数据层三层完全隔离。这样一来,在物理上来说,一个版块的故障就不会影响到另一版块。
面这种架构虽然在系统隔离上做得比较好,但是也存在以下一些问题。
- 如果需要同时获得多个版块的数据,那么就需要调用多个服务,这会降低性能。注意,这里性能降低指的是响应时间,而不是吞吐量(相反,在这种架构下,吞吐量可以得到提高)。
对于这样的问题,一般来说,我们需要小心地设计用户交互,最好不要让用户在一个页面上获得所有的数据。对于目前的手机端上来说,因为手机屏幕尺寸比较小,所以,也不可能在一个屏幕页上展示太多的内容。
先做一个 plan 的 API 调用,然后各个子系统 reserve 住相应的资源,如果成功,则 Commit;如果有一个失败,则整体 Cancel。这其实很像阿里的 TCC – try confirm/cancel。
此文章为3月Day14学习笔记,内容来源于极客时间《左耳听风》,强烈推荐该课程!