系统架构
什么是系统架构?
系统架构组成元素的结构化
接口及其相互协作
指导性架构风格
原型 ---> 发现/改进 ---->再发现/再改进
系统架构要素:扩展性、伸缩性、安全性、可用性、性能
可扩展性:重要是软件设计范畴,保证只用很少的添加就可以实现功能的演进和增长(关系型数据库的扩展性很差)
可伸缩性:计算能力的设计指标,一中系统的弹性。高性能、低成本的可维护性,可以通过水平的伸缩通过扩展硬件、保证系统的处理能力的增长优化。横向可伸缩性(更高级的硬件),纵向可伸缩性(集群)。
可用性:系统在时间段内响应服务的效率。稳定可用性,瞬时可用性。保证系统的高可用性,当出现特殊情况应该怎么来做,是否在终极情况下用重试、热备份、失效转移。等保证服务可用方案。
性能:处理用户的能力,包括一系列的指标:响应时间、并发数、吞吐量以及计算能力。
安全性:就是安全性。
架构发展的基本策略
系统架构是如何发展的?
架构的发展基本都是从原来的一坨混沌通过以下几种场景下不断演进知道现在的样子。
人、业务、复杂度随着时间不断演进。
理解、维护和改进系统
粗粒度的抽象和分离
系统架构设计的跟模式和切入点。
划分系统和系统设计问题:
如何与环境交互?
处理流程如何组织?
支持什么样的变化?
应用的生命周期?
最基本的设计分层:最基本的功能划分,常见的页面层->逻辑服务层->dao数据层
看上去这个结构清晰明了,容易用新的实现替换原有层次,层次间依赖很少。但是系统性能降低,而且同一功能的级联造成互相依赖增强,开发成本大大增加
由此在交互设计的优化下出现的更好的交互型设计如MVC mvp等设计架构。
mvc还是只能适用于小型规模的应用程序,系统的功能增多增大各个模块就需要分割处理
此问题由出现的由数据驱动功能设计。但是基于数据的功能服务没有统一管理,会造成功能的冗余。更进步又出现了微核心服务概念。
这样通过一个一个问题的解决,原来的分层结构就不停演进成了现在的样子。