paulwong

读书笔记-架构2

改善非功能需求的最佳实践

冗余
负载均衡
方式有网络切换、集群管理、基于DNS配置的切换
算法有随机算法、选择响应时间最快的算法、选择负载最轻的算法、重型算法
失败转移

集群
将服务器组成一组,来统一进行管理,检测软、硬件的失败,处理系统的失败转移,自动因失败事件而重启

集群配置方式
两节点集群、集群对、Ring、N+1、N to N

改善性能
性能有两个关键点:
处理时间,从计算、数据调度、缓存和网络传输
阻塞时间,来源于资源竞争和另一流程的依赖

处理措施
使用好的算法或适用的技术
引入并行计算、限制并发请求以避免系统过度使用、TIME OUT措施

高可用
可用是指随时才能访问,不能访问的原因是硬件、网络、服务器软件、和应用组件的失败;
如果一个应用组件不能提供足够快的响应时间也是指不可用了,这是指系统正常运行情况下,由于正在同时处理很多任务而导致的延时。

改善措施
集群中的复制,有活跃式的复制:发给所有节点,节点都同时进行运算,但只采用其中一个作为响应;被动式的复制,只有主节点响应请求,其他节点与主节点同步。

扩展性改善
扩展的原因通常是因为需求的变更。最重要的目标是改善系统开发以适应快速的变化。

可采取的方法有:
定义清晰的范围、预知可能的变更(如果界面技术,隔离这一区域使其不能波及到其他地方)、使用高质量的对象模型(使用MVC模式来解耦界面组件和业务组件)

伸缩性的改善
垂直伸缩:增加处理器或内存等,对系统是透明的;
水平伸缩:增加服务器,必须避免对服务器物理位置的依赖。

架构中的层

两层结构的系统

指C/S架构的程序。通常指包含了展示和业务逻辑的客户端和服务器上的数据库。展示和业务逻辑紧密结合。

优点
安全是一点,由于这些系统是位于防火墙后面,员工不能使用不安全的的PC。性能通常比较好,如果公司不使用比较老的很少内存的电脑的话。

缺点
可用性是一个缺点,因为如果一个元件不能工作的时候,整个系统就变得不可用。
伸缩性是一个问题,由于维一能够增加的元件是数据库。
为了能增加新功能,你很明显会影响到其他元件,扩展性不行。
可管理性也是一个问题,监控所有正在运行客户端的PC是不可能的。
可维护性和可扩展性一样。
可靠性不是一个优点或缺点,由于请求增加时,所有的这些请求来到数据库,所有的数据库能处理增长的交易吞吐量。

三或多层架构的系统
三层架构由WEB,业务逻辑和资源层组成。多层架构的系统有WEB,业务逻辑,整合和资源层。在非功能需求方面,三层和多层架构的系统拥有相同的优点和缺点。

优点
当将展示层逻辑从PC客户端移到服务器端,而能被集群时,伸缩性被改善了。
由于集群层能够提供失败转移机制,可用性也有所改善。
由于功能被分解到不同的层中,扩展性也有所改善。你可以更改表现层又能使得对业务逻辑影响最小。
对于可维护性也是这样。
由于各层是部署在服务器上,使得监控各个元件变得更容易,这样可管理性也提高了。
分层对于安全性可以做得更多,但必须小心对性能造成影响。
性能可能是优点或缺点。主要还是优点,当分割线程到各服务器上时,如果你要在服务器间传送大数据时,这时可能会变成缺点了。

缺点
多层系统原生是比较复杂,多层架构的系统其实是没有所谓的缺点。虽然这样说,并不会由于你有了多层设计,你就有了很好的架构。必须记得不要过度使用层数。

小结
架构是一系列的使得系统能够由一组具有自己的上下文的简单的子系统组成的结构规则。

性能是指系统的响应时间,如必须在3秒内响应。

伸缩性是指当访问量增加时可以增加冗余的组件,部署到增加的服务器上时,原系统无须作更改。C/S结构的系统,由于系统安装在客户端,就不能作这种伸缩。

扩展性,是指增加或修改功能时对现有的系统不会构成影响。如MODEL1的情形,系统没有分层,所有代码混在一起,更改时会互相影响。

可靠性,是指访问量增加的时候,事务有保证。通常数据库对增加的请求,事务的保证方面已经是有所处理了。

可用性,是指系统中的某个元件失败时,系统还能访问。如果是C/S架构的系统,无法分层,某个元件出现问题时,系统就不可用了。

可维护性,是指调整现有的系统流程,不会影响到其他元件。

可管理性,是指能监控系统伸缩能力,可靠性,可用性,性能和安全。

安全性,是指系统能够阻挡非法访问。

posted on 2012-07-23 17:58 paulwong 阅读(277) 评论(0)  编辑  收藏 所属分类: SOFTWARE ARCHITECTURE


只有注册用户登录后才能发表评论。


网站导航: