大型网站核心架构要素程性能与可用性序员必读

当前位置: 主页 > 建站资讯 > |2018-06-29| 发布者: admin| 查看: |

       关于什么是架构,一种比较通俗的说法是“最高层次的规划,难以改变的决定”,这些规划和决定奠定了事物未来发展的方向和最终蓝图。
       具体到软件架构,维基百科是这样定义的:“有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计”。系统的各个重要组成部分及其关系构成了系统的架构,这些组成部分可以是具体的功能模块,也可以是非功能的设计与决策,他们相互关联组成一个整体,共同构成了软件系统架构。
       一般来说,除了当前的系统需求外,软件架构还需要关注性能,可用性,伸缩性,扩展性和安全性这5个架构要素,架构设计过程中需要平衡这5个要素之间的关系以实现需求和架构目标,也可以通过考察这些架构要素来衡量一个软件架构设计的优劣,判断其是否满足期望。
1.性能
      性能是网站的一个重要指标,除非是没得选择(比如只能到www.12306.cn这一个网站上买火车票),否则用户无法忍受一个响应缓慢的网站。一个打开缓慢的网站会导致严重的用户流失,很多时候网站性能问题是网站架构升级优化的触发器。可以说性能是网站架构设计的一个重要方面,任何软件架构设计方案都必须考虑可能会带来的性能问题。
      也正是因为性能问题几乎无处不在,所以优化网站性能的手段也是非常多,从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。
      在浏览器端,可以通过浏览器缓存,使用页面压缩,合理布局页面,减少Cookie传输等手段改善性能。
      还可以使用CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务负载压力。
      在应用应用服务器端,可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻数据库负载压力。
       也可以通过异步处理操作将用户请求发送至消息列队等待后续任务处理,而当前请求直接返回响应给用户。
       在网站有很多用户高并发请求下,可以将多台应用服务器组成一个集群共同对外服务,提高整体处理能力,改善性能。
       在代码层面,也可以通过使用多线程,改善内存管理等手段优化性能。
       在数据库服务器端,索引,缓存,SQL优化等性能优化手段都已经比较成熟。而方兴未艾的NoSQL数据库通过优化数据模型,储存空间,伸缩特性等手段在性能方面的优势也日趋明显。
       衡量网站性能有一系列指标,重要的有响应时间,TPS,系统性能计数器等,通过测试这些指标以确定系统设计是否达到目标,预测网站容量,并对异常指标进行报警,保障系统可用性。
       对于网站而言,性能符合预期仅仅是必要条件,因为无法预知网站可能会面临的访问压力,所以必须要考察系统在高并发访问情况下,超出负载设计能力的情况下可能会出现的性能问题。网站需要长时间持续运行,还必须保证系统在持续运行且访问压力不均的情况下保持稳定的性能特性。
2.可用性
       对于大型网站而言,特别是知名网站,网站宕掉,服务不可用是一个重大的事故,轻则影响网站声誉,重则可能会摊上官司。对于电子商务类网站,网站不可用还意味着损失金钱和用户。因为几乎所有网站都是承诺7乘24可用,但事实上任何网站都不可能达到完全的7乘24可用,总会有一些故障时间,扣除这些故障时间,就是网站的总可用时间,这个时间可用换算成网站的可用性指标,以此衡量网站的可用性,一些知名大型网站可以做到4个9以上的可用性,也就是可用性超过99.99%。
      因为网站使用的服务器硬件通常是普通的商用服务器,这些服务器的设计目标本身并不保证高可用性,也就是说,很有可能会出现服务器硬件故障,也就是俗称的服务器宕机。大型网站通常都会有上万台服务器,每天都必定会有一些服务器宕机,因此网站高可用架构设计的前提是必然会出现服务器宕机,而高可用设计的目的就是当服务器宕机的时候,服务或者应用依然可用。
      网站高可用的主要手段是冗沉,应用部署在多台服务器上同时提供访问,数据储存在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。
      对于应用服务而言,多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务,任何一台服务器宕机,只需把请求切换到其他服务器就可实现应用的高可用,但是一个前提条件是应用服务器上不能保存请求的会话信息。否则服务器宕机,会话丢失,即使将用户请求转发到其他服务器上也无法完成业务处理。
       对于储存服务器,由于其上储存数据,需要对数据进行实时备份,当服务器宕机时需要将数据访问转移到可用的服务器上,并进行数据恢复以保证继续有服务器宕机的时候数据依然可用。
       除了运行环境,网站的高可用还需要软件开发过程的质量保证。通过预发布验证,自动化测试,自动化发布,灰度发布等手段,减少将故障引入线上环境的可能,避免故障范围扩大。
       衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预测的问题时,系统整体是否依然可用。

上一篇:大型网站冗余与自动化的深度解读与分析必读

下一篇:企业建站一般不让说的基本流程“防止入坑”指

 
QQ在线咨询
售前咨询热线
182-5900-8528
售后服务热线
156-5917-6979
返回顶部