目录
- 架构的本质
- 架构的分类
- 分布式架构
- 分布式架构的定义
- 分布式架构的意义
架构的本质
一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。架构的本质就是对系统进行有序化重构,使系统不断进化
那架构是如何实现无序到有序的呢?
基本的手段就是分和合,先把系统打散,然后重新组合。
分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分。
合就是根据最终要求,把各个分离的组件有机整合在一起,相对来说,第一步的拆分更难。拆分的结果使开发人员能够做到业务聚焦、技能聚焦,实现开发敏捷,合的结果是系统变得柔性,可以因需而变,实现业务敏捷。
架构的分类
架构一般可分业务架构、应用架构、技术架构
- 业务架构从概念层面帮助开发人员更好的理解系统,比如业务流程、业务模块、输入输出、业务域
- 应用架构从逻辑层面帮助开发落地系统,如数据交互关系、应用形式、交互方式,是的整个系统逻辑上更容易理解,步入大家熟知的 SOA 就属于应用架构的范畴
- 技术架构主要解决技术平台选型、如操作系统、中间件、设备、多机房、水平扩展、高可用等问题
需要注意的是,系统或者架构首先都是为人服务的,系统的有序度高,运用逻辑合理,业务概念清晰是第一位。现在大家讨论更多的是技术架构,如高并发设计,分布式事务处理等,只是因为这个不需要业务上下文背景,比较好相互沟通。具体架构设计时,首先要关注业务架构和应用架构。
分布式架构
分布式架构的定义
简单来说,分布式系统是指位于网络计算机上的组件仅通过传递消息来通信和协调目标系统。这里面有两个重要因素
- 组件是分布在网络计算机上
- 组件之间仅仅通过消息传递来通信并协调行动
分布式系统其实也可以认为是一种去中心化的实现思路,对于用户来说是无感知的
分布式架构的意义
从单机单用户到单机多用户,再到现在的网络时代,应用系统发生了很多的变化,为什么要用分布式系统呢?
- 升级单机处理能力的性价比越来越低
- 单机处理能力存在瓶颈
- 对于稳定性和可用性的要求
我们知道,单台机器的处理能力包括 CPU、内存、磁盘和网络。通过不断提升单台机器的性能所带来的产值是不划算的,同时,处理器本身也存在性能瓶颈。还有一个很重要的因素,稳定性和可用性方面,在单机环境中是提供不了的。所以势必需要分布式系统来解决