大型站点技术架构(三)--架构核心要素
所谓架构,一种通俗的说法就是“最高层次的规划,难以改变的决定”,这些规划和决定奠定了事物未来发展的方向和终于的蓝图。
而软件架构即“有关软件总体结构与组件的抽象描写叙述,用于指导大型软件系统各方面的设计”。
一般来说软件架构须要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素。
1、性能
性能是站点架构设计的一个重要方面。不论什么软件架构设计方案都必须考虑可能带来的性能问题。
也正由于性能问题差点儿无处不在,所以优化站点性能的手段或许多:
浏览器端:能够通过浏览器缓存、页面压缩传输、合理布局页面、降低Cookie传输等手段。甚至能够使用CDN加速功能。
应用server端:能够使用server本地缓存和分布式缓存,也能够通过异步操作方式来加快响应。在高并发请求的情况下。能够将多台应用server组成一个集群共同对外服务,提高总体处理能力。改善性能。
数据库server端:可用使用索引、缓存、SQL性能优化等手段。还能够使用NoSQL数据库来优化数据模型、存储结构等。
衡量站点性能有一系列指标。重要的有响应时间、TPS、系统性能计数器等,通过这些指标以确定系统设计是否达到目标。
2、可用性
可用性就可以以不间断提供服务的时间。差点儿全部站点都承诺7×24小时可用,但其实不论什么站点都不可能达到全然的7×24,总会有一些故障时间。扣除这些故障时间,就是站点的可用时间。一些大型站点可以做到4个9以上的可用性。也就是99.99%。
站点高可用的主要手段就是冗余。应用部署在多台server上同一时候提供服务,数据存储在多台server上相互备份,不论什么一台server都不会影响应用的总体能够,通常的实现手段即把多台server通过负载均衡设备组成一个集群。
衡量一个系统架构设计是否满足高可用的目标,就是如果系统中不论什么一台或者多台server宕机时。以及出现各种不可预期的问题时,系统总体是否依旧可用。
3、伸缩性
大型站点须要面对大量用户的高并发訪问和存储海量数据,站点通过集群的方式将多台server组成一个总体共同提供服务。
所谓伸缩性是指通过不断向集群中增加server的手段来缓解不断总体上市用户并发訪问压力和不断增长的数据存储需求。
衡量架构伸缩性的主要标准就是是否可用多台server构建集群,是否easy向集群中加入新的server。加入新的server后能否够提供和原来的server无区别的服务。集群中可容纳的总server数量是否有限制。
4、扩展性
不同于其它架构要素主要关注非功能性需求。站点的扩展性架构直接关注站点的功能需求。站点高速发展。功能不断扩展,怎样设计站点的架构使其可以高速响应需求变化,是站点可扩展架构的主要目标。
衡量站点架构扩展性好坏的主要标准就是在站点添加新的业务产品时,能否够实现对现有产品透明无影响,不同产品之间是否非常少耦合等。
站点可扩展架构的主要手段是事件驱动架构和分布式服务。
事件驱动通常利用消息队列实现,通过这样的方式将消息生产和处理逻辑分隔开。
server服务则是将业务和可复用服务分离开来,通过分布式服务框架调用。
新添加产品可用通过调用可复用的服务来实现自身的业务逻辑,而对现有产品没有不论什么影响。
5、安全性
互联网是开发的,不论什么人在不论什么地方都能够訪问站点。站点的安全架构就是保护站点不受恶意訪问和攻击。保护站点的关键数据不被窃取。
衡量站点安全架构的标准就是针对现存和潜在的各种攻击和窃密手段,是否有可靠的应对策略。