做者:13
GitHub:https://github.com/ZHENFENG13
版权声明:本文为原创文章,未经容许不得转载。
此篇已收录至《大型网站技术架构:核心原理与案例分析》读书笔记系列,点击访问该目录获取完整内容。html
所谓架构,一种通俗的说法就是“最高层次的规划,难以改变的决定”,这些规划和决定奠基了事物将来发展的方向和最终的蓝图。git
而软件架构即“有关软件总体结构与组件的抽象描述,用于指导大型软件系统各方面的设计”。github
通常来讲软件架构须要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素。数据库
性能是网站架构设计的一个重要方面,任何软件架构设计方案都必须考虑可能带来的性能问题,也正由于性能问题几乎无处不在,因此优化网站性能的手段也很是多。浏览器
衡量网站性能有一系列指标,重要的有响应时间、TPS、系统性能计数器等,经过这些指标以肯定系统设计是否达到目标。缓存
可用性即可以不间断提供服务的时间。几乎全部网站都承诺7×24小时可用,但事实上任何网站都不可能达到彻底的7×24,总会有一些故障时间,扣除这些故障时间,就是网站的可用时间。一些大型网站能够作到4个9以上的可用性,也就是99.99%。安全
网站高可用的主要手段就是冗余,应用部署在多台服务器上同时提供服务,数据存储在多台服务器上相互备份,任何一台服务器都不会影响应用的总体能够,一般的实现手段即把多台服务器经过负载均衡设备组成一个集群。性能优化
衡量一个系统架构设计是否知足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各类不可预期的问题时,系统总体是否依然可用。服务器
大型网站须要面对大量用户的高并发访问和存储海量数据,网站经过集群的方式将多台服务器组成一个总体共同提供服务。所谓伸缩性是指经过不断向集群中加入服务器的手段来缓解不断总体上市用户并发访问压力和不断增加的数据存储需求。架构
衡量架构伸缩性的主要标准就是是否可用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否能够提供和原来的服务器无差异的服务。集群中可容纳的总服务器数量是否有限制。
不一样于其余架构要素主要关注非功能性需求,网站的扩展性架构直接关注网站的功能需求。网站快速发展,功能不断扩展,如何设计网站的架构使其可以快速响应需求变化,是网站可扩展架构的主要目标。
衡量网站架构扩展性好坏的主要标准就是在网站增长新的业务产品时,是否能够实现对现有产品透明无影响,不一样产品之间是否不多耦合等。
网站可扩展架构的主要手段是事件驱动架构和分布式服务。
互联网是开发的,任何人在任何地方均可以访问网站。网站的安全架构就是保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取。
衡量网站安全架构的标准就是针对现存和潜在的各类攻击和窃密手段,是否有可靠的应对策略。
这个世界没有绝对的安全,正如没有绝对的自由同样,很遗憾,这个世界上没有固若金汤的网站安全架构,咱们只能天天打起百分百的精神,预防可能的漏洞或者攻击。
首发于个人我的博客,2017年5月18日。