高薪思想:财富来源于信息差
什么是cdn?
cdn全称是contenct delivery network内容分发网络
cdn是一套分布式,缓存,集群,范围可以是全球或全国,运行的实质是通过智能DNS获取用户的来源地域以及上网线路
为用户选择一个最接近用户地域以及用户上网线路相同的服务器节点,因为访问节点距离用户地域接近,且运营商线路相同,所以,可以大幅度提升浏览器网站的体验
为什么要用CDN?
CDN生产背景:
企业网络流量不断增加,网站撑不住用户的快速增加
IDC机房:
服务器托管地点
- 单线带宽(网通,电信,铁路,教育,政府) 20-30元/M月,cdn大部分使用带线带宽
- 多线带宽(BGP带宽)网通,电信,铁路,教育,政府整合在一起了;
独享,150-1000元/M月,企业用多线机房
CDN利用这个差异发展起来了
企业使用多线带宽
1.价格高
2.速度慢
3.防护能力弱
特点
- CDN大部分使用单线带宽
- 节点都是缓存服务器
- 利用智能DNS调度用户到最佳最适合的服务器节点
CDN价值:
- CDN为企业省成本
- 提升企业网站的用户访问体验(相同线路,相同区域,内存访问)
- 可以帮企业独挡大部分流量攻击(DDOS)
100万并发架构,如何设计?
总计:100%
1.浏览器,APP缓存(假设为20%还剩80%)
2.设计CDN:挡住95%流量,还剩1.6%
3.网站加上一层varnish缓存 0.16%
4.动态服务器+存储:0.16% 万 (并发1600)–理想状态
尽量把数据放到CDN或者客户的浏览器,减去CDN流量是网站需要设计的架构规模
只需要做并发1600规模的架构方案就可以了(存储服务器数据量并没有改变)
这里curl -I https://www.jd.com (没有看到CDN信息)是因为公司做了CDN嵌套所以这里看不到
CDN基本要求
不是所有的网站都能用上CDN,正常情况加速业务数据应该存在独立的域名:
img1.jd.ett.com
img2.jd.ett.com
img3.jd.ett.com
video1.ett.org
video2.ett.org
video3.ett.org
要加速的业务一般是图片,附件,视频,js,css等静态元素
DNS服务器上的加速前的AAA记录
:AAA records
img.jd.com IN AAA 124.106.0.21(企业静态web服务器的IP)
我们要进行删除上面记录:
img.jd.com IN AAA 124.106.0.21(企业静态web服务器的IP)
做下面别名解析:
:CNAME records
img1.jd.com IN CNMAE bbs
img.jd.com 3M 1N CNAME img.jd.com.cachecn.com(这个地址必须来自CDN公司配置好的CDN域名,还要告诉CDN公司静态服务器IP地址是多少)
CDN作用与工作原理图(核心:必会)
- 设计架构要考虑这一块(或故障解决)
cdn服务提供商架构的关键元素:
- DNS与智能DNS集群(bind,powerdns,dnspod,F5 —》选IP
- Cache集群(节点squid–单进程,ats,nginx–京东,varnish)—》提供数据
- 用户源站(CDN服务的客户)
- 外围(计费,日志分析,存储,protal展示)
两个衡量CDN服务质量的指标:
- 回源率:缓存里没有,必须用代理的方式回源站取,回源次数与所有访问次数之比
缓存系统也可以划分出层次,分成一级缓存节点和二级缓存节点。一级缓存配置高一些,直连源站,二级缓存配置低一些,直连用户
回源的时候二级缓存只找一级缓存,一级缓存没有才回源站,可以有效地减少真正的回源
- 命中率:用户访问的资源恰好在缓存系统里,可以直接返回给用户,命中次数与所有访问次数之比
现在的企业 CDN命中率都在 90% 以上
CDN架构图(设计结合原理图进行设计—每一个公司CDN设计不一样–用户访问-流量并发等性能各不相同)
- 重心解决企业速度问题,并发才(根据公司业务需求)等是核心
CDN网络组成
组成:内容缓存设备、内容分发管理设备、本地负载均衡交换机、GSLB设备和CDN管理系统
-
内容缓存设备Cache:
用于缓存内容实体和对缓存内容进行组织和管理。当有用户访问该客户内容时,直接由各缓存服务器响应用户的请求。 -
内容分发管理设备:
负责核心Web服务器内容到CDN网络内缓存设备的内容推送、删除、校验以及内容的管理、同步。 -
GSLB设备:
实现CDN全网各缓存节点之间的资源负载均衡,它与各节点的SLB设备保持通信,搜集各节点缓存设备的健康状态、性能、负载等,自动将用户指引到位于其地理区域中的最近服务器或者引导用户离开拥挤的网络和服务器。还可以通过使用多站点的内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障
不用CDN技术时,使用GSLB设备可以为用户选择最合适的服务器,但受Web服务器的负荷和传输距离等因素的影响,响应速度依然经常不能满足用户的需求。这一问题的解决方案就是在传输网络上利用缓存技术使得Web服务数据流能够就近访问。内容分发网络(CDN)正是这种思想的一个实现,CDN使用GSLB设备将用户引导到最合适的缓存节点(距离近,负载低),使得用户在访问静态内容时获得更好的体验。
- CDN管理系统:
实现对全网设备的管理,对系统的配置。它不仅能对系统中的各个设备进行实时监控,对各种故障产生相应的告警,还能实时观测到系统中总的流量以及各节点的流量,并保存在系统的数据库中,作为统计分析的基础数据,并对日志文件进行管理、报告。
智能DNS解析原理
企业案例:IDC机房带宽突然暴涨问题
某公司(网站业务)的一个IDC机房带宽流量突然从平时高峰期150M猛增至1000M
该故障的影响:直接导致数百台服务器无法连接,该机房全部业务中断。
企业案例:公司网站(web游戏业务)平时几十M带宽,结果突然跑满100M,持续100M已经很久。
凌晨一点接到报警短信,网站无法访问。立马拿起笔记本上网查看,发现整个机柜的网络都无法正常访问。第一感觉是不是IDC网络出问题了,给机房打电话反馈回来的信息是机房网络正常,但是带宽流量异常(100M带宽的流量峰值已跑瞒)。
该故障的影响:直接导致数十台服务器无法连接,该机房全部业务中断,且故障持续时间长。
企业案例: 公司的CDN源站,源站的流量没有变动,CDN那边的流量无故超了好几个G,不知道怎么处理? 曾遇到过一张图片不到一天,跑了20多T的一张流量。
该故障的影响:由于是购买的CDN,虽然流量多了几个G,但是业务未受影响,但是,这么大的异常流量,持续下去可直接导致公司无故损失数百万元。
三案例分析:
1)IDC带宽被占满的原因很多,常见的有:
a.真实遭受DDOS攻击(遇到过几次,造成影响的不多见,其中还有黑客勒索的案例)。
b.内部服务器中毒,大量外发流量
c.网站元素被盗连,在门户页面被推广导致大量流量产生
d.合作公司来抓数据,如:对合作单位提供了API数据接口
e.购买了CDN业务,CDN猛抓源站少
2)CDN带宽异常,源站没异常。
这类问题基本都是缓存在CDN的数据被频繁访问引起的。解决方法见结尾案例。
- CDN带宽异常,源站也异常。
可能原因如公司做推广,大量数据访问,热点数据cache里不全。或CDN问题导致数据回源。影响就是带宽高,后端静态服务器及图片及存储压力大
解决:
- 真实遭受DDOS攻击
- 内部服务器中毒,大量外发流量。
看看服务器流量,哪个机器带宽高处理下就好了?
实际解决比这复杂得多,带宽打满,所有监控都是看不到的。
解决思路:联系机房确定机房自身无问题后(机房一般与我们一起排查),机房断开连接外部IP服务器的网线,如负载均衡器,仅保留SERVER,断掉内部服务器出网光关的线路,切断外发流量源头。
查看监控流量服务,判断外发流量的服务器,进行处理
- 网站元素被盗连
大规模网站架构优化原则
- 离客户端越近折返数据结束访问,效率越高越好
- 用内存提供数据访问,而不是磁盘(仅作为存储数据)
- 所有同一业务无限接近拆分(横向纵向),soa面相服务
- 更多的节点集群应对用户请求(集群高可用)
- 降低所有服务之间的关联性(耦合性,异步处理,超时及流量控制–淘宝限流案例)
- 服务器深度优化:系统,磁盘,网线,CPU,大内存
网站瓶颈顺序:数据库-》存储系统-》动态服务
下面架构小编后期慢慢更新:
数据库架构瓶颈策略1:增加缓存
数据库架构瓶颈策略2:数据库读写分类(进行高并发)
数据库架构瓶颈策略3:整个库拆分多个小库(系统管理)
数据库深度扩展架构拆分
动静分离架构
多机web动静分离架构与根据域名做动静拆分架构
根据业务进行拆分架构
前端页面缓存架构
web动态服务程序深度拆分架构
页面缓存ESI架构
应用软件数据缓存架构
解决物理单点(增加负载均衡及高可用—四层负载lvs、F5、nginx(对应新设计),haproxy)架构
分布式web数据缓存-CDN网站加速架构
分布式数据库缓存策略及NOSQL策略
动态业务数据增加统一数据库接口架构架构设计
门户网站异步架构策略
静态资源分布式部署:超大规模门户加速CDN应用架构-----新浪公司架构设计案例方式(跨机房分布式部署)
门户新闻,视频业务分布式部署架构
DNS或智能DNS调度动态服务集群部署
门户网站动态程序异步静态化架构
消费者服务集群
分布式存储集群-扩展
NOSQL数据库集群—腾讯架构设计案例
LVS四层负载+keepalive+nginx四七层双结合架构设计–腾讯,京东,淘宝设计策略