大型网站的可伸缩性架构如何设计?

news/2024/5/18 15:21:54/文章来源:https://blog.csdn.net/weixin_33894992/article/details/92404341

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. 网站架构的伸缩性设计

1.1. 不同功能进行物理分离实现伸缩

纵向分离(分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性。

横向分离(业务分割后分离):将不同的业务模块分离部署,实现系统伸缩性。

1.2. 单一功能通过集群规模实现伸缩

将不同功能分离部署可以实现一定程度的伸缩性,但是随着网站的访问量逐步增加,即使分离到最小粒度的独立部署,单一的服务器也不能满足业务规模的要求。因此必须使用服务器集群,即将相同服务部署在多态服务器上构成一个集群整体对外提供服务。

2. 应用服务器集群的伸缩性设计

2.1. HTTP 重定向负载均衡

%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1-HTTP%E9%87%8D%E5%AE%9A%E5%90%91.png

利用 HTTP 重定向协议实现负载均衡。

这种负载均衡方案的优点是比较简单。缺点是浏览器需要两次请求服务器才能完成一次访问,性能较差:重定向服务器自身的处理能力有可能成为瓶颈,整个集群的伸缩性规模有限;使用 HTTP 302 响应码重定向,可能使搜索引擎判断为 SEO 作弊,降低搜索排名。

2.2. DNS 域名解析负载均衡

%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1-DNS%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90.png

利用 DNS 处理域名解析请求的同时进行负载均衡处理的一种方案。

在 DNS 服务器中配置多个 A 记录,如:

114.100.40.1 www.mysite.com
114.100.40.2 www.mysite.com
114.100.40.3 www.mysite.com

每次域名解析请求都会根据负载均衡算法计算一个不同的 IP 地址返回,这样 A 记录中配置的多个服务器就构成一个集群,并可以实现负载均衡。

DNS 域名解析负载均衡的优点:

  • 将负载均衡的工作转交给了 DNS,省掉了网站管理维护的麻烦。
  • 同时,许多 DNS 服务器还支持基于地理位置的域名解析,即将域名解析成距离用户地理最近的一个服务器地址,这样可以加快用户访问速度,改善性能。

DNS 域名解析负载均衡的缺点:

  • DNS 是多级解析,每一级 DNS 都可能缓存 A 记录,当某台服务器下线后,即使修改了 DNS 的 A 记录,要使其生效也需要较长时间。这段时间,依然会域名解析到已经下线的服务器,导致用户访问失败。
  • DNS 的负载均衡的控制权在域名服务商那里,网站无法对其做更多改善和更强大的管理。

2.3. 反向代理负载均衡

%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1-%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86.png

大多数反向代理服务器同时提供反向代理和负载均衡的功能。

反向代理服务器的优点是部署简单。缺点是反向代理服务器时所有请求和响应的中转站,其性能可能会成为瓶颈。

2.4. IP 负载均衡

%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1-IP%E5%B1%82.png

在网络层通过修改请求目标地址进行负载均衡。负载均衡服务器(网关服务器)在操作系统内核获取网络数据包,根据负载均衡算法计算得到一台真实 Web 服务器 10.0.0.1,然后将目的 IP 地址修改为 10.0.0.1,不需要通过用户进程。真实 Web 服务器处理完成后,响应数据包回到负载均衡服务器,负载均衡服务器再将数据包原地址修改为自身的 IP 地址(114.100.80.10)发送给浏览器。

IP 负载均衡在内核完成数据分发,所以处理性能优于反向代理负载均衡。但是因为所有请求响应都要经过负载均衡服务器,集群的最大响应数据吞吐量受制于负载均衡服务器网卡带宽。

2.5. 数据链路层负载均衡

%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1-%E6%95%B0%E6%8D%AE%E9%93%BE%E8%B7%AF%E5%B1%82.png

数据链路层负载均衡是指在通信协议的数据链路层修改 mac 地址进行负载均衡。

这种方式又称作三角传输方式,负载均衡数据分发过程中不修改 IP 地址,只修改目的 mac 地址,通过配置真实物理服务器集群所有机器虚拟 IP 和负载均衡服务器 IP 地址一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的,由于实际处理请求的真实物理服务器 IP 和数据请求目的 IP 一致,不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。这种负载方式又称作直接路由方式。

在 Linux 平台上最好的链路层负载均衡开源产品是 LVS(Linux Virtual Server)。

2.6. 负载均衡算法

负载均衡服务器的实现可以分为两个部分:

  1. 根据负载均衡算法和 Web 服务器列表计算得到集群中一台 Web 服务器的地址。
  2. 将请求数据发送到该地址对应的 Web 服务器上。

负载均衡算法通常有以下几种:

  • 轮询(Round Robin) - 所有请求被依次分发到每台应用服务器上,即每台服务器需要处理的请求数据都相同,适合于所有服务器硬件都相同的场景。
  • 加权轮询(Weighted Round Robin) - 根据服务器硬件性能情况,在轮询的基础上,按照配置权重将请求分发到每个服务器,高性能服务器能分配更多请求。
  • 随机(Random) - 请求被随机分配到各个应用服务器,在许多场合下,这种方案都很简单实用,因为好的随机数本身就很平均,即使应用服务器硬件配置不同,也可以使用加权随机算法。
  • 最少连接(Least Connection) - 记录每个应用服务器正在处理的连接数,将新到的请求分发到最少连接的服务器上,应该说,这是最符合负载均衡定义的算法。
  • 源地址 Hash(Source Hash) - 根据请求来源的 IP 地址进行 Hash 计算,得到应用服务器,这样来自同一个 IP 地址的请求总在同一个服务器上处理,该请求的上下文信息可以存储在这台服务器上,在一个会话周期内重复使用,从而实现会话粘滞。

3. 分布式缓存集群的伸缩性设计

一致性 HASH 算法

4. 数据存储服务器集群的伸缩性设计

4.1. 关系型数据库的伸缩性设计

  • 主从复制 - 主流关系型数据库一般都支持主从复制。
  • 分库 - 根据业务对数据库进行分割。制约条件是跨库的表不能进行 Join 操作。
  • 分表 - 使用数据库分片中间件,如 Cobar 等。

4.2. NoSql 数据库的伸缩性设计

一般而言,Nosql 不支持 SQL 和 ACID,但是强化了对于高可用和伸缩性的支持。

 

转载于:https://my.oschina.net/u/3728792/blog/3043926

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

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

相关文章

浅谈千万级PV/IP规模高性能高并发网站架构

原创作者:老男孩linux实战运维培训机构 老男孩 QQ:31333741 说明:几个月前老男孩发过一次类似的文章,本次为了参加一个朋友邀请的活动,稍微完善了一下,欢迎各位同仁一起交流网站架构技术。 文章架构简图&…

在网站/博客中加入PDF、ppt等预览

2019独角兽企业重金招聘Python工程师标准>>> 使用Viewjs 使用方法很简单&#xff0c;首先当然是下载Viewjs了&#xff0c;2种方式&#xff0c;从github下载或者直接下载 下载后放到后台的根目录(当然也可以是其他目录)&#xff0c;在需要预览PDF的地方添加 <ifra…

向网页设计师推荐15个很棒的网站

网络上各种各样的社区网站数不胜数&#xff0c;但专注于创意设计的很少。今天这篇文章收集了15个非常好的专注于设计的网站推荐给设计师们&#xff0c;不管是学习先进的设计理念&#xff0c;还是寻找免费资源与工具&#xff0c;这些网站都是很不错的去处&#xff0c;记得推荐和…

mouseout、mouseover和mouseleave、mouseenter区别

mouseout、mouseover和mouseleave、mouseenter区别 结论&#xff1a; mouseenter&#xff1a;当鼠标移入某元素时触发。 mouseleave&#xff1a;当鼠标移出某元素时触发。 mouseover&#xff1a;当鼠标移入某元素时触发&#xff0c;移入其子元素时也会触发。 mouseout&#xff…

25个灵感来自大自然的优秀网站设计作品(转)

灵感是一种瞬间产生的富有创造性的突发思维状态&#xff0c;使我们能创造更加美好和独特的东西。对设计师来说&#xff0c;灵感来了意味着新的作品即将诞生。要说最能触及人的灵魂和艺术性的就是大自然了&#xff0c;它能刷新我们的思想&#xff0c;让我们的心情平静。这篇文章…

传统网站与Web标准——表格布局实例

步骤1&#xff1a; 一、效果 二、HTML <table border"0" cellspacing"0" cellpadding"0"><tr bgcolor"#220103"><td width"215" rowspan"2" colspan"2"><img src"mm_spa_pho…

利用vs2005发布asp.net网站到远程服务器上

早就知道vs2005中发布网站提供了多种方式,不过一直没深入研究,这次项目中正好用到,研究了下发布到"远程服务器上"的功能.首先要发布的时候,需要目标服务器上有对应的网站,否则会报如下图的错误:我们在目标服务器上建立完对应的网站后,并不能立即使用vs2005发布到该网…

使用Apache搭建Web网站服务器

使用Apache搭建Web网站服务器一&#xff1a;实验目标apache服务器常见概念apache服务器安装及相关配置文件例1&#xff1a;为公司内网搭建一个web服务器例2&#xff1a;使用rpm搭建lamp 环境例3&#xff1a;修改网根目录及对应参数&#xff0c;设置访问权限例4,&#xff1a;使用…

B2B行业网站“页面结构”分析及应用

B2B行业网站策划提供给网站设计师的策划文档里&#xff0c;一般都表明了每个部份的内容和功能所采用的页面结构&#xff0c;但是并不代表设计师就能理解策划者在页面结构方面的考虑&#xff0c;以及由于有的策划者对网络了解不太深入&#xff0c;或者说有一些疏忽&#xff0c;从…

《网络安全法》已经实施了,你的网站准备好了吗?

2019独角兽企业重金招聘Python工程师标准>>> 在网络安全格局国家化的大背景下&#xff0c;6月1日&#xff0c;我国《中华人民共和国网络安全法》终于正式施行了。虽然立法历程可谓一波三折&#xff0c;而且相比别的国家也着实不算早&#xff0c;但总算还是为未来的信…

有什么办法可以判断页面是静态还是动态?_静态网站怎么建设?有什么优势?

自网站建设以来&#xff0c;就存在静态网站和动态网站之分&#xff0c;对应的网站建设技术也不断迭代更新&#xff0c;静态网站主要的语言是HTML(超文本标记语言)或XML(可扩展标记语言)&#xff0c;下面小编来告诉你&#xff0c;静态网站怎么建设还有优势是什么。一、静态网站怎…

大型网站技术架构:核心原理与案例分析

大型网站技术架构&#xff1a;核心原理与案例分析 &#xff08;最接地气的网站架构经验&#xff0c;网站生存技术心要&#xff0c;应对大数据挑战的干货分享&#xff01;&#xff09; 李智慧 著 ISBN 978-7-121-21200-0 2013年9月出版 定价&#xff1a;59.00元 240页 16开 编辑…

雅虎48亿美元卖身Verizon,门户网站路在何方?

7月25日《华尔街日报》报道&#xff0c;Verizon以48亿美元的价格收购雅虎的核心业务&#xff0c;雅虎董事会已接受Verizon通讯的收购邀约&#xff0c;并在上周六下午将这一决定告知了其他竞购方&#xff0c;这场久拖不决的拍卖终于尘埃落定。 CEO玛丽莎梅耶尔自从上任以来一直在…

云服务器 ECS 建站教程:Drupal建站教程(CentOS7)

Drupal建站教程&#xff08;CentOS7&#xff09;Drupal是使用PHP语言编写的开源内容管理框架&#xff08;CMF&#xff09;&#xff0c;它由内容管理系统&#xff08;CMS&#xff09;和PHP开发框架&#xff08;Framework&#xff09;共同构成。它用于构造提供多种功能和服务的动…

云服务器 ECS 建站教程:ECS上搭建Docker(CentOS7)

ECS上搭建Docker(CentOS7)本文讲述Docker在CentOS系统上的部署过程。Ubuntu系统下安装docker&#xff0c;您可以点击此处查看。更多详细的实践您可以参考docker实践文档 适用对象 适用于熟悉Linux操作系统&#xff0c;刚开始使用阿里云ECS的开发者。 主要内容 部署dockerdocker…

python脚本根据cookies自动登录网站_Python爬虫利用cookie实现模拟登陆实例详解

Cookie&#xff0c;指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据&#xff08;通常经过加密&#xff09;。 举个例子&#xff0c;某些网站是需要登录后才能得到你想要的信息的&#xff0c;不登陆只能是游客模式&#xff0c;那么我们可以利用Urllib…

网站统计中的数据收集原理及实现

网站数据统计分析工具是网站站长和运营人员经常使用的一种工具&#xff0c;比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于javascript的。本文将简要分析这种数据收集的原理&#xf…

理解mouseover,mouseout,mouseenter,mouseleave

mouseover定义和用法 当鼠标指针位于元素上方时&#xff0c;会发生 mouseover 事件。 该事件大多数时候会与 mouseout 事件一起使用。 mouseover() 方法触发 mouseover 事件&#xff0c;或规定当发生 mouseover 事件时运行的函数。 注释&#xff1a;与 mouseenter 事件不同&…

pdf在线翻译_PDF文件怎么翻译?有了这个网站,100页英文秒转中文

同学们在网上找外文文献的时候有没有这样的烦恼&#xff1f;下载下来外文文献很多都是PDF格式的&#xff0c;要翻译的时候简直头都秃了&#xff0c;不能复制&#xff0c;而且还有很多专业词汇特别难懂&#xff01;那么PDF文件要怎么快速翻译呢&#xff1f;别急&#xff0c;今天…

xbwseo_admin.php,小霸王系统SEO站群v6.3免授权无限制版带安装教程

菜鸟源码分享最新价值600元的小霸王SEO站群v6.3免授权无限制版安装教程&#xff0c;好源码站长测试源码安装和后台的功能保存正常&#xff0c;添加网站域名和前端展示正常。一、系统需求基本需求&#xff1a;php 伪静态(必须)配置&#xff1a;系统: windows/linuxweb服务器: i…