Web 架构的关键属性及五种风格
评估 Web 架构的关键属性
HTTP 协议应当在以下属性中取得可接受的均衡:
- 性能 Performance:影响高可用的关键因素
- 可伸缩性 Scalability:支持部署可以互相交互的大量组件
- 简单性 Simplicity:易理解、易实现、易验证
- 可见性 Visiable:对两个组件间的交互进行监视或者仲裁的能力。如缓存、分层设计等
- 可移植性 Portability:在不同的环境下运行的能力
- 可靠性 Reliability:出现部分故障时,对整体影响的程度
- 可修改性 Modifiability:对系统作出修改的难易程度,由可进化性、可定制性、可扩展性、可配置性、可重用性构成
架构属性:性能
- 网络性能 Network Performance
Throughput 吞吐量:小于等于带宽 bandwidth
• Overhead 开销:首次开销,每次开销 - 用户感知到的性能 User-perceived Performance
• Latency 延迟:发起请求到接收到响应的时间
• Completion 完成时间:完成一个应用动作所花费的时间 - 网络效率 Network Efficiency
• 重用缓存、减少交互次数、数据传输距离更近、COD
架构属性:可修改性
• 可进化性 Evolvability:一个组件独立升级而不影响其他组件
• 可扩展性 Extensibility :向系统添加功能,而不会影响到系统的其他部分
• 可定制性 Customizability :临时性、定制性地更改某一要素来提供服务,
不对常规客户产生影响
• 可配置性 Configurability :应用部署后可通过修改配置提供新的功能
• 可重用性 Reusabilit :组件可以不做修改在其他应用在使用
5 种架构风格
数据流风格 Data-flow Styles
- 管道与过滤器 Pipe And Filter,PF
• 每个 Filter 都有输入端和输出端,只能从输入端读取数据,处理后再从输出端产生数据
- 统一接口的管道与过滤器 Uniform Pipe And Filter,UPF
• 在 PF 上增加了统一接口的约束,所有 Filter 过滤器必须具备同样的接口
复制风格 Replication Styles
- 复制仓库 Replicated Repository, RR
• 多个进程提供相同的服务,通过反向代理对外提供集中服务 - 缓存 $
• RR的变体,通过复制请求的结果,为后续请求复用
分层风格 Hierarchical Styles
移动代码风格 Mobile Code Styles
- 虚拟机 Virtual Machine, VM
• 分离指令与实现 - 远程求值 Remote Evaluation, REV
• 基于 CS 的 VM,将代码发送至服务器执行 - 按需代码 Code on Demand, COD
• 服务器在响应中发回处理代码,在客户端执行 - 优秀的可扩展性和可配置性,提升用户可察觉性能和网络效率
• 分层、按需代码、缓存、无状态、客户端服务器
Layered-Code-on-Demand-Client-Cache-Stateless-Server, LCODC$SS
• LC$SS+COD - 移动代理 Mobile Agent, MA
• 相当于 REV+COD