大型网站技术架构 读书笔记4 高可用架构

说句掏心窝的话,高可用甚至比高性能更重要。为什么?

因为你把系统的性能优化10倍,你的老板可能会说:小董呀,干的不错。

可是,如果你负责的模块,三天两头就宕掉了,嘿嘿,你懂得。

可用性度量

99%-----网站年度不可用时间小于88个小时

99.9%---网站年度不可用时间小于9个小时

99.99%---网站年度不可用时间小于53分钟

高可用架构

一般的互联网公司大多采用pc级服务器,开源的数据库和操作系统,这样来说,当然节省成本,不过另一方面来说,服务器宕机就是一个大概率事件了。

所以,高可用架构的主要目的就是保证服务器硬件故障时,服务依然用。

主要手段就是冗余与备份。一旦某个服务器出了问题,就把服务切换到别的可用的服务器上。

典型的网站架构如下图:

数据层好解释,我这里就说说应用层与服务层。

应用层是具体的业务逻辑

而服务层就是可以复用额服务。

举个简单的例子,百度的贴吧与文科分属不同的应用,但是他们都需要登陆操作,而登陆服务就是一个可以复用的服务。如下图:

应用层的服务器是通过负载均衡设备组合到一起的,如果某个服务器不可用,负载均衡服务设备会通过心跳检测设备知道,并且把失效的服务器地址从自己的集群列表中剔除。

服用层的服务会被应用层的业务通过分布式服务框架调用(如dubbo),多个服务会通过注册中心管理(如zookeeper),当某个服务器失效了,注册中心就会剔除不可用的地址。

数据层的服务器一般进行数据同步复制。一旦一台服务器出问题了,新的请求就会被转发到还正常的服务器上。

另外,网站除了因为硬件故障会导致服务不可用外,系统升级更新也会出现不可用的问题,所以,系统的升级更新我们也要考虑。

下面我们就从,应用,服务,数据三个层次来说说如何具体实现高可用

高可用的应用

这里的服务器得分两种1 有状态的服务器 2 没有状态的服务器

对于没有状态的服务器来说,比较简单,直接最简单的负载均衡就OK

对于那些有状态的服务器,其实复杂的是session,第一次访问在服务器a,session也在服务器a上,第二次请求被分配到b上了,可b里面有吗session。

对于session的管理,也分几种

1 session复制,也就是说 n台服务器的集群中,每一台服务器都有所以的session信息。 如果服务器一多,用户量一多,这个方案就不合适了。

2 session绑定,让a用户只访问服务器a,用户b也只访问某一台服务器。 如果一旦服务器a宕掉了,用户a怎么办?

3 利用cookie,

4 使用session服务器。(大型网站架构最优)

高可用服务

服务本身是无状态的(如果服务被设计成有状态的,那你就去反省吧),那么使用简单的负载均衡就OK。

除此之外,我们还有一些别的小建议

1 分级管理 让核心应用使用高性能的硬件 (用户付款就比之后的评价反馈要显得核心一些)

2 超时设置 如果n个单位时间内,没有响应,就重新发请求。

3 异步调用

4 服务降级 就是在高并发的时候,把一些不重要的功能先关闭掉。

5 幂等性设计 这不能说是一个建议,而应该是一个要求,就是保证某个服务调用一次与调用n次的效果是一致的。

因为应用端如果没有收到反馈就会再次调用服务端(此时可能已经调用成功了,只是应用端没有收到而已)

高可用数据

保证数据高可用一般有两种方式

数据备份与失效转移

前者保证数据不丢失,后者保证随时能访问到正确的数据。

那么具体的说,什么是高可用数据呢?或者说,高可用体现在哪里呢?

1 数据持久性  -----技术发生存储故障,数据也是存在的。

2 数据可访问性 ----某个数据服务器发生了问题,能很快(用户几乎没有感知)切换用户的访问到新的数据服务器

3 数据一致性

我们一般认为,系统无法同时满足数据一致性(Consistency),数据可用性(Availibility),分区耐受性(Partition Tolerance,跨网络分区的伸缩性)

一般来说数据一致性也分下面几个情况

3.1 数据强一致性 各个副本的数据是一样的,这一点在数据更新时保证

3.2 数据用户一致性 各个副本的数据是一样的,但是用户获得数据时会校验,保证用户得到的数据是正确的

3.3 数据最终一致性 物理存储的数据是不一样的,用户获得的数据也是不同的(同一用户多次访问,多个用户同时访问),不过过一段时间(通常较短),物理信息会自动一致。

大型网站一般会选择强化可用性与分区耐受性,一定程度上放弃一致性。

时间: 2024-12-23 17:59:12

大型网站技术架构 读书笔记4 高可用架构的相关文章

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

目录 (1)单块架构 (2)初步的高可用架构 (3)千万级用户量的压力预估 (4)服务器压力预估 (5)业务垂直拆分 (6)用分布式缓存抗下读请求 (7)基于数据库主从架构做读写分离 (8)总结 本文将会从一个大型的网站发展历程出发,一步一步的探索这个网站的架构是如何从单体架构,演化到分布式架构,然后演化到高并发架构的. 一.单块架构 一般一个网站刚开始建立的时候,用户量是很少的,大概可能就几万或者几十万的用户量,每天活跃的用户可能就几百或者几千个. 这个时候一般网站架构都是采用单体架构来设计的

mysql复制(高可用架构方案的基础)

mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以在全部改变中根据业务需求选择部分库和部分表的复制复制的场景: 1.数据库容灾 2.需求:创建一个从数据服务器,做数据的测试和分析 3.负载均衡 4.复制时高可用架构方案的基础 mysql高可用架构特点1.数据库故障的检测与排除2.主从数据库的切换3.数据的备份和保护 mysql高可用架构常用方案1.

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

《大型网站技术架构》读书笔记之八:固若金汤之网站的安全性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.网站应用攻击与防御 二.信息加密技术与密钥安全 三.信息过滤与反垃圾 四.电子商务风险控制 五.学习总结 转眼之间,<大型网站技术架构>的读书笔记到此就结束了.最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的).通过本书的学习,我们从高性能.高可用.伸缩性.可扩展性.安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览

《大型网站技术架构》读书笔记二:大型网站架构模式

一.分层 最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责.网站一般分为三个层次:应用层.服务层和数据层,其具体结构如下图所示: 通过分层,一个庞大系统切分成不同部分,便于分工合作和维护. 但是,分层架构也有一些挑战:①必须合理规划层次边界和接口:②禁止跨层次的调用及逆向调用. 二.分割 分割是在纵向方面对软件进行切分->将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,有助于软件开发和维护,还便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力. 三.分布

《大型网站技术架构》读书笔记一:大型网站架构演化

一.大型网站系统特点 (1)高并发.大流量:PV量巨大 (2)高可用:7*24小时不间断服务 (3)海量数据:文件数目分分钟xxTB (4)用户分布广泛,网络情况复杂:网络运营商 (5)安全环境恶劣:黑客的攻击 (6)需求快速变更,发布频繁:快速适应市场,满足用户需求 (7)渐进式发展:慢慢地运营出大型网站 二.大型网站架构演化过程 (1)初始阶段网站架构:一台Server就刚需-应用程序.数据库.文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站 (2)应用和数据

Web高级征程:《大型网站技术架构》读书笔记系列

一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型.架构设计.性能优化.Web安全.系统发布.运维监控等在内的大型网站开发全景视图. 本书不仅适用于指导网站工程师.架构师进行网站技术架构设计,也可用于指导产品经理.项目经理.测试运维人员等了解网站技术架构的基础概念:还可供包括企业系统开发人员在内的各类软件开发从业人员借鉴,了解

《大型网站技术架构》读书笔记三:大型网站核心架构要素

一.性能—响应时间决定用户 (1)浏览器端: ①浏览器缓存: ②使用页面压缩: PS:Gzip压缩效率非常高,通常可以达到70%的压缩率,也就是说,如果你的网页有30K,压缩之后就变成了9K左右.想要启用Gzip压缩,提高浏览速度,可以浏览这篇文章:http://www.chinaz.com/web/2012/1017/278682.shtml ③合理布局页面: CSS:把样式表置于顶部:避免使用CSS表达式(expression_r):使用外部JavaScript和CSS:削减JavaScri

《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

一.网站性能测试 (1)性能测试指标:①响应时间:②并发数:③吞吐量:④性能计数器: (2)性能测试方法:①性能测试:②负载测试:③压力测试:④稳定性测试: (3)性能优化策略: ①性能分析:检查请求处理各个环节的日志,分析哪个环节响应时间不合理,检查监控数据分析影响性能的因素: ②性能优化:Web前端优化,应用服务器优化,存储服务器优化: 二.Web前端性能优化 (1)浏览器访问优化: ①减少http请求:因为http是无状态的,每次请求的开销都比较昂贵(需要建立通信链路.进行数据传输,而服务