摘要: 本文为Rest论文的第二章节基于网络应用的架构学习总结,该章同第一章软件架构一样继续讨论论文的背景,主要是对论文要讨论的范围进行一个定义
本文讨论的范围限制在基于网络
应用的架构风格
基于网络的架构组件之间的通信仅限于消息传递或者消息传递的等价物
Tanenbaum和van Renesse是这样区分两者:基于网络的系统有能力跨越网络运行,分布式好像是普通的集中式系统,但是运行在多个独立的CPU上
应用软件的架构是对于整个系统的一种抽象,用户动作的目的可以被表示为功能性的架构属性,而网络抽象目的则是将bit从一个地点移动到另一个地点,不关心为何移动
只有在应用的层面上我们才可以拿到详细的运行参数(交互参数、应用状态参数、吞吐量等)等去评估设计上的权衡,所以我们讨论的范围需要限制在对应用软件架构的讨论
基于网络应用的性能首先取决于应用的需求,然后是所选择的交互风格,接下来是实现架构,最后是每个组件的实现
延迟与完成时间区别在于一个能够增量的处理数据一个是全部处理完。例如页面的异步加载与全部加载完毕
我们可以通过以下方法来改善可伸缩性:简化组件、将服务分布到很多组件(对交互去中心化)、以及通过监控对交互和配置进行一般控制
影响:
可修改性包括可进化性(一个组件改变不会对其他组件产生负面影响)、可扩展性、可定制性(临时定义的支持)、可配置性(部署之后修改的支持)、可重用性,我们在对一个已部署的应用做出改变时候,不应该去停止和重新启动整个系统,还要准备好应对随着时间的变化产生的兼容性
可见性是指一个组件对于其他两个组件之间的交互进行监视和斡旋(wo xuan)的能力
拥有了可见性之后,就能够通过多个交互共享的缓存来改善性能、通过分层服务来改善可伸缩性、通过反射式监控来改善性能、通过允许防火墙等中间件对交互做检查来改善安全性
这里的可移植性指的是软件能够在不同环境下运行,例如虚拟机架构风格以及那些限制只使用标准格式的数据元素的架构风格
从应用的架构角度来说,可靠性可以被看作架构元素出现故障影响的程度
可以通过避免单点故障、增加冗余、允许监视、以及将故障的范围缩小到一个可恢复的动作