前言
整篇文章主要通过对软硬件负载均衡设备,服务器负载均衡的局限,DNS核心流程、客户端和 服务端负载均衡异同、DNS负载均衡优缺点分析;以及CDN构建的好处、CDN刷新机制分析、常用CDN平台分析;进行一个大得解析,如何搭建一个上亿用户量的负载均衡架构。
上亿用户量背后的负载均衡整体架构
负载均衡调度器,分担网络请求到后端集群,解决集群带来的问题。
CDN和反向代理, 基本原理都是缓存,也是解决我们地区太大,导致不分区访问非常慢
反向代理部署在网站中心机房,CDN则靠近用户的网络服务提供商
负载均衡层
面对大流量时,单台服务器很难支撑大流量的请求。使用负债均衡层带来的好处,还有产生了集群,因此可动态扩展,应用服务器增加,线性扩展,伸缩。
F5也能用来架设防火墙集群
LVS能做成集群、主从、双主的形式
Nginx能做成集群、主从形式
进行层层拆分流量。
硬件负载均衡
F5的全称是F5-BIG-IP LTM,是最流行的硬件负载均衡设备,并发能力达到百万级。
F5产品系列:
F5 BIG-IP ASM应用安全管理器产品
F5 BIG-IP Edge Gateway产品
F5 BIG-IP GTM广域流量管理器产品
F5 BIG-IP LTM本地流量管理器产品
F5 BIG-IP SAM 安全接入管理器产品
F5 BIG-IP Web应用加速器产品
F5 BIG-IP 链路控制器产品
F5 BIG-IP 企业管理器产品
F5 BIG-IP 广域网优化模块产品
F5的特性包括:
1. 多链路的负载均衡和冗余
2. 防火墙负载均衡
3. 服务器负载均衡
4. 高可用
5. 安全性
6. 易于管理
7. 还提供SSL加速、软件升级、IP地址过滤、带宽控制等辅助功能
F5 | 多云安全性和应用交付
对于硬件负载均衡价格是有点高的,而且并不对数据做处理,只是做一个压缩转发。
看起来就像是交换机路由器。
软硬件负载均衡的区别
硬件负载均衡比软件负载均衡支撑更多的高并发,相当大,硬件负载均衡里面都是从硬件级别去定制,而不是像软件负载均衡运行在我们的计算机上。
硬件负载均衡设备有:NetScaler、F5、Radware和Array等。硬件负载均衡优点有专业团队进行维护,单机抗压能力强悍;缺点花销太大,规模较小的网站来说还不需要使用,直接使用软件负载均衡就行。
软件负载均衡有:LVS/HAProxy、Nginx等,基于Linux的开源免费的负载均衡软件策略。通过软件级别来实现,费用非常低廉,很多大型的互联网公司都采用软件负载均衡来架设自己网站。软件负载均衡稳定性非常好,几乎很少宕机。
我们的电脑也具有路由功能,但是路由器却更善于处理网络路由的事情。硬件负载均衡比软件负载均衡强悍,是因为其内部有针对性的设计硬件设备,专门用来处理网络传输流量处理。
服务器负载均衡无法实现10亿级并发
再强悍的硬件负载设备,单台服务器的处理能力是有限的。
当达到某一个瓶颈时如何处理?
负载均衡方案DNS
DNS,Domain Name System,域名系统是因特网上作为域名和IP地址相互映射的一个
分布式数据库
,方便用户访问互联网。一个域名对应多个IP地址。 有这个dns,可以使并发量增加。
一种简单的设计模式,在因特网上只使用一个DNS服务器,该服务器包含所有的映射。不适用当前的互联网,单点故障、通信容量、远距离延时、维护成本大。
DNS服务器一般分三种,根DNS服务器,顶级DNS服务器,权威DNS服务器,使用分布式的层次数据库模式以及缓存方法来解决单点集中式的问题。
通过顶级域名去寻找,往下进行找,最后找到对应的ip地址。
DNS核心流程分析
DNS解析过程,从浏览器出发:
- 1. 本地的hosts文件,也是我们修改本地服务,就能找到。
- 2. 本地DNS解析器缓存。
- 3. 本地DNS服务器,权威
- 4. 本地DNS服务器缓存,非权威
- 5. 本地DNS服务器找不到 非转发,根DNS服务器—>顶级域名服务器 转发上一级DNS服务器,如此循环
- 6. 由本地DNS服务器再返回给客户机
用命令 nslookup
www.qq.com
试试
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
配置的这个,找对应的域名的映射。
直到找到对应的ip地址,一般会有缓存起来。所以我们一般访问过后效率会很快也是这个原因。
DNS负载均衡优缺点分析
优点:
- 技术实现比较灵活、方便,简单易行,成本低,适用大多数TCP/IP应用。不需要网络专家来进行设定维护。
- 对于Web应用不需要修改代码来支持。
- Web服务器可以位于互联网的任意位置上。
缺点:
- 单一的轮询负载算法。不能够按照Web服务器的处理能力分配负载。也是功能不够强大的。
- 不支持高可靠性。DNS负载均衡技术没有考虑容错。某台Web服务器出现故障,请求仍分配这台故障服务器上。
- 可能造成额外的网络开销。为本地DNS服务数据实时性,与其他DNS同步,刷新时间设置较小,会使得DNS流量大增。
- 服务故障恢复有时延。某个服务器出现故障,即使及时修改了DNS设置,还是要等待DNS刷新后才能发挥作 用,等待期间,不能正常访问服务器。
客户端负载均衡和服务端服务均衡异同
服务端负载均衡,
请求到达服务器后,再从服务列表中挑选服务器,
实现 DNS域名解析负载均衡
反向代理负载均衡 IP负载均衡
客户端负载均衡
,请求未发起,先从客户端缓存的服务列表挑选服务,
实现 Spring cloud中的ribbon Redis中的分片集群客户端计算slot槽位
客户端负载均衡和服务器负载均衡的核心差异在服务列表本身,客户端负载均衡服务列表在通过客户端维护,服务器负载均衡服务列表由中间服务单独维护。
基于云平台CDN服务实现内容分发和分流
CDN,全称Content Delivery Network,即内容分发网络。 通过现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。
CDN包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic海南用户请求不用跑到北京电信机房Management)是CDN的核心所在。
海南即可响应处理内容服务基于缓存服务器,也称作代理缓存(Surrogate),它位于网络的边缘,距用户仅有"一跳"(Single Hop)之遥。
CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载
CDN刷新机制
浏览器缓存策略有:Expires、Cache-control、Last-Modified、
Max-age、Etag
CDN缓存策略
类似浏览器缓存,CDN边缘节点也存在着一套缓存机制。CDN边
缘节点缓存策略因服务商不同而不同,但一般都会遵循http标
准协议,通过http响应头中的Cache-control: max-age的字段
来设置CDN边缘节点数据缓存时间。
缺点
当网站更新时,如果CDN节点上数据没有及时更新,即便用户再
浏览器使用Ctrl+F5的方式使浏览器端的缓存失效,也会因为
CDN边缘节点没有同步最新数据而导致用户访问异常。
CDN边缘节点对开发者是透明的,相比于浏览器Ctrl+F5的强制刷新来使浏览器本地缓存失效,开发者可
以通过CDN服务商提供的“刷新缓存”接口来达到清理CDN边缘节点缓存的目的。
常用CDN平台
微软CDN
为了吸引更多开发人员和网站使用ASP.NET,微软为Microsoft AJAX和jQuery脚本提供了免费的CDN服务。提供了jQuery系列,jQ Validation,jQ Cycle,jQ DataTables及Ajax Control Toolkit,ASP.NET等资源。
新浪SAE CDN
新浪的SAE CDN的public resource加速服务,对常用js/css库在全国采用cdn加速,用户只在第一次访问时加载js库,以后就直接在本地缓存读了。提供的库同百度基本相当。
开放静态文件 CDN
不仅仅是一个JS库CDN,而是提供了一个仓库,尽可能全面收录优秀的开源库,并免费为之提供 CDN 加速服务,使之有更好的访问速度和稳定的环境。同时,也提供开源库源接入的入口,让所有人都可以提交开源库,包括 JS、CSS、image 和
swf 等静态文件。一方面,提供了最新最流行的JS等库资源如angular,underscore,backbone,zepto,seajs等 ;另一方面,
提供命令行工具鼓励程序猿自行提交和管理开源库。
CDNJS
大名鼎鼎的JS资源库平台,号称Web 上最快的 JavaScript 资源库(啧啧),类似 Google CDN 和微软 CDN 服务,但是速度
比这二者更加快。CDNJS 上提供了众多 JavaScript 库,你可以直接在网页上引用这些 JS 文件,实现用户浏览网站的最
佳速度体验。同开放静态CDN一样,CDNJS也鼓励添加JS库到该站,只需要提交到 CDNJS 在 Github 上的项目即可。