本节介绍如何提高Web服务质量(quality of service,QoS)。 服务质量主要包含如下几个重要指标。
性能:描述系统的反应效率,通常以响应时间来衡量。
伸缩性:描述系统在用户数量增加的情况下,能否保持较高的性能, 通常以所能同时支持的用户数量来衡量。
可用性:描述一个系统的可访问和可操作程度,通常以系统运行时间的百分比来衡量。 一个系统的可用性是99.99%,那么该系统最多每天只能有9秒的停机时间(包括故障造成意外停机和系统维护所需的人为停机)
安全性:描述系统的保密能力和防御能力。
3.5.1. 预处理(缓存) #
预处理,又称缓存,是指系统预先生成地图或执行其他任务,把结果存储起来以备后用, 而不是在系统运行中接到用户请求时再实时生成地图或执行任务。 如图3.18所示,如果有缓存,Web服务器可以从缓存中快速找回结果,而不再需要到数据库中读取数据, 实时完成制图和进行其他处理。 缓存减少了GIS服务器和数据库服务器的负担,是提高WebGIS服务质量的一种有效途径。 Fig. 3.17 Web服务器可以从缓存中快速找到结果,迅速响应用户请求,从而减小对GIS服务器和数据库的压力, 提高服务的质量 # 
缓存技术主要用作生成地图。 地图缓存,也称为地图瓦块或切片,是按照一系列的比例尺,预定生成一系列的地图切片(或称瓦块), 以便快速显示(图3.19)。 制作地图缓存的主要原因有: Fig. 3.18 地图缓存按照一系列的比例尺预先生成地图瓦块(A),地图缓存方案包括比例尺级数、每层的比例尺、 瓦块尺寸、瓦块起点、瓦块区域以及图片格式。(致谢:美国国家公园管理局) # 
提髙系统的性能、伸缩性和可用性:缓存减少了服务器的负担,用户可以获得快速的响应, 从而可以节约用户的时间。
提高制图质量:可以使用高级的符号和复杂的图层,预先生成高质量的地图。
行业惯例:在目前的Web地图应用中,基础底图广泛采用了缓存,这已经成了行业的惯例, 也改变用户对WebGIS的期望,他们期望所有的WebGIS都能提供缓存这种较好的用户体验。
在创建缓存之前,需要做一些规划,例如,使用哪种坐标系、采取哪种瓦块方案。 瓦块方案包括比例尺级别、每一级的比例尺、瓦块的尺寸(如256像素x256像素)、瓦块的起点坐标、瓦块区域以及图片格式(如JPEG、PNG 8、PNG 24或者 PNG 32)。 如果你的地图将与 ArcGIS Online、Google Maps 或者 MicrosoftBing Maps 一起使用, 那么,你的地图应该采用与它们相同的坐标系,即WGS 84Web墨卡托,你的瓦块方案也应该与它们相匹配。 缓存的创建可能需要很长的时间完成,这取决于地图的复杂程度和瓦块方案,特别是比例尺的级数和比例尺的大小, 比例尺最大的几层一般占据制作缓存的绝大部分时间。 缓存最适合不经常变化的地图,如街道地图、影像地图、地形图以及其他基础底图。 如果你的数据经常变化,可以采用定期更新缓存来保证瓦块的现势性,也可以不采用瓦块,而米用动态地图的方法。
除地图缓存外,缓存也可以用于查询和地理处理等任务。 例如,波斯顿太阳能项目WebGIS中(见第2章)就对地理处理做了缓存。 该应用允许用户查看波斯顿每栋屋顶的光照潜力,而光照潜力计算属于高强度运算, 因为这需要考虑很多环境和大气因素。 该项目运用ArcGIS空间分析工具,事先计算每个屋顶每月的光照潜力和每年能减排的C02量, 把这些结果存储在一个表中。 当用户想计算某屋顶的光照潜力时,本系统无需再进行计算,而是直接从缓存表中把结果读出来, 立刻呈现给用户(图2. 11),这样就隐藏了地理处理的复杂性,提高了系统性能,获得了较好的用户体验。
3.5.2. 算法和系统的优化 #
WebGIS应当仔细考虑软件算法和软、硬件系统的优化问题,以到达最佳性能。 每一项GIS任务都有多种不同的实现方法,发现和采用最优的算法可以大大提高系统的性能。 例如,在地图缓存不可行或者不是最优方案的情况下,动态绘制地图就显得必要,而动态生成地图一般是比较慢的。 ArcGIS for Severl〇. 1放弃了原来基于MXD的地图渲染引擎,采用了一个基于服务定义(ServiceDefinition)的高性能的绘图引擎,既能快速生成地图,又能保持较好的制图质量。
GIS数据库调试也是WebGIS的一个重要组成部分。 一些基本的技术包括:
把地理数据统一成需要的投影(如Web墨卡托);
创建索引,包括空间索引和属性索引;
保持高效的表空间;
清理表空间和服务器驱动盘的碎片;
把索引甚至数据预先加载到内存中;
及时更新数据库的统计信息(以便数据库在执行查询时能选择最佳的执行途径)。
系统的配置方案需要考虑有多少用户、可能有多少人在同时使用这个系统、他们分别在利用这个系统做什么工作、系统的数据量有多大、数据量将来如何增长、项目要求的响应速度和可用性是多少, 根据这些因素配置足够的软件和硬件。
3.5.3. 故障转移和负载平衡 #
故障转移和负载平衡是两种通过冗余配置来提高系统可靠性和可用性的部署方式。 故障转移是指当一个服务器发生故障或需要维修时, 系统能自动或人工地将Web用户的请求重新指向到另一个服务器。 负载平衡是把用户的请求分配给两个或多个服务器,让多个服务器共同分担系统的工作。 大型WebGIS系统应当考虑故障转移和负载平衡。 例如,ArcGIS for Sever站点(site)就兼具故障转移和负载平衡的功能。 站点使用有一个Web网关来接受传人的请求,并把这些请求分配给多个GIS服务器,实现负载平衡。 如果一个GIS服务器计算机变得不可用,Web网关可以将请求分配给余下的GIS服务器, 这样形成一个“高可用性”的架构。
3.5.4. 降低对互联网带宽的压力 #
Web服务接收客户端的请求并把结果返回给客户端,两者之间的数据传输,特别是地理数据的传输,往往需要相当大的互联网带宽;否则,Web服务的质量将受到影响。 以下方法可以降低对互联网带宽的压力,从而可以提高Web服务的质量。
利用浏览器端的缓存:浏览器端与服务器端的缓存不同。 服务器端的缓存主要是预先生成地图瓦块或其他结果, 而浏览器端的缓存主要是指对那些已经下载到浏览器中的内容,不要再次下载。 浏览器端的缓存内容往往是以URL为标识的, 因而REST风格的Web服务便于系统充分利用浏览器端的缓存来提高系统的性能。
采用 HTTP 压缩:启用Web服务器的压缩选项,对Web服务的请求和结果进行压缩,然后再传递, 这样可以降低50%数据传输量,提高系统的传输效率。
选择适当的数据格式:例如,在很多情况下,JS0N和AMF比XML更为轻巧,比XML更便于传输。
3.5.5. Web服务的安全保护 #
很多地理Web服务是公开的和免费的, 但一些企业和政府等机构所发布的Web服务可能包含涉及本单位机密、涉及客户隐私或需要收费的内容, 这些Web服务需要保护起来。 如下是一些保护Web服务安全的基本技术。
使用专网和虚拟专用网:在此方案中,Web服务及其用户共同处于某单位的内网中, 通过防火墙等方法与外网隔绝,外网用户无法访问。虚拟专用网(VPN)在互联网上创建一个安全的通道。 通过VPN,即使客户端不在单位办公室里,依然可以登录内网,使用内网上的Web服务。
身份验证:通过用户角色和权限来保护Web服务。用户身份可以采用轻型目录访问协议(LDAP)、 Windows Active Directory等来管理〇•安全令牌(token):—个令牌是一个加密字符串, 包含加密的授权信息。令牌通过申请或在用户登录时获得。
安全超文本传输协议( HTTP S) : HTTP S对Web服务和客户之间的传输数据加密, 避免信息被截获和篡改。
反向代理:以代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器, 并将从服务器上得到的结果返回给客户端。这样,代理服务器就可以把GIS服务器隐藏在内网中, 在GIS服务器和可能的恶意攻击之间提供了一道屏障,提供了一个保护层(图3.20)。

Fig. 3.19 地理空间Web股务可以通过防火墙JHTPS、反向代理和用户权限等方法保护起来 #
Web服务技术是分布式计算和GIS中的重要进展,是现代WebGIS的核心。 地理空间Web服务是GIS应用从封闭的系统向开放的、松散耦合的架构转变的推动力, 是建立 地理聚合 应用的组件(见第4章)、云GIS提供服务的一种重要形式, 是下一代空间数据基础设施的基础(见第7章),提供了一种基于地理信息的协同方式。 政府和企业等可以把他们的数据和功能提供成Web服务,建设成一个Web服务生态体系, 在此基础上可以孕育大量的具有新价值的应用, 这种互相协作的形式可以使地理空间领域的投资取得最大化的社会效益。