简单cdn之二

简介:





作者:田逸(sery@163.com

7.1.4  cdn 的基本原理
 
Cdn的基本原理可概括为:内容缓存、就近访问以及以dns视图方式根据用户来源确定其访问位置。
 
      内容缓存:缓存服务器从源站取得所需数据,然后暂存在本地的硬盘或内存。使用这种缓存机制的好处是:(1)内容自动更新;(2)无多个服务器数据相互同步问题。
      就近访问:让用户的访问请求转向到离用户最近或最易于访问的缓存服务器。
      dns视图方式根据用户来源确定其访问位置:即让电信的用户访问电信的缓存服务器,网通用户访问网通的缓存服务器。
 
7.1.5   什么是简单 cdn
 
简单cdn这个概念,是相对于复杂cdn来定义的。因此,我们先来了解一下什么是复杂的cdn
 
笼统一点的讲,cdn服务提供商所运营的环境,就是复杂cdn。就缓存服务器而言,其结构是分层次的,一般可划分成核心节点和边缘节点。并且同一层级的相邻节点之间又可形成姐妹关系,亦即在同一个集群下的节点互为姐妹关系。为了保证最高的性能能和效率,不建议跨网或跨物理范围的节点形成姐妹关系。为了更直观的理解这个结构和由此产生的好处,我在这里以一个最长访问路径的图示来说明:
7-2  缓存服务器相互关系
1、   用户向某边缘服务器(边缘A)发起访问请求,所需内容没有被缓存。
2、   边缘服务器(边缘A)于是询问其邻居,是否缓存了用户所需的请求对象,邻居节点也没有缓存所需的对象。
3、   边缘服务器(边缘A)转而向某个父节点(核心A)请求文件,如果该父节点仍然无所需的文件,则该父节点询问其邻居;如果邻居也没有所需的文件,则把请求转给源站。
4、   源站返回数据给核心节点(核心A),并缓存数据在该节点。
5、   核心节点(核心A)返还数据给边缘节点(边缘A),并缓存数据在该节点。
6、   边缘节点返还数据给用户,一次最长路径的访问完成。
这种分层次的机制,既能保证最高的可用性,又能最大限度的减少向上一级节点的网络流量。
 
除了缓存服务器结构上的差异外,复杂cdn还具备以下一些特性:
(1)        缓存服务器布点范围广,服务器数量庞大。
(2)        复杂的日志处理系统。因为计费依赖于访问日志。
(3)        详细的视图划分。例如精确到每个省的ip地址段。
(4)        预加载机制。
 
当我们了解清楚复杂cdn以后,再来了解简单cdn就容易多了。所谓简单cdn,就是节点层次简单、服务器数量有限、能实现有限规模站点加速和发布的平台。通常情况下,我们不必为实现cdn带来的好处而部署复杂的cdn系统,这将花费巨大的人力物力。把复杂的cdn简化,使之符合我们的业务需求,是本章“简单cdn”撰写的用意所在。
 
 
7.2 简单 cdn 设计
 
先申明一下,本文所设计的简单cdn只是一个样例,并非适用于所有的场景。读者可根据我的思路,设计出更适合自己应用环境的简单cdn
 
7.2.1   简单 cdn 设计的基本原则
 
简单cdn设计主要考虑以下几点:
(1)        选点合理,能覆盖大部分网络用户。最起码得在电信和网通机房放置缓存服务器,如果经费充裕,把教育网也考虑进来。
(2)        系统本身具备很好的高可用特性。用户的访问主要集中在缓存服务器,缓存服务器之间使用集群技术就能得到比较高的系统可用性。
(3)        核算自建简单cdn的成本,使之有较好的性价比。如果自建一个cdn远比购买cdn服务商所花费的资金还高(目前国内商用cdn每兆带宽为50/月,基数是 1G ),基本上没必要自己建立cdn了。
(4)        系统应该具备很好的伸缩能力,以适应各种业务变化。如增加布点、增加设备、增加站点等等。
 
7.2.2   需求描述
 
欲对三个web服务进行加速,为了描述方便,使用域名来进行说明。这三个加速站点为图片站点 images.sery.cn、下载站点dl.sery.cn、主站 www.sery.cn3个站点全部是静态内容,其页面文件主要是.html(htm).execssjpegjs等,非常适合被缓存。
 
服务的主要目标用户包括电信线路的用户、网通线路的用户、教育网的用户,其他线路的用户(如科技网、长城宽带等)访问请求被转向到网通线路的缓存服务器。为了实现这个目标,我们可能需要放置4组服务器来做缓存,即电信一组,网通2组,教育网一组。
 
7.2.3   简单 cdn 设计
 
需求明确之后,接下来的设计工作包括:布点选择、工具选取、cdn结构设计等几部分。
 
      布点选取
布点包括源站、全局智能dns、缓存服务器集群。
(1)        源站及全局智能dns选择互联互通性较好的第三方bgp机房;因为使用cdn服务的站点数量有限,故在缓存服务器以主机名的方式寻址源站。
(2)        缓存服务器共4组,选择二线或三线城市的机房托管,能节省大量的资金北京、上海等城市带宽价格大概在300~400//月,而偏远一点二三线城市(如安阳) 1G 带宽的年总费用才8-10万。
 
      工具选取
工具包括操作系统、dns软件、缓存服务器软件、负载均衡软件、源站软件以及定制的脚本。
(1)        所有的服务器均使用32位的centos 5.x。曾经使用过64位的系统,但在执行缓存服务器的缓存清理操作时,有些小问题。
(2)        Dns使用bind- 9.4.0 。低于9的版本,可能不支持视图view,没有视图功能,智能dns就无法实现。不知道其他的dns软件有没有支持视图view的,愿知者告知。
(3)        缓存服务器有两种选择,一种是squid,另一种是varnishSquid多用在复杂cdn场景,它能实现缓存服务器间的层级关系(邻居形成姊妹、边缘节点与核心节点形成父子关系),功能强大而配置复杂;Varnish为后起之秀,配置简单而性能卓越,维护起来比较简单,因此本案选择varnish作为缓存工具【注1
(4)        负载均衡由ipvsadmkeepalived两部分组成。ipvsadm是核心,负责包转发和负载分摊;keepalived为框架,负责故障隔离和失败切换failover
(5)        可做web服务的软件比较多,因为站点为简单的静态文件,选择nginx比较省事。
(6)        定制脚本主要目的是自动刷新缓存服务,把这个脚本放在摸个服务器上,只需执行一次(也可使用crontab自动调用)就能实现所有缓存服务器的缓存清理。
 
      cdn结构设计
 
我们可根据cdn的角色来设计整个结构,这些角色包括:源站、智能dns及缓存服务器3大部分,根据布点选择和其他因素综合考虑,我们可绘出整个cdn的布局结构图。
7-3 cdn 服务器布局
从图中可以看出有2组缓存服务器放置在网通机房,这两组服务器不在同一个物理位置,这样做主要目的是:bind规划视图view时,能收集到的地址比较有限,不在收集列表的其他ip地址段,则统统转发给网通B机房的服务器;另外网通B机房的带宽比较便宜,机器数量也比较多,跟其他网段的互联互通还可以。
 
(1)        源站
源站为内容的原始发布,尽管采用cdn技术以后源站的负荷会变得很小,但为了有较高的可用性,可把它部署成负载均衡集群。
 
2)智能dns
智能dns是用来实现用户访问转向功能,即通过建立访问列表,判断用户的访问来源,确定其访问对象的位置。在本案中,我建立电信、网通、教育网三个ip地址列表,未在这三个列表的称为其他;每个列表关联一个bind的视图view,那么一共就有4个视图view。地址列表可以自己收集,也可以花钱购买,地址列表越大,dns定向准确性越高。在这里强调一下:ip地址列表为客户dns服务器所在网段的列表,而不是用户接入网络的ip段。客户端计算机所设定的dns,通常称为用户本地dns。同样,为了使其有较高的可用性,dns采用主从同步的架构。
 
以下内容省略.
简单Cdn实现
简单cdn功能测试
简单Cdn监控
简单cdn维护
其他
 













本文转自sery51CTO博客,原文链接:http://blog.51cto.com/sery/259635  ,如需转载请自行联系原作者

相关文章
|
存储 人工智能 运维
大模型训练稳定性思考和实践
本次分享由阿里云智能集团高级技术专家张彭城主讲,聚焦大模型训练的稳定性问题。主要内容分为三部分:1) 大模型训练稳定性的关键挑战,包括大规模同步任务中的故障率高和恢复成本大;2) 阿里云大模型训练稳定性系统的介绍,涵盖健康检测、实时可观测系统及自愈系统;3) 实践分享,探讨集群网络故障定位与修复、性能优化等实际问题的解决方案。通过这些措施,确保大模型训练的高效与稳定。
|
网络协议 Shell
srt流媒体搭建
srt流媒体搭建
1305 0
srt流媒体搭建
|
消息中间件
RabbitMQ——死信队列的三大来源应用举例
RabbitMQ——死信队列的三大来源应用举例
RabbitMQ——死信队列的三大来源应用举例
|
Linux 开发工具 数据安全/隐私保护
(文末下载)一款比Total Commander更强的免费文件管理工具
如果让我选择最希望Windows优化的一项功能,那么我首先想到的就是文件管理器。
(文末下载)一款比Total Commander更强的免费文件管理工具
|
20天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34892 53
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
14天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
13615 42
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
10天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
2762 28
|
2天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。