校园网服务实时访问分析系统的设计
2015-12-02仲玮,吴晋,黄涛
仲 玮, 吴 晋, 黄 涛
(1.哈尔滨工业大学网络与信息中心,哈尔滨 150001;2.哈尔滨工业大学计算机学院,哈尔滨 150001)
0 引 言
随着校园网中网络服务的不断增加和接入设备数量的剧增,对网络服务的访问分析逐渐成为校园网管理机构对网络应用进行开发,重构,设计,发展决策的重要参考手段.一般的网站访问分析系统大多关注于对历史数据的统计分析,网站管理员通过历史分析结果可以看到过去某一时间段的用户访问信息.近年来由于校园网的迅速发展,对网站访问分析的实时性需求也有所提高.校园网管理人员利用实时网站访问分析系统,通过规定的设定步骤,便可以看到网络服务上正在发生的访问情况,访客的来源、地理位置、系统平台,浏览行为等信息.这样的信息在未来可以进行后续的数据挖掘与统计,提供时效性更强,更有价值的结果,帮助校园网管理人员更好的提升网络服务质量[1,2].
1 实时访问分析系统的原理
目前对网络服务访问的实时分析主要有两种实现方式.第一种是服务器日志技术,一般以嵌入式插件的形式植入到网站服务器中.每当网站服务器接收到访客浏览器发起的请求时,访问统计分析进程会将请求信息写入日志系统中,再由后续进程进行实时统计.很多的开源网站分析系统如AWStats、Piwik和Open Web Analytics等都是基于服务器日志技术.
第二种是页面标签技术.通过在网站的每一个网页中嵌入一个定制的追踪脚本,在网站访客打开网站时,追踪脚本动态的在一定的时序控制下收集用户的访问信息.为达到实时分析,追踪脚本在收集数据的同时,定时的将收集结果发送给远端服务器.服务器端则维护着一个缓存数据空间,用来快速接收这些结果并做统计,同时利用实时通讯协议,将结果发送到网站管理人员可见的实时访问分析结果页面.目前较为流行的是采用这一种方式来实现对网站的实时访问分析.
2 基于社交网络的校园信息系统架构总体结构框架
实时网站访问分析系统中的重要组成部分之一是访问数据收集模块.这个模块主要由嵌入在目标网站的各个网页中的追踪脚本实现.当访客打开网站中的一个网页时,追踪脚本在网页渲染完成后自动执行,收集用户的系统信息、浏览器信息,判断新增用户,初始化访客行为追踪任务.在这之后,追踪脚本定时的发送收集结果.
2.1 访问数据的封装与建模
浏览器加载网页的时序直接关系到追踪脚本的执行情况,因为追踪脚本需要为渲染出的网页元素添加监听事件.当浏览器加载网页时,如果遇到JavaScript脚本代码,会先执行代码,而后再渲染这段代码之后的HTML标签.因此,追踪脚本框架应该异步执行,将部分与网页标签相关的任务放置在页面渲染完成后执行.
当访客打开网页后,一个访问对象被创立,访客在同一个域名中不同网页的浏览都算入这次访问.当访客关闭标签页或者浏览器时,标志着这次访问结束.一个独立用户有多次访问,一次访问有多个事件.访问数据大体结构如图1所示.
其中用户、访问、事件都有唯一的ID用于标识.独立的访客人数,访客的多次事件都能够精确统计出来.
2.2 访问数据的采集与存储
访问数据由追踪脚本进行采集.每次采集都分3个步骤.
(1)判断访客类型.如果访客为新访客,为其生成唯一ID信息,如果访客为旧访客,获取其ID信息.获得当前浏览器、系统信息、地理信息,作为访客的身份信息.以上数据存储在脚本对象中,等待提交给服务器.
(2)处理访问对象.如果是新访问,则生成访问ID,如果是一次访问中的后续浏览事件,则获取当前这次的访问对象.访问对象信息存储在脚本对象中,等待提交给服务器.
(3)设置网页元素的追踪事件.为每个事件都标注上所属的访客信息与访问对象信息.开始数据提交.每当事件触发,事件内容都被及时提交给远程收集服务器.
后端访问数据的存储采用缓存——持久存储的策略.对于活跃的访问,追踪脚本会频繁的请求获取存储于缓存中的访问对象以及访客对象,可使用内存数据库如Redis来有效的减少磁盘I/O,提高追踪脚本的执行效率.当活跃访问结束后,访问对象从缓存中存储到持久化数据库中供后续的分析统计[3].
图1 访问数据关系结构
3 实时网站访问分析的技术实现
实时分析意味着支持秒级的分析运算.当有多个网络服务,每个服务上有多个访客时,数据收集服务器需要稳定的接收并响应每一个追踪脚本,保障不丢失请求,不丢失采集到的数据,同时分析进程将会分析当前状态下每个网络服务的访问情况,再及时的推送给管理人员.在系统运行整个过程中,需要选择合理的通信方式完成追踪脚本到数据收集服务器的通信,通过稳定快速的收集策略来应付高并发的数据请求以及实时的分析结果更新.
3.1 实时分析中的通信协议
系统中存在两处通信.其一是追踪脚本到数据收集服务器间的通讯.由于浏览器的跨域访问限制原因,被访问的网络服务与收集服务器不属于同一个域名.在被访问的网站中运行的脚本,浏览器禁止其与其他域名的服务器做HTTP通信.同时,追踪脚本应该尽可能的小,不影响网页的正常加载速度.因此,此处的通信方式最好选择jsonp的请求模式.
Jsonp(JSON with Padding)是资料格式json的一种“使用模式”,可以让网页从别的网域获取资料.Jsonp方法利用HTML中原生的〈script〉标签,构造一个对远程JavaScript文件的请求,同时以一个回调函数作为参数.服务器端响应这个JavaScript脚本的请求,将响应数据传入这个回调函数并返回.返回后的函数在网页端执行,获取内部的响应数据.Jsonp的通信方式较为轻量级,而且可以解决跨域问题.
系统中第二处通信为管理员所使用的分析结果页面与服务器端分析进程间的通信.这里选用WebSocket通信协议.WebSocket的通信方式如图2.
当连接建立完成后,服务器端的分析进程可以主动向浏览器端的分析页面发送实时结果.在具体实施时,需要根据不同网络服务、不同的管理人员,来制定符合规律的WebSocket信道,保证信息被正确的传输.
图2 WebSocket通信方式
3.2 实时分析中的并发控制
在实时网站访问分析系统中,会有大量的连接请求用于数据提交,传统的多线程架构为每一次数据请求都提供一个系统线程,通过系统线程的切换来弥补同步时I/O调用时的时间开销.如果采用同步多线程的方式,系统会进行频繁的上下文切换,浪费很多CPU时间.因此必须控制连接数,这样就降低了并发量.
为了提高访问数据接收服务器的并发能力,可使用全异步形式的编程平台如node.js来实现服务效率的最大化[4].异步编程的好处在于,当程序遇到I/O调用时,无需等待I/O返回即可继续运行之后的代码.而当I/O调用返回时,通过回调函数来处理I/O结果.这种异步的方式,避免了上下文的切换.在执行过程中维护着一个事件队列,程序在执行时进入事件循环等待下一个事件的到来,每个异步式I/O请求完成后会被推送到事件队列,等待处理.两种方式的对比可以参照图3.
图3 同步多线程方式与异步单线程方式的比较
3.3 分析数据的实时更新
网站访问分析系统中的数据流方向比较明确.数据依次从追踪脚本、数据收集服务器进程、缓存数据库、持久化数据库、分析进程、前端分析页面.分析进程利用WebSocket协议与前端分析页面中的JavaScript脚本文件建立全双工连接.当分析结果产出时,立即发送,由JavaScript脚本中的连接对象接收.而在JavaScript脚本中的数据对象,实时显示在前端分析页面上供网络管理人员监控.通过这样的方式,数据最终能够实时的自动更新在前端页面中,达到系统要求.
4 总 结
当校园网服务的访问数量在时间维度上不平均,出现不规律间断性的访问高峰时,实时的网站访问分析技术将发挥巨大价值.除了可采集基本的访客操作系统、浏览器信息、地理位置、ip信息等基础信息外,还准确无误的采集了访客从进入网站开始,到离开网站这一过程中,所有浏览的页面以及浏览顺序,浏览每一个页面时,在网页中发生的交互行为,包括许多鼠标事件.这些实时访问数据较大多数访问分析系统都更全面,使得校园网络服务管理者能够更好的从中挖掘出有价值的信息,合理的通过当前的网络服务的负载来调整计算资源达到有效利用,更好的减小系统成本,提高校园网应用的运行效率.
[1] GONÇALVES B,RAMASCO J J.Human dynamics revealed through web analytics[J].Computing Research Repository,2008.
[2] PETERSON E.Web Analytics Demystified:A Marketer's Guide to Understanding How Your Web Site Affects Your Business[M].Porland:Celilo Group Media,2004.
[3] KOCH D O,GRANT T E.System and method for processing web activity data[J].Google Patents,2010.
[4] ABBANEO D,ABBIENDIi G,ABBRESCIA M,et al.The CMS Collaboration[J].Nuclear Physics A,2009,830(1).