您的位置:首页 > 其它

分布式系统漫谈【肆】_负载层技术:CDN

2018-03-02 17:07 495 查看
上篇文章:分布式系统漫谈【叁】_负载层技术:Nginx

本文说说生产环境下负载层的部署思路。内容整理自银文杰老师的《高性能服务系统构建与实战》一书,链接如下:





CDN

CDN即Content Delivery Network,内容分发网络。国内主要的三家互联网接入服务商联通、电信和移动,这三家服务商的互通需要经过多层路由,影响了资源访问速度。解决方案是,将需要访问的资源缓存并部署在距离访问者最近的机房的服务节点上,这样访问者可直接从该机器上拉取静态资源。这种方式既缓解了主服务机房过大的带宽需求,又优化了各个接入商对同一资源的访问效果。

目前国内外有大量的供应商提供CDN服务,可用性基本可以保证99.999%。

CDN网络一般用于缓存图片、多媒体文件和各种静态文件资源。以视频文件为例,当传输一个720P的视频时候,怎么处理?将视频切片,由索引服务器负责记录它们的位置,放到不同节点上。获取资源时从不同的节点上取得文件的不同片段,最后在本地组成一个完整的文件。事实上很多视频播放平台都是这样实现的,也就是网状CDN。

负载层的实现

在网站发展初期,并发请求量并不是很多的情况下,可以考虑使用如下负载架构:



设置主备两台nginx服务器,避免单点问题。同时根据客户端请求的url后缀,将请求转发到不同的业务子系统去处理。此时Nginx就是一个反向代理服务器的角色。

中期当系统访问量上升一个等级之后,可考虑将负载层进行如下的升级:



LVS是Linux Virtual Server的简写,在生产环境下主要是建立一个存在于网络层或链路层上的服务在均衡管理器。支持NAT、TUN和DR三种负载模式:

NAT模式是一种由LVS Master服务节点收到数据,然后转给下层的Real Server节点,当Real Server处理完成后会发给LVSMaster节点,又由LVSMaster节点转发出去的工作模式;

DR模式是由LVS Master服务节点收到数据,然后转给下层的Real Server节点,当Real Server处理完成后直接发给中心交换机发送出去,不经过LVS
Master。生产环境经常使用这个模式。

TUN模式和DR模式的工作方式相似,但是工作原理不一样。DR是基于数据报文重写,TUN是基于IP隧道(数据报文的重新封装)实现的。

keepalived实现了一套VRRP协议(虚拟路由冗余协议),允许物理服务器进行动态设置IP路由。在这里,keepalived负责lvs的主从热备。

在lvs层完成负载,并转发给下层的nginx。lvs使用DR工作模式,DR工作模式只是将请求转到后端,后端的nginx服务器必须有一个外网IP,在收到请求并处理完成后由nginx不经过lvs层直接返回给请求方。

当系统进一步升级,则可考虑使用如下架构实现负载层:



此方案使用DNS轮询技术将请求分发到两个独立的负载均衡集群上。不再使用目录名分隔业务系统,而是直接将业务系统的访问使用不同的二级域名进行拆分,这样有利于每个业务系统都拥有自己独立的负载均衡层。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: