软件架构需要关注
- 性能
- 可用性
- 伸缩性
- 扩展性
- 安全性
这 5 个架构要素,架构设计过程中需要平衡这5个要素之间的关系以实现需求和架构目标,也可以通过考察这些架构要素来衡量一个软件架构设计的优劣,判断其是否满足期望。
接下来,本文会分别对这 5 个架构要素进行逐一介绍。
一、性能
性能是网站的一个重要指标。
一个打开缓慢的网站会导致严重的用户流失,很多时候网站性能问题是网站架构升级优化的触发器。可以说性能是网站架构设计的一个重要方面,任何软件架构设计方案都必须考虑可能会带来的性能问题。
也正是因为性能问题几乎无处不在,所以优化网站性能的手段也非常多,从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。
二、可用性
对于大型网站,特别是那些知名的网站,网站瘫痪,服务不可用是一件重大事故!
轻则影响声誉,重则摊上官司。所以网站的可用性对于网站,尤其是大型网站至关重要!因此几乎所有网站对外都宣称支持7x24的可用服务。
网站高可用的主要手段是冗余。
对于应用服务器而言,多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务,任何一台服务器宕机,只需要把请求切换到其他服务器就可实现应用的高可用,但是一个前提条件是应用服务器上不能保存请求的会话信息。否则服务器宕机,会话丢失,即使将用户请求转发到其它服务器上也无法完成业务处理。
衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。
三、伸缩性
所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。
对于应用服务器集群,只要服务器上不保存数据,所有服务器都是对等的,通过使用合适的负载均衡设备就可以向集群中不断加入服务器。
四、扩展性
所谓扩展性指的是添加新功能时对现有系统的其它应用无影响,这就要求不同应用具备低耦合的特点。
实现网站的可扩展架构主要有以下两种手段:
- 事件驱动结构
- 分布式服务
事件驱动架构通常利用消息队列来实现,将用户请求和其他业务事件构造成消息发布到消息队列,消息的处理者作为消费者从消息队列中获取消息进行处理。通过这种方式将消息产生和消息处理分离开来,可以透明地增加新的消息生产者任务或者新的消息消费者任务。
使用分布式服务将业务和可复用的服务分离开来,业务使用分布式服务框架调用可复用的服务。新增的产品可以通过调用可复用的服务来实现业务逻辑,对其它产品没有影响。
五、安全性
要求系统在应对各种攻击手段时能够有可靠的应对措施。
网站的安全架构保护网站不受恶意访问和攻击,保护重要数据不被窃取。
六、总结
上面所介绍的性能、可用性、伸缩性、扩展性、安全性是网站架构最核心的几个要素。这几个问题解决了,大型网站架构设计的大部分挑战也就克服了。