zoukankan      html  css  js  c++  java
  • 架构/构建高可用的网站

    前言

    目的 :保证服务器硬件故障时依然可用,数据依然保持并能够访问

    手段:数据和服务的冗余备份以及失效转移机制

    有状态 :在服务端保留之前的请求信息,用以处理当前请求(例如:session)

    无状态 :没有特殊状态的服务,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务器需要的所有参数(例如:http)

    无状态应用的构建(通过负载均衡进行无状态服务的失效转移)

    当服务器不保存请求的状态,那么所有的服务完全对等,当任意一条或多台服务器宕机,请求提交给集群中其它任意台可用机器,对终端用户而言,请求总是能够的,整个系统依然可用

    应用服务器集群的session管理

    session复制

      应用服务器开启Web容器的Session复制功能,在集群中的几台服务器之前同步session对象

      优点:方案简单,可以直接从本机读取Session信息,速度快速,但只能使用在集群规模比较小的情况

      缺点:机器规模较大时,需要大量的通信进行服务器间的Session复制,占用服务器和网络的大量资源,同时每台服务器上都存储了大量备份,在用户访问量过大时,可能出现内存不足的情况

    Session绑定

      利用负载均衡的源地址Hash算法,总是将来源同一IP请求的分发到同一台服务器上

      优点:同一来源请求总是落地同一台服务器上

      缺点:一台某台服务器宕机,那么该机器上的Session就没了,用户切换到其它机器上因为没有Session无法完成业务处理

    cookie记录Session

      将Session记录在客户端,每次请求服务器的时候,将Session放在请求中发送给服务器

      优点:简单易用,可用性高,支持应用服务器的线型伸缩

      缺点:能记录的消息受限,每次请求都需要传输cookie,影响性能,如果用户关闭cookie,访问就会不正常、

    session服务器

      利用独立部署的session服务器(集群)统一管理,应用服务器每次读写Session时,都访问session服务器

    构建高可用的服务

    服务分级,超时设置,异步调用,服务降级,幂等性设计

    服务分级管理 将核心应用于非核心应用进行分离,核心应用和服务优先使用更好的硬件(服务部署上也进行必要的隔离,避免故障的连锁反应)

    超时设计(针对通信)设置服务连接超时时间,一旦超时,应用程序根据服务调度策略,可选择重试或将请求转移到提供相同服务的其它服务器上

    异步调用(消息队列)

    服务降级(保证核心应用和功能的正常运行)

      1 拒绝服务 拒绝低优先级应用的调用,减少服务调用并发数,确保核心应用正常使用,随机拒绝部分请求调用,解决资源,让另一部分请求得以成功

      2 关闭服务 关闭部分不重要的服务,或者服务器内部关闭部分不重要的功能,解决系统开销,为重要服务和功能让出资源

    幂等性设计(防止重复调用,造成数据的准确性失误)

    资源网站大全 https://55wd.com 我的007办公资源网站 https://www.wode007.com

    构建高可用的数据

    主要手段 数据备份和失效转移机制

    数据备份方法(主备模式)

      1 冷备 定期复制,但不能保证数据最终的一致性

      2 热备

        2.1 异步热备 应用程序调用主存储,主存储写入成功后,立即返回,主存储异步发起将数据写入其它副本(不确定有没有写入成功)

        2.2 同步热备 应用程序同时调用主,副服务器,将数据进行写入,此写入过程可通过并行提升写入效率

    失效转移

      1 失效确定 判断服务器宕机(心跳监测和应用程序访问失效报告)

      2 访问转移 将请求发送到可以使用的服务器上

      3 数据恢复

  • 相关阅读:
    第三周课程总结
    Java第一次学习总结
    第十二周编程总结
    第九周作业
    第八周作业
    第五周编程总结
    第三周作业
    第二周编程总结
    JAVA第二周学习总结
    2019春总结作业
  • 原文地址:https://www.cnblogs.com/ypppt/p/13363671.html
Copyright © 2011-2022 走看看