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

 

上篇文章:分布式系统漫谈【叁】_负载层技术: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轮询技术将请求分发到两个独立的负载均衡集群上。不再使用目录名分隔业务系统,而是直接将业务系统的访问使用不同的二级域名进行拆分,这样有利于每个业务系统都拥有自己独立的负载均衡层。

 

分布式系统漫谈【壹】_发展历程

分布式系统漫谈【贰】_分布式系统带来的问题

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

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

分布式系统漫谈【伍】_远程调用

分布式系统漫谈【陆】_SOA和微服务

分布式系统漫谈【柒】_微服务的挑战和解决方案

分布式系统漫谈【捌】_分布式事务一致性:理论基础

分布式系统漫谈【玖】_分布式事务一致性:协议支持

分布式系统漫谈【拾】_分布式事务一致性:阿里方案

分布式系统漫谈【拾壹】_分布式事务一致性:秒杀实现

分布式系统漫谈【拾贰】_分库分表带来的问题和解决方案

分布式系统漫谈【拾叁】_缓存带来的问题和解决方案

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值