• 结合《大型网站技术架构:核心原理与案例分析》第五、六章分析《某重大技术需求征集系统》


      网站的可用性描述网站可有效访问的特性。网站的可用性战术是网站有效运行的根本保障,一个网站的高可用性能够给用户很大的安全感,最大限度的保障用户的利益、隐私不被侵犯。百度被黑客攻击,其DNS域名被劫持,导致百度全站长达数小时不可访问。对百度的造成很大的负面影响。由于经费有限,硬件设备在节约成本的同时也降低了可用性,所以硬件故障就发生的比较频繁,因此,网站的高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问。

      经典型的分层模型MVC,即应用层、服务层、数据层。应用层主要负责具体业务逻辑处理;服务层负责提供可复用的服务;数据层负责数据的存储与访问。在复杂的大型网站架构中,划分的粒度会更小、更详细,结构更加复杂,服务器规模更加庞大,但还是能够将其划分到应用层、服务层和数据层。

           中小型网站在具体部署时,通常将应用层和服务层部署在一起,而数据层则另外部署。应用层主要处理网站应用的业务逻辑,应用的一个显著特点是应用的无状态性。不保存状态的应用给高可用的架构设计带来了巨大便利,既然服务器不保存请求的状态,那么所有的服务器完全对等,当任意一台或多台服务器宕机,请求提交给其他任意一台可用机器处理,这样对终端用户而言,请求总是能够成功的,整个系统依然可用。对于应用服务器集群,实现这种服务器可用状态实时监测、自动转移失败任务的机制是负载均衡。网站的伸缩性永无止境。所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。要实现网站的可伸缩性,关键技术就在于如何构建良好的服务器集群。要达到良好的目标,就要求每次扩容和减少服务器时,对整个网站的影响是最小的。

           CAP原理就是选择强化分布式存储系统的可用性和伸缩性,而在某种程度上放弃一致性。CAP原理对于可伸缩的分布式系统设计具有重要意义,不恰当地迎合各种需求,可能会使设计进入两难境地,难以为继。我们的系统有大量的统计数据。我们的网站随时都有可能进行修改,比如发布新功能,这时就需要在服务器上关闭原有的应用,重新部署新的应用,整个过程要求不影响用户的使用。为了把对用户的影响降低到最小,通常使用发布脚本来完成发布。经过严格的测试,软件部署到服务器还是会出现问题,主要原因就是测试环境和线上环境并不相同,所以我们在网站发布时,要把测试通过的代码先发布到预发布机器上,确认系统没有问题后才正式发布。

            网站的可扩展架构是随需而变的。网站的扩展性架构设计,是对现有系统影响最小的情况下,系统功能可持续扩展及提升的能力。扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。它是系统架构设计层面的开闭原则,架构设计考虑未来功能扩展,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性。模块通过分布式部署,独立的模块部署在独立的服务器上集群从物理上分离模块之间的耦合关系。可用性战术将会阻止错误发展成为故障,或者至少能够把错误的影响限制在一定范围内,从而使系统恢复成为可能。

    对于重大技术需求分析系统:

           可用性战术中,有较少的错误检测,但是可用性不高,代码缺陷很多,容易崩溃,不具有大量用户使用的可能。而且容易出现未考虑到的错误,导致系统出问题。

           可修改性:没有遵循“高内聚低耦合”的原则,将整个系统进行分层,数据、应用、操作没有做到相互关联且不被彼此影响,一旦出现错误,可能全盘皆崩,需要重新修改。

  • 相关阅读:
    css3中-webkit-text-size-adjust详解
    CSS 让标点符号不出现在行首
    html.day02
    老生常谈的问题——抽象类与接口
    C# 4个小技巧
    IIS状态代码的含义
    关于线程的synchronized、wait(),notify
    再说粗粒度
    粗粒度与细粒度
    .NET中栈和堆的比较 #1
  • 原文地址:https://www.cnblogs.com/limu/p/8633411.html
Copyright © 2020-2023  润新知