架构/构建高可用的网站

时间: 2018-12-13阅读: 732标签: 架构

前言

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

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

有状态 :在服务端保留之前的请求信息,用以处理当前请求(例如: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 关闭服务 关闭部分不重要的服务,或者服务器内部关闭部分不重要的功能,解决系统开销,为重要服务和功能让出资源

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

 

构建高可用的数据

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

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

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

  2 热备

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

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

失效转移

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

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

  3 数据恢复


来自于 大型网站技术架构:核心原理与案例分析+李智慧 书籍 

 

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1575

关闭

微服务五种开源API网关实现组件对比

微服务架构是当下比较流行的一种架构风格,它是一种以业务功能组织的服务集合,可以持续交付、快速部署、更好的可扩展性和容错能力,而且还使组织更容易去尝试新技术栈。微服务具有几个关键特征:

Vue实战_从目录结构谈可扩展项目架构设计

很多人都会用项目脚手架,也会跑hello world,然后再写写简单的todolist。但是再往下深入就难了。比如很多教程和老师都会说,大家要多问一个为什么。其实我想说多问你妹啊。我都不知道问为什么怎么多问?

C/S和B/S两种架构区别与优缺点分析

C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据

千万级用户的大型网站,应该如何设计其高并发架构?

本文将会从一个大型的网站发展历程出发,一步一步的探索这个网站的架构是如何从单体架构,演化到分布式架构,然后演化到高并发架构的。大型网站架构中共涉及的技术远远不止这些,还包括了MQ、CDN、静态化、分库分表、NoSQL、搜索、分布式文件系统、反向代理

架构师能力模型,架构师应该掌握那些东西?

架构师在很多人眼中是一个非常高大上的职业, 就像武侠小说中的绝世高手一样, 关键时刻可以起到扭转乾坤的作用, 是团队中的灵魂人物. 回想我自己做一线架构师的过程中

为什么90%的“码农”做不了“架构师”?

选择有时候比努力重要,真正厉害的人不仅仅是埋头苦干,而是会利用好的思维方式、好的方法,看穿事物的本质,顺势而为,找到事情的最优解,并懂得举一反三。

Redis高可用,高性能,架构演进史

高性能就是做分片(可以类比为分库分表,将数据分到不同服务器上),在Kafka中叫分区,在mongodb中叫shard,在HDFS上叫DataNode。而保证高可用的方式就是做交叉备份。然后我很好奇Redis是怎么部署的。

如何架构一个中后台项目的前端部分?

不管是前端抑或后端,从零开始做一个新项目避免不了技术选型这一块,其应该也是最先需要考虑的内容,之后的一切都会建立在这之上。这篇文章便主要来谈谈在架构一个中后台系统的前端部分上我的实践点。

大型网站核心架构要素

一般来说,除了当前的系统功能需求外,软件架构还需要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素。性能是网站的一个重要指标,任何软件架构设计档案都必须考虑可能会带来的性能问题。

MVC和三层架构

三层架构指的是: 视图层(View),服务层(Service)和持久层(DAO). 他们分别负责不同的功能.。单纯就是指后台的设计架构,这种架构模式是从微软来的

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!