倪 劼
(南京图书馆 南京 210018)
我国公共数字文化建设起步于本世纪初,2002年文化部、财政部联合实施了全国文化信息资源共享工程,依托全国各级公共图书馆、文化馆,多形式、多渠道开展数字文化资源服务。在这之后,文化部、财政部又联合实施了数字图书馆推广工程、公共电子阅览室建设计划,这两项文化惠民工程与全国文化信息资源共享工程一起被统称为“公共数字文化三大工程”(以下简称“三大工程”)。借助“三大工程”的实施,覆盖全国省、市、县(区)、乡镇(街道)、村(社区)的公共数字文化服务网络初步建成,通过加强公共数字文化资源生产,不断提高公共文化服务机构的数字产品供给与服务能力,为公众提供多层次、多样化、专业化的公共数字文化服务。“三大工程”在快速建设的同时,各地区出现了发展不平衡、不充分等问题,这引起业界学者的广泛注意。王锰等人对我国公共数字文化服务调研后发现,基层公共文化服务机构的信息基础设施建设发展不平衡、缺乏专业技术人才、资金投入不足,提出要加强信息基础建设,以群众基本文化需求为导向,创新信息技术服务手段[1]。丁宁宁对十多年来“三大工程”的成效给予了充分的肯定,但也指出当前公共数字文化服务仍存在着信息基础设施建设水平较低、专业技术人才缺乏、绩效评估缺失等方面的问题,应当加大资金投入力度,创新资源共建共享模式[2]。吴高等人采用文献调研和案例分析方法对“三大工程”实施情况进行分析,发现当前公共数字文化服务缺乏考核评估,提出加强和完善评估运行机制[3]。罗清郁、余波等人提出了贫困地区开展公共数字文化建设的举措,认为应依托现有工程体系,利用新技术、新手段消除数字资源鸿沟,推动贫困地区公共数字文化发展[4-5]。韦楠华等人进行公共数字文化资源供给分析时发现,现阶段我国公共数字文化建设存在供给内容不足、共享缺失,国家主导与地方自主、政绩至上与公民需求之间的矛盾是问题的根源, 应当充分利用好互联网平台构建数字文化多元合作供给机制,推动文化科技融合解决现有矛盾[6]。针对在发展过程中出现的突出问题,2019年文化和旅游部印发《公共数字文化工程融合创新发展实施方案》,将原有“三大工程”整合成为全新的“公共数字文化工程”,进一步推动公共数字文化融合发展。整合后的公共数字文化建设将以把握导向、统筹规划、创新驱动、开放共享为发展原则,实现服务业态创新、服务效能提升,建立能够实现共建共享、管理规范、服务高效的服务体系。公共数字文化建设对资源供给方面提出了更高的目标,要求在改变传统资源配送模式的基础上,建立资源反馈机制,为实现精准化资源服务提供可参考依据;按照资源适用范围,实现版权效益最大化[7]。我国多地在规划公共文化服务发展时,明确指出“十四五”时期要应用最新科技成果,畅通公共数字文化服务渠道,创新服务模式,精准对接群众文化需求,提供多层次、多样化的数字文化服务,提升公共数字文化服务的针对性、实效性[8]。鉴于此,本文将以公共数字文化资源配送模式为突破口,讨论运用信息技术手段,替换原有资源传递方式,探索与实践公共数字文化工程的创新发展。
一直以来,公共数字文化建设始终重视资源配送中信息技术的应用。全国文化信息资源共享工程在建设初期就尝试利用硬盘拷贝、有线电视、卫星、互联网等方式实现资源传递。为提升公共数字文化资源服务效能,在数字图书馆推广工程的推动下,以国家图书馆为中心节点,各省级公共图书馆为省级分中心节点,辐射至市县级公共文化服务机构的虚拟网项目启动并建成,逐步取代了原有配送模式,成为现阶段公共数字文化资源传递的主要通道。
20世纪90年代起,以公共图书馆为代表的我国公共文化服务机构,为解决跨区域网络环境下的数据远程访问,已经开始尝试虚拟网的构建,从单一馆建设到区域范围建设,使用的组网技术也很丰富,有IPSecVPN、SSLVPN、MPLSVPN等,逐步成为一种普遍的数据传递方式,但始终局限于市县级区域范围内[9]。2014年开始,国家级虚拟网建设项目启动并实施,一张覆盖全国基层公共文化服务机构的信息高速公路网不断被扩大,逐步成为我国公共数字文化资源服务的基础支撑。截至2019年底,国家中心节点已与全国各省级分中心节点、副省级以上55家公共图书馆实现了虚拟网连接,各省级分中心也不断扩展建设规模,基本实现了各基层公共文化服务机构对国家中心节点和省级分中心节点数字资源的远程访问,并充分利用分布式数字资源库,使公众可以精准化地获取海量数字文化资源[10]。公共数字文化虚拟网建设最终呈现树形拓扑,具体如图1所示。
在虚拟网项目实施过程中,采用了分级建设的方式,国家图书馆中心节点主要负责与各省级分中心节点之间完成虚拟网连接,而各省内的市县级公共文化服务机构的虚拟网连接,则由所在省的省级分中心完成,大多数省级分中心采用IPSecVPN技术实现组网[11]。省内虚拟网建设如果以行政层级划分,可以分为“省—市—县”以及“省—市县”两种模式,例如山西[12]、浙江[13]、贵州[14]等省份采用的是“省—市—县”三级架构,笔者所在的江苏省则是采用“省—市县”二级传输模式[15]。相较于三级架构,二级传输模式由省级分中心直接与全省各个市县级公共文化机构进行虚拟网连接,减少了中间节点,网络拓扑层次相对简洁。两种架构模式各有利弊,在实际项目实施过程中,各省都根据自身情况开展虚拟网部署,不管最终采用何种方式,差异性仅仅存在于分支中心节点的层次多少,采用虚拟网传递数字资源的实质并没有改变。
图1 虚拟网拓扑图
虚拟网已逐步取代传统的资源配送方式,成为公共数字文化资源传递的重要手段。目前,国家中心节点与省级分中心节点在虚拟网基础上又增加了专线连接,采用专线实现资源传递,在安全性、可靠性、稳定性方面远远高于虚拟网,但昂贵的专线租赁费用使得此方式并不适合向下推广。省级公共图书馆作为公共数字文化省级分中心与省内虚拟网建设主要机构,目前仍主要采用构建虚拟网的方式连接各基层公共文化服务机构。以江苏省为例,作为东部经济发达地区,虚拟网建设初期未能享受到国家补贴政策,由各地方财政部门划拨专项经费购买相应网络设备,省级分中心通过IPSecVPN的组网方式,最终与全省108个市县级支中心实现了虚拟网连接。与国家中心相比,省级分中心与市县级支中心在虚拟网的运行与维护时都面临着更多的困难与挑战,主要有以下几个方面:
一是缺乏专项维护经费。基层公共文化服务机构尤其是经济欠发达地区的基层机构,普遍缺少财政资金支持,设备常年无法更新。虽然江苏省处于长三角经济发达地区,但省内各地区经济发展水平差距较大,相当一部分基层公共文化服务机构缺乏专项维护经费支持,后期将面临设备无法正常维护升级以及乡镇街道基层服务点无法扩展的尴尬局面。
二是缺少专业技术人员。公共数字文化虚拟网建设中绝大多数省份均采用IPSecVPN连接技术,维护时需要对两端设备同时进行配置。对于基层公共文化服务机构来说,信息技术人员相对缺乏,后期的维护与拓展将面临一定的挑战。对省级分中心来说,树形拓扑结构对建设与维护是一个考验,一旦接入站点增多,维护量也会不断增加,需要做好IP地址、虚拟链路等方面的规划,以应对后期接入站点的不断增长。
三是资源管理与绩效评价缺失。当前公共数字文化虚拟网只提供资源访问的通道,既无法实现资源管理,也无法实现用户访问统计,如果要对现有资源的使用情况开展绩效评价,则需要另外增加系统。
综上所述,采用虚拟网开展数字资源传递,面临着专项经费缺乏、技术人员不足、管理与绩效缺失等诸多困难。笔者以“图书馆or公共数字文化”+“虚拟网or资源传递or资源配送”为关键词,在中国知网数据库对其进行检索,未发现有研究对资源传递提出相应对策。鉴于此,笔者将尝试从技术的角度,在省域环境下以合理方式替代现有虚拟网,实现公共数字文化资源传递。
公共数字文化服务中绝大多数资源属于互联网非公开访问,因此本文讨论的数字资源传递技术均依托互联网实现。现有虚拟网建设是在互联网的环境下建立站到站的加密隧道,确保资源在规定范围内实现传递。所以,支持公共数字文化资源传递的技术必须具备两个要素:一是能够实现互联网传输;二是能够实现访问控制。当前能够满足以上条件的技术方式主要有三种:虚拟网、端口映射、反向代理。
虚拟网属于远程访问技术的一种,简单地说就是利用公用网络架设专用私有网络,从而能够访问到内网服务器资源,公共数字文化工程正是使用该方式实现数字资源传递。当前建设的覆盖全国公共文化服务机构的虚拟网属于端到端访问,利用网络硬件设备,在互联网搭建类似于大型局域网的私有网络,各机构通过构建的加密隧道访问中心节点的数字资源。
端口映射是一种常用的网络服务技术,将公网出口IP地址中的一个端口映射到内网的服务器上,使得互联网用户能够访问相应服务器上的资源。端口映射本身只能实现资源访问,并不能够达到访问控制的要求,所以还需要在实现端口映射的网络设备上增加网络访问控制列表,确保数字资源能够在规定范围内有效传递。
反向代理技术通过在客户端与被访问资源之间增加信息中转站,使得用户需向代理服务器发出访问请求,由代理服务器将资源服务器内容传送给访问者。这样做的优势是可以将数字资源与访问者请求都汇集在同一台代理服务器中,在代理服务器中对用户的请求与响应报文通过程序进行分析与处理,既保证了资源有效传递,又实现了访问控制与资源管理。
上述三种技术方式对比如表1所示:
表1 技术方式比较
端口映射作为数字资源传递的另一种可行性方式,与虚拟网相比,仅需在中心节点部署,构建复杂度较低。该方式在中心节点网络出口防火墙对资源访问地址进行端口映射,并对相关的源地址、目的地址增加访问控制,可以实现公共数字文化资源有效传递。但该方式需要在中心节点出口防火墙上进行配置,后续工作均依赖硬件防火墙完成,很难满足中心节点多样性、定制化的需求,无法实现资源管理与绩效评价,因此采用端口映射方式并不适用于目前的资源服务环境。
反向代理方式则主要是将用户数字资源访问请求汇集在一台或一组代理服务器上,并对代理服务器上的访问请求与响应报文进行处理,实现用户访问、资源管理、访问统计。其优点是系统构建相对简单且无需额外硬件设备,缺点是仅支持HTTP协议的数字资源,但目前公共数字文化资源均采用B/S结构,使用HTTP协议为用户提供服务,这为采用反向代理技术提供了先决条件。相较于虚拟网和端口映射方式,反向代理能够实现数字资源管理及访问统计,部署时不影响现有网络结构,系统可扩展性强,实现成本较低,是一种极为简便的资源传递方式,适合在公共数字文化服务中开展推广应用。因此,笔者更倾向于使用反向代理的方式实现数字资源传递。一直以来,反向代理通常使用Nginx平台实现,随着互联网技术不断发展,基于Nginx整合的OpenResty平台正逐步在互联网企业中被广泛使用。本文将探讨如何通过OpenResty平台采用反向代理方式实现公共数字文化资源服务,并对所涉及的关键技术进行分析与研究。
反向代理属于Web代理的一种形式,Web代理的作用是为了实现资源的有效访问,按形式可以分为正向代理与反向代理,在实际应用方面二者有一定差别。正向代理一般架设在客户端和目标主机之间,为客户端无法访问到达的目标主机提供一种可访问途径。在现实应用中用户已知目标主机存在,主动通过代理服务器去访问目标主机。其作用是能让客户端访问原来无法访问的资源,通过正向代理还可以实现用户访问记录、访问速度提升、上网权限认证、用户信息隐藏等等。而反向代理是将代理服务器伪装成被访问的资源服务器,在现实应用中用户并不知道目标主机的存在,通过访问代理服务器来实现资源获取。反向代理的作用一般是为了保护目标主机安全、防止Web攻击、保障负载均衡等等,同时也可以实现用户认证与访问行为的获取[16]。
虽然正向代理与反向代理方式均可实现数字资源传递,但使用反向代理方式时,用户实际并不知道真实目标主机的存在,从而不能绕过代理服务器去直接访问目标主机,这为数字资源传递的安全性提供了保障。能够实现反向代理技术的平台有很多,包括Apache、IIS、Nignx等等。其中,Nginx自问世以来,因其卓越的性能表现以及丰富的功能配置,逐步成为反向代理应用的首选。本文所采用的OpenResty平台,正是在Nginx基础上糅合Lua语言等技术,使得用户能够快速高效地构建服务端相关应用。
2007年,在OpenAPI热潮的影响下,雅虎中国的研发团队希望能够设计出一套REST风格的Web 服务器,为雅虎中国的搜索产品提供内部服务。后来,该研发团队核心成员章亦春加入阿里巴巴,并决定对之前的项目进行重新设计和彻底重写。在淘宝数据工程师王晓哲的提议下,章亦春选择基于Nginx和Lua脚本语言进行开发,将Nginx核心、LuaJIT虚拟机以及常用的Lua库糅合在了一起,构成一个高性能、易扩展的开源Web平台,并将这个平台命名为OpenResty[17]。OpenResty有效地把Nginx转换成为性能强大的Web服务器,开发人员可以使用Lua语言对Nginx核心以及现有的各种Nginx C模块进行脚本编程,能够快速构建出处理一万以上并发请求的极端高性能的Web应用。目前,越来越多的大型互联网企业正使用OpenResty处理相关业务,如网易、腾讯、去哪儿网、新浪、天涯、CloudFlare、Reblaze.com、EMS、网龙等[18]。笔者选择OpenResty平台实现系统构建,正是充分利用其Nginx反向代理功能、丰富的第三方模块、高性能Web应用能力以及Lua脚本语言易开发的特性,能够快速实现更符合需求的定制化开发。
本文基于OpenResty平台采用反向代理方式,将被代理数字资源汇集在一台服务器并部署在省级分中心节点出口,国家中心节点与省级分中心节点仍采用专线方式连接。市县级支中心节点则可以通过互联网直接访问代理服务器获取资源。系统拓扑如图2所示:
图2 系统拓扑图
系统设计为B/S结构,主要由前端界面、业务处理、后台数据库三个部分组成。前端界面使用Python Flask 1.0.2框架,业务处理部分采用OpenResty 1.13.6.2,后台数据库使用MariaDB 10.0,系统运行环境CentOS 7.4。系统核心是业务处理部分,由资源反向代理、用户访问控制、用户访问统计等模块构成,通过反向代理功能实现数字资源代理访问,采用访问源IP地址认证的方式实现访问权限控制,并对用户访问的HTTP请求与响应报文进行处理,实现访问数据统计获取。
系统核心部分通过OpenResty平台实现了资源反向代理、用户访问控制与访问统计,下面将对实现这三部分功能的代码进行展示。
5.1.1 资源反向代理
反向代理利用了Nginx中的proxy_pass方法实现,在Nginx配置文件中将被代理的资源配置到相应的location中,即可实现数字资源反向代理,反向代理作为Nginx中的基本应用,具体配置难度不大,核心代码示例如下:
5.1.2 用户访问控制
访问控制作为本系统另一个核心模块,实现了用户源地址访问控制。本系统采用Lua脚本语言对用户访问请求的源IP地址进行识别判断,允许与数据库中保存IP地址匹配的用户进行资源访问,核心代码示例如下:
5.1.3 用户访问统计
使用OpenResty的最大优势就是可以通过Lua脚本语言实现业务处理,本系统用户通过HTTP协议实现数字资源访问,服务器端接收由客户端浏览器发送的访问请求信息并返回响应结果,在这个过程中,使用Lua程序对这些请求和响应的内容进行分析,即可得到用户访问数据。HTTP请求与响应报文格式如表2所示:
表2 HTTP协议请求与响应报文格式
用户访问统计内容包括:用户信息、URL、源IP地址、用户检索、用户下载等内容。其中用户信息与IP地址以及访问的URL信息,可以通过Lua语言在请求报文中的Cookie、URL、User-Agent、remote_addr等属性中获取。用户检索有两种方式:GET方式在URL中获取用户检索数据;POST方式可以在请求正文中获取用户检索数据。用户下载信息获取相对较为复杂,需结合响应报文内容进行分析,如响应报文中出现Content-Disposition字段,则表明有附加文件发送给用户。又如Content-Disposition属性中包含attachment关键字,则说明当前用户通过下载的方式获取附件,其他则为当前用户通过在线阅览方式获取资源。用户访问统计中关于下载部分的Lua代码片段如下:
图3 系统前端访问界面
图4 系统后台统计界面
南京图书馆是公共数字文化工程省级分中心,也是江苏省公共数字文化建设中心,承担着全省各市县级公共文化机构资源传递的任务。笔者以南京图书馆为例,采用以上方法替代原有虚拟网,使基层公共文化服务机构通过互联网直接获取数字资源,各分支机构将无须再做任何维护,即便是增加或者扩展基层服务点,也仅需在系统中添加相应的出口IP地址即可。与之前采用虚拟网相比,现有方式极大简化了工作流程,减少了工作量,后期运维工作也全部由省级分中心完成。系统前端访问以及后台数据统计部分界面如图3、图4所示。
公共数字文化长期以来一直由国家中心承担建设的主要任务,省级分中心通常会直接借鉴国家中心的经验开展相应工作,但当前在省域环境下采用虚拟网开展数字资源传递,并非最佳方式。在创新发展推动下,借鉴互联网其他行业经验,充分利用OpenResty的优势开展公共数字文化建设,具有以下几个方面意义:
简化传递方式,有利于降低服务成本。虚拟网通过专业网络设备在互联网上建立站到站加密隧道实现数字资源传递,而利用OpenResty平台类似于建立数字资源云服务,只需要在中心节点将数字资源以反向代理方式提供服务,通过对接入站点IP地址进行验证,即可实现数字资源站到站访问。建设难度大幅降低,接入站点不需要专业设备即可实现资源访问服务,零成本的接入模式,有利于解决基层公共文化服务机构存在的技术、经费等问题。
优化网络结构,有利于服务延伸与拓展。从网络层次的角度来看,数字资源传递由网络层上升至应用层;从逻辑拓扑的角度来看,原有树形拓扑结构更改为星形拓扑。网络结构优化带来的是应用变化,利用网络应用层的特点,对访问数据包进行处理,能够实现数字资源统计分析、资源管理、统一认证、单点登录等功能,并以此为依据实现数字资源服务绩效考核。而对于用户来说,这与正常访问没有任何区别。借助访问统计数据,该方式还可以为用户提供更加个性化的服务,使用户可以更加直观地感受到自身数字资源使用情况,优化用户体验。对于基层公共文化服务机构来说,这将使工作重点更多地向服务转移,有助于进一步发挥好服务阵地的作用。
创新驱动发展,这一尝试有利于探索公共文化服务新模式。长期以来,我国公共文化服务一直面临着发展不均衡的问题,运用技术手段创新发展方式,消除地区差异鸿沟,同时发挥中心节点龙头作用,带动地区公共文化服务发展,也为解决公共文化服务发展不平衡不充分的问题,实现基本公共文化服务均等化,提供了一种探索模式。