基于内容分发网络在电力信息网中的应用
2022-11-22余竞航
余竞航,汤 雷,王 霖,洪 波
(1国网江苏省电力有限公司信息通信分公司 江苏 南京 210003)
(2南京基石数据技术有限责任公司 江苏 南京 210093)
0 引言
随着互联网的高速发展,网络规模不断扩大,应用访问量显著增加。对于服务器而言,用户接入量、数据吞吐量呈几何级增长,由于应用设备的局限性和网络带宽的限制,网络传输文件造成的延时问题很大程度上影响了用户体验。当用户与服务器地理距离较远、下载文件较大时,这一影响更为严重。为了缓解这一问题,内容分发网络(Content Delivery Network, CDN)应运而生[1]。近年来,随着电力企业能源互联网建设的推进,电力信息网络的规模也在不断扩大[2],各类应用访问量持续增加,业务部署的服务器面临日益增加的压力,也让相关系统和设备的运维部门面临更大的挑战[3]。为了解决这一问题,本文提出了一种基于Squid软件的CDN网络架构[4],探索了CDN技术在电力信息网络中的应用可能性和效果[5]。
1 CDN发展概况和基本原理
CDN技术从20世纪90年代末被提出以来,得到了迅速的发展。据统计,在2005年全球CDN市场规模为2.95亿美元,而这一数字到2020年已飙升至100亿美元。阿卡迈公司(Akamai)是CDN技术的发明者,也是现今最大的CDN服务提供商之一。在国内,华为、阿里、腾讯等公司也对CDN做了深入地研究并提供CDN服务。
CDN的提出是为了解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速[6-8]、点播、直播等场景。
CDN网络一般分为中心与边缘节点两部分,中心负责全局负载均衡与内容管理。中心节点的功能如下:
(1)随时监控边缘节点的健康状况(可用性、拥塞程度);
(2)根据边缘节点到请求端的距离,以及边缘节点的健康状况,按一定的策略重定向请求;
(3)与客户主站进行数据同步更新。
负责为用户提供内容服务的cache设备应部署在物理上的网络边缘位置,即CDN边缘层。CDN系统中负责全局性管理和控制的设备组成中心层(二级缓存),中心层同时保存着最多的内容副本,当边缘层节点未命中时,会向中心层请求,如果在中心层仍未命中,则需要中心层向源站回源进行请求。
CDN在原先的中心服务器基础上,在不同地域分散部署多个边缘节点缓存服务器[9]。当用户发起访问请求时,首先通过CDN全局负载均衡系统将请求导向某一边缘节点,通常该节点距离用户最近。若该节点已有对应内容的缓存,则直接发送给用户,不需向中心服务器发起请求;若该节点没有对应内容的缓存,则将请求转发给中心服务器,将内容下载到边缘节点保存,并发送给用户。因此,对于中心服务器而言,CDN可以降低访问量,减轻服务器压力;对于用户而言,CDN可以使很多内容直接从距离更近、访问延时更短的边缘节点发送给用户,从而降低下载延时,尤其对于较大的静态视频等内容,有很好的加速效果。
2 CDN技术特点
根据前文所述,一个最简单的CDN网络包含一个中心服务器、一台DNS服务器和若干个边缘缓存服务器。从各部分功能而言,CDN的关键技术包含内容路由技术、内容分发技术和内容存储技术等方面。
2.1 关键技术
2.1.1 内容路由技术
内容路由技术是为了解决将用户请求定向到最优的边缘节点的问题,负载均衡是内容路由技术的核心[10]。原则上,对于用户而言,通常距离最近的节点即是最优节点。因此,需要通过DNS服务器根据用户IP地址进行判断,并将用户发起的URL请求,解析到对应的最优节点上。这一过程的实现便是内容路由技术的重点之一。另外,对于更完善的CDN网络,当某一节点出现故障时,CDN应当具有及时探活并更改解析结果的能力,从而利用好CDN网络的节点服务器冗余这一优势,减少服务器或网络故障对用户造成的影响。
2.1.2 内容分发技术
内容分发技术是指中心服务器向边缘节点分发内容这一过程的实现手段。对于静态内容,CDN通常采用被动分发的方式,即当有用户向边缘节点发起请求而该内容在边缘节点没有缓存时,边缘节点向中心服务器转发请求并缓存这一内容,在此过程中,中心服务器被动分发了内容。但对于一些具有实时性、延时要求高的特定内容,如直播视频流等,则需要中心服务器主动向边缘节点推送内容。另外,边缘节点缓存内容需要设置一定的有效期,防止中心服务器中内容发生更新而边缘节点更新不及时,影响用户访问。在此基础上,对于重要内容,中心服务器发生更新时应主动向边缘节点推送,使边缘节点内容能够及时更新。
2.1.3 内容存储技术
内容存储技术主要针对边缘节点。由于中心服务器的内容大小、格式、类型等不尽相同,对于可靠性、延时等的要求也不一,因此边缘节点需要特殊的内容存储和管理模式,以满足不同的需求。此外,当中心服务器访问量并不大,边缘节点性能还有较大利用空间时,同一套CDN网络也可以复用到不同的应用中,即同一组边缘节点可以指向多个不同的中心服务器,同时实现多个应用的加速。此时,数据存储的可靠性、稳定性和安全性也对相关技术提出了更高的要求。
2.2 业务流程
CDN架构下的解析流程如下:当用户发出请求,通过本域DNS系统的解析,其最后会在CDN专用DNS服务器上进行域名解析[11]。CDN的全局负载均衡设备IP地址通过其DNS服务器反馈用户[12]。用户向均衡设备发起内容访问请求[13]。其根据用户IP地址以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,并通知用户向选择的设备发起请求。最后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。全局负载均衡设备把服务器的IP地址返回给用户。
2.3 技术优势
根据上述CDN技术特点,相较于传统的简单B/S网络架构,完整的CDN网络具有以下优势。
2.3.1 提高响应速度
采用分布式存储,通过临近代理缓存节点的cache加速,提高用户请求的响应速度,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高此类站点的稳定性[14]。
2.3.2 提升访问质量
通过镜像服务可兼容不同运营商网络的互联,实现了跨运营商的网络加速,使得处于不同网络中的用户都能有较高的访问质量。
2.3.3 智能负载分担
远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器[15],选择最快的Cache服务器,加快远程访问的速度[16]。
2.3.4 减轻网络负载
自动生成服务器的远程Mirror(镜像)Cache服务器,远程用户访问时从Cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。
2.3.5 加固安全防护
CDN众多边缘节点实现了冗余,降低节点间耦合度,广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种DDoS攻击对网站的影响,同时保证较好的服务质量。
3 基于squid软件的CDN应用
为研究CDN在电力信息网络中应用的可行性和实际效果,本文选择某省电力公司信息内网进行网络部署,并针对公司门户网站这一应用进行实验验证。该应用部署于省会数据中心某服务器,将其作为中心服务器,另外部署Bind作为专用DNS服务器,通过访问控制列表等的配置即可实现定制化重定向功能[17]。对于最重要的边缘节点服务器,选用开源软件squid在地市服务器上进行部署。CDN网络整体架构[18-21]如图1所示。
图1 电力信息网络中部署的CDN网络架构
squid是一款高性能的代理缓存服务器,也是目前应用最广泛、技术最成熟的一种。它支持FTP、Internet Gopher、HTTPS和SSL等多种协议,可运行于大多数操作系统上,本文中将其部署于CentOS系统。安装完成后,需在后台配置监听端口、访问控制、代理IP地址等,还可以根据需要设置缓存空间大小、被缓存文件大小范围、日志保存地址、各类文件存活时间等参数。
对于电力信息网络用户而言,代理缓存服务器本身的存在并不需要被用户感知,CDN的使用与否应当对用户透明,因此,本文将边缘节点配置为反向代理服务器。用户不需要进行本地设置,只需要像往常一样通过域名访问,即可被重定向到边缘节点上。
配置完成后,在某地市一台终端访问门户网站进行测速实验。首次通过CDN网络访问时,相对于直接访问中心服务器并没有加速,甚至加载时间略微变长,这是由于此时边缘节点还没有缓存内容,而多次重定向反而会增加延时。当第二次访问时,页面加载速度,尤其是其中静态视频之类大文件的下载速度变快了很多。多次试验后证明,这一实验场景下,CDN可使视频加载速度提升至原来的三倍左右。
除了该应用之外,本文还对一些诸如在线学习系统、融媒体系统、流媒体直播系统等应用做了进一步验证,都取得了一定的加速效果。但综合而言,CDN网络对静态大文件的加速效果是最好的,普通小文件本身加载速度就比较快,对于用户体验的改善有限,而对于流媒体文件,则需要进一步优化CDN网络设计,应用主动分发内容的技术,才能有更好的应用效果。
4 结论
本文研究了CDN网络的应用场景、发展进程和技术特点,并在电力信息网络中搭建实验网络,验证了基于Squid软件的CDN网络对部分电力信息应用的加速效果。实验证明,对于静态大文件,如视频文件等,CDN具有很好的加速效果,在某些场景下可使文件下载速度提升至三倍。对于未来电力信息网络中CDN的应用,首先,需要进一步研究CDN对更多类型系统、文件的应用方法,尽量使同一组代理缓存服务器同时应用到多个不同系统上,最大化CDN利用率。其次,对于更复杂、更高要求的内容路由技术,普通DNS服务器并不能满足要求,还需要进一步研究负载均衡算法等,提升CDN网络鲁棒性。最后,在路由、缓存等技术验证完善后,对于文件管理、日志管理等还需进一步严格把控,以满足日后在更多实际系统中的推广和应用需求。