分布式系统架构设计 – 第19式 - 分布式系统八卦思维模型

前言

懂得很多道理,仍旧过不好这一生。懂得很多分布式系统的概念以及设计方法,依旧做不好分布式系统。分布式系统设计是一门实践软件工程,只有你PK过设计方案,手把手的敲过一行行的代码,才能知道细节在哪里,难点在哪里,痛点、挑战点在哪里,不是看书或者看文章就可以完全掌握的。因此,宏观处着眼,微观处着手,才能完全掌握分布式系统设计的道理。本文抽象出分布式系统的思维模型,当你看到这个模型里的字眼与图画,就可以从脑海里分解出一个个设计方案、一行行代码的时候,那才是真的掌握了分布式系统的精髓。

分布式系统八卦思维模型

这里我提出一个分布式系统八卦思维模型,如下图,其要义如下:

分布式系统思维模型

方法论

核心:在前面的文章里讲到可以用一句话来描述分布式系统:

分布式系统是指其组件位于不同的网络计算机上的系统,这些组件通过相互传递消息来进行通信和协调其动作,且彼此相互交互以完成一个共同的任务目标。

并且提到了“系统 = 要素 + 连接 + 目标” , 这个思维模型的核心即分布式系统的第一性原理, 公式:“分布式系统 = 计算机 + 网络 + 协同”,要素是计算机(新的虚机、容器也算),连接是网络,目标是协同以完成共同任务。

提供:即服务接入的提供,指的是对外提供restful 接口服务:权限、多组合、监控、审计、计费等,对外提供SQL服务接入接口服务、对外提供自然语言接入接口服务等
注册:即服务注册,将集群的工作负载注册到集群注册中心
配置:即配置管理,将集群的配置管理在配置中心;
调用,即服务调用,各种RPC调用,系统内的消息传递
路由:即服务路由,目的是集群的负载均衡与扩伸缩性
观测:指的是集群内部指标的可观测性,即监控、告警、追踪、日志
治理:指的是集群内部的服务治理:熔断、降级、限流、隔离、容错
编排:即服务编排,基于k8s+ docker,完成安装、升级、扩容、运维、调度等;
质量:指的是安装部署运维质量、客户质量、用户质量与开发质量
边界:指的是系统内的约束条件,涵盖 硬件资源、客户约束、用户约束以及团队约束

这10个功能与核心之间是互相联系、互联影响的,因此类似于一个八卦图。

底层思维

1
抽象、分层、解耦、拆分、聚合、治理、取舍、质量、边界、模型、演化

抽象、分层、解耦、拆分、聚合、治理、取舍、质量、边界、模型、演化是分布式系统设计的底层思维,也是软件工程的底层思维,这个主题很难掌握,目前,这里不展开讲。

基石假设

分布式系统有两个隐含的基石假设,即 “资源协同与质量可预测”,资源即计算机、虚拟机、容器以及网络,基于此,分布式系统的第一性原理 即: “分布式系统 = 计算机 + 网络 + 协同 ,以质量为度量”。

小结

本文提出一个分布式系统八卦思维模型。分布式系统不是我首创,用这个类八卦图形来表示思维模型也不是我首创,但是用这个类八卦图形表示分布式系统思维模型应该是我首创,目前不管是书籍还是网络都找不到这样的分布式系统思维模型。日拱一卒,功不唐捐,分享是最好的学习,与其跟随不如创新,希望这个知识点对大家有用。另作者能力与认知都有限,”我讲的,可能都是错的“,欢迎大家拍砖留念。

作者简介

常平,中科大硕,DELL EMC 资深首席工程师,曾就职于Marvell、AMD,主要从事Linux内核以及分布式产品的交付、架构设计以及开发工作。

版权申明

本文的版权协议为 CC-BY-NC-ND license:https://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh

在遵循署名、非商业使用(以获利为准)以及禁止演绎的前提下可以自由阅读、分享、转发、复制、分发等。