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

news/2024/5/20 10:48:34/文章来源:https://blog.csdn.net/dlf123321/article/details/51352103

说句掏心窝的话,高可用甚至比高性能更重要。为什么?
因为你把系统的性能优化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 数据最终一致性 物理存储的数据是不一样的,用户获得的数据也是不同的(同一用户多次访问,多个用户同时访问),不过过一段时间(通常较短),物理信息会自动一致。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_827799.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站技术架构 读书笔记3 高性能架构

很明显,这一章是说性能优化的,那么在说性能之前,我们得先了解性能的具体定义,也就是说如何评定一个系统性能是好还是不好。因此,我们就先说说性能测试,然后分别是前端性能,应用服务器的性能以及存储性能的优化。性能测试 1 不同的人对性能的认识是不一样的对用户来说,他们认为的…

大型网站技术架构 读书笔记2 大型网站核心架构要素

通常情况下,一个网站的架构出来功能性需求外,还应该考量以下五个方面:性能可用性伸缩性扩展性安全性性能 性能的官方解释,我就不说了。对用户来说,就是系统的反应速度是否快。对网站来说,性能问题是无处不在的,继而,我们优化性能的手段也有很多。我们从前到后一个一个来说在浏览…

大型网站技术架构 读书笔记1 大型网站架构模式

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 关于什么是模式,这个来自建筑学的词汇是这样定义的:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方…

大型网站架构之大型网站的演变过程

大型网站的演变过程 现在网站面临的问题: 1.企业在网站技术上的进行了大量的投入,但总是在关键的时刻频繁宕机(高性能); 2.工程师夜以继日的加班工作,网站缺总是故障频繁、新功能上线缓慢(扩展…

大型网站架构之大型网站架构模式

大型网站架构模式 什么是模式呢?(模式就是针对特定问题目前行业的解决方案) 模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。借助模式我们可以减少很多重复的工作。 大型互联网公司在实践过程中提出了很多的解决方案,以实现网站…

大型网站架构之大型网站核心架构要素

大型网站核心架构要素 软件架构指的是,有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计。 1.性能 在浏览器端 a.通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能; b.可以使用CDN&#xff0c…

大型网站架构之性能篇

网站的高性能架构(性能) 不同视角下的网站性能有着不同的标准,也有不同的优化手段。 1.用户视角的网站性能优化 通过优化页面HTML样式、利用浏览器端的并发和异步特性(即用户不用等待结果)、调整浏览器缓存策略、使用…

大型网站之高可用篇

网站的高可用架构(高可用) 由于种种情况,在业务中硬件故障是常态,所以网站的高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可用、数据依然保持并能够并访问。 高可用的主要手段:数据和服务的冗余备份及失…

大型网站之伸缩篇

网站的伸缩性架构(伸缩性) 绝大数网站都是渐进式成长的,在这个过程中最重要的技术是就是使用服务器集群,通过不断地向集群中添加服务器来增加整个集群的处理能力。 网站架构的伸缩性设计 网站的伸缩性设计分为两大类 根据功能进…

大型网站之扩展篇

网站的可扩展架构(扩展性) 伸缩性:通常指利用集群的方式增加服务器数量、提高系统的整体事务吞吐能力。 扩展性:指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。 网站的可扩展性,依托于系…

大型网站之安全篇

网站的安全框架(安全性) a.黑客攻击 XSS攻击 XSS攻击即跨站点脚本攻击,指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。 常见的XSS攻击分为 反射型&am…

使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信

亲测,已经建立了https链接 参考链接: https://blog.csdn.net/guoxiaojie_415/article/details/80554109 https://www.cnblogs.com/kezi/articles/11512420.html

浏览器版本过高导致无法访问网站 burpSuiteBrowser

错误: 建立安全连接失败 连接到 172.24.11.101 时发生错误。对等端使用了不支持的安全协议版本。 错误代码:SSL_ERROR_UNSUPPORTED_VERSION 由于不能验证所收到的数据是否可信,无法显示您想要查看的页面。 建议向此网站的管理员反馈这…

js 获取服务器ip_如何提高香港服务器网站的访问速度

从选择服务器上入手1.选择直连国内网络骨干的机房 直连国内网络骨干机房通常节点都比较少。通常数据在经过路由器进行转发时,都需要花费一定的时间,因而节点比较少的机房,它所提供的香港服务器多相对快一些,具体我们可以通过ping服…

php一维数组合并为二维数组,php输出数据并转换成若干一维数组最后合并为一条二维数组 - 傲世零零个人技术网站...

代码功能:php输出数据并转换成若干一维数组最后合并为一条二维数组//数据库连接require(db.php);//查询语句$sql2 "select * from xc_pic where xcid89 ";$result2 mysql_query($sql2,$conn);$dd0;while($row2 mysql_fetch_array($result2)){$dd$dd1…

逆向某电影网站signKey参数

1.打开我们要获取数据的页面 这里我们可以看到,这个有个加密参数signKey,猫眼好像改了,这个页面一些东西变成动态渲染了。他会发送一个请求去请求这个数据 我们打开这个页面,可以看到 这里面都是我们要的参数,像评分呀…

补某视频网站的js,进行视频解密

前言: 前不久,有个群友在群里发了一个视频的m3u8文件,其中的key是16字节,但是就是无法进行下载。但是用m3u8下载器进行下载时,无法下载下来,我开始怀疑是有请求头检验,用代码请求了一下&#x…

java web gzip_java使用gzip对静态资源的压缩,提供web网站访问速度

一、gzip简介Gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。在1992年10月31日第一次公开发布,版本号0.1,1993年2月&a…

Web大作业-关于创业计划网站制作的第二天......

嘶......转专业真的是麻烦,前有C语言大作业算法实现,现有Web工程网页要做..... 贴几张预览图吧,第一部分算是完成了,接下来还有两个部分,分别是宣传视频和个人计划的安排。 另外,学校的校园网真菜&#x…

Web大作业-关于创业计划网站制作的第三天......

代码都是我一行一行敲下来的,虽然我相信得分不会很高(确信)。 但是第二部分算是完成了,就是宣传视频部分,让三个网页互相连接,其实我还想用用js把网站写活,奈何能力有限。 第三部分我打算讲述自己的创业计划&#xf…