一、新闻云架构
新闻云平台包括基础设施、管理平台、虚拟化、新闻应用四个子平台(见图1)。基础设施平台主要包括计算、存储、网络等设备,是云平台的硬件支持系统。通过对基础设施平台的扩展,可进一步提高平台承载能力,同时支持网络热备、负载均衡、异构系统集成等关键技术研究。虚拟化平台主要通过虚拟化技术屏蔽底层的硬件差异,实现对计算和存储、网络和软件、数据和用户等资源的高效部署和管理,为用户使用提供稳定、良好的运行环境。通过虚拟化平台的建设,将进一步提高平台的整体运维能力,同时支持虚拟化、并行计算、分布式存储等关键技术的研究。云计算管理平台实现对所有资源的集中管理、监控和调度,同时提供完整的用户计算资源申请、审批、调配的服务流程管理。云平台通过虚拟机方式提供新闻浏览、查询、收藏、订阅和信息门户等服务。
二、新闻云服务
云端服务为客户端提供各种应用服务,能够充分和多样化地满足用户的需求,该应用服务包含浏览、查询、收藏和订阅四个选项标签(见图2)。(一)浏览用户在登陆云端的虚拟平台之后可以按照自己的意愿和爱好来实时浏览和阅读新闻事件。阅读内容包含摘要、重大新闻、热图、视频、头条、音频和报种等。(1)报种:用户可以随意阅读诸如《重庆日报》、《重庆晚报》、《重庆晨报》等不同的报纸;(2)摘要:用户选择摘要浏览,目录服务器返回摘要列表,以供用户选择自己实际想要的摘要作为阅读内容;(3)重大新闻:用户申请重大新闻浏览服务,目录服务器会返回带有星级标识的重大新闻列表,重大新闻标识可由一星到五星分别用来表示新闻的重要性;(4)热图:根据用户的请求,服务器返回与用户输入的关键词有关的并且是当下搜索最为频繁的图片,由于所有的图片并非一定是用户实际搜索想要的,也考虑到服务器的响应速度和负载,所以此时返回缩略图,用户可以选择自己感兴趣的图片进而看到原图;(5)视频:根据用户的请求,服务器返回用户搜索的视频列表,有两种类型以供用户选择:普通画质和高清画质;(6)音频:根据用户的请求,服务器返回按照用户输入的关键词排序的音频列表,有两种类型以供用户选择:普通音质和高音质;(7)头条:根据用户输入的关键词,服务器将对新闻列表进行排序,随后返回对应的头条新闻列表。(二)查询除了实时阅读之外,用户还可以按照自己感兴趣的内容进行选择性查看。用户可以按照八个关键词形成的三种模式进行查询。三种模式为资源列表、形成文档和联合模式。八个关键词分别是时间、地点、人物、事件、类型、摘要、标签和连接符。(1)时间:用户可以按照事件发生的时间进行搜索;(2)地点:用户可以按照事件发生的地点查询;(3)人物:事件中涉及的主要人物;(4)事件:事件的总体概括;(5)类型:用户搜索的新闻媒体类型;(6)摘要:用户可以按照自己的需要查询摘要中的有关信息;(7)标签:用户查询时可以使用标签作为查询关键词,标签有五种,分别对应不同的重要等级的新闻;(8)连接符:连接同一新闻事件中不同新闻媒体的符号,允许用户搜索与当前查看内容为同一新闻事件的不同媒体类型。(三)收藏根据不同用户的需要,云服务向用户提供收藏服务。在该服务中,允许用户收藏前次浏览或者查询过程中标记过的书签和关键字,同时,系统会自动保存用户的浏览习惯,并借此自动设置用户的偏好。(四)订阅可以根据用户的不同需求,提供不同的订阅服务。订阅服务有三种类型:订阅摘要、订阅详细内容和自定义订阅。
三、数据分析处理及存储
当需要处理的数据来到数据处理中心,需要对其进行三个步骤的处理(见图3)。首先,对数据进行预处理;其次,对数据所包含的同质以及异质新闻进行处理;最后,建立索引表并分配给服务器存储。(一)预处理在数据的预处理过程中,首先对数据进行格式标准化。所谓格式标准化就是将各种格式的数据转换为标准格式;然后再搜索敏感关键字,对于多次出现敏感关键字的新闻数据进行清理,删除错误的、负面的、不科学和不真实的数据。(二)同质新闻事件和异质新闻事件的处理对数据是否为同一新闻事件进行判断并处理,其过程如下:首先将预处理完成的数据进行内容比对,设定相异阈值M,内容相似度低于M的,则判定数据不是同一事件,然后对其建立索引并分布存储;设定相容阈值N,若不同数据之间相似度高于N,则判定数据重复,删除其中一个,只保留另外一个,将所有数据进行判定之后,进入下一步,建立索引。(三)建立索引并分布存储为上一步处理的所有数据建立索引,将所有数据的索引形成索引表存放在目录服务器中,用户向目录服务器递交服务申请,由目录服务器负责返回服务申请和数据地址映射。数据索引以特征字符串的形式组织和排序,在目录服务器形成索引表。特征字符串(其中数字为特征项长度,没有单位标识的,默认单位为字节)的格式如图4所示。特征字符串格式说明:在字符串中,每个字符都有每个字符的含义,具体内容如下:(1)时间:长度为8字节,格式为:yyyymmdd,年份4位,月份2位,日期2位;(2)地点:长度为20字节,每2个字节为一个汉字,若地点字数不足10字,则剩余字节加注结束标志;(3)人物:长度为10字节,每2个字节为一个汉字,若姓名字数不足5字,则剩余字节加注结束标志;4)事件:长度为20字节,每2个字节为一个汉字,若事件字数不足10字,则剩余字节加注结束标志;(5)摘要头:长度为1位,若为0则表示此项不是摘要头,为1则表示是摘要头;(6)正文头:长度为1位,若为0则表示此项不是正文头,为1则表示是正文头,摘要头和正文头不能相同;(7)连接符:长度为4字节,连接符表示是否有数据与当前数据关系相连(即陈述的是同一新闻事件),相同新闻事件的不同媒体之间的连接符相同;(8)标签:表示当前新闻事件的重要程度,分为5个等级;(9)校验位:长度为1位,用以校验特征字符串。将所有条目的特征字符串整合、排序并映射到主机地址和存储路径,形成索引表,存放在目录服务器,以便管理和用户查询(见表1)。
四、文件存储格式
考虑到新闻媒体的多样化,对各种媒体确定唯一存储格式并作为标准格式,以便于存储和管理维护,如图5所示。(一)视频为了便于用户观看,保证视频资源的流畅,采用后缀为flv的流媒体格式。为了满足不同用户的需求,视频分为一般画质和高清画质。(二)音频为了方便用户,同时考虑到存储空间的大小,采用后缀为mp3的压缩格式,分为一般音质和高音质。(三)图片在所有图片格式中,jpg格式图片在同等画质下压缩比更高、体积更小,便于网络传输,其广泛支持Internet标准的特性也使得它脱颖而出。(四)文本文本包括摘要、正文、头条和评论等内容。因为在用户界面会有格式描述符,所以在存储时就没有必要加入更多的格式,所以采用txt格式的记事本文件可以最大限度地节约空间和加快传输速度。
五、系统测试
(一)新闻云手机客户端测试该新闻客户端是用Android编写的一个可以与云端进行数据交互、提供实时更新新闻的一个新闻客户端[4]。客户端跟服务器的通信主要是依据Http协议,它详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议[5]。本新闻客户端引用A-pache公司提供的用于客户端与服务器通信的Ht-tp封装包。所使用的Android控件主要有Activi-ty,ListView,Button,EditView等。UI设计工具使用了Photoshop、Droiddraw等工具。手机客户端构架如图6所示。Http定义了与服务器交互的不同方法,最基本的方法有四种,分别是get,post,put和delete。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而Http中的get,post,put,delete就对应着这个资源的查、改、增、删四个操作。本客户端使用了HttpGet和HttpPost两种和服务器通信的方法。HttpGet用于客户端不需要向服务器传送数据,而是直接取得服务器端的数据,比如说打开新闻客户端软件,服务器直接把最近的热点新闻推送到客户端。Http-Post用于客户端向服务器提交数据,服务器接受并根据客户端提交的数据返回相应数据到客户端。数据编码统一采用GBK编码。服务器是用的虚拟在PC机上的Apache服务器,客户端每一个种类的新闻请求对应在服务器上就有一个被发布的Servlet。服务器从数据库取到相应的数据后把数据拼凑成类似Json格式,通过HttpServle类的方法把数据以字符串的格式传输到客户端[6]。客户端在接收到服务器传输过来的字符串后,通过生成JsonObject数据的方法把字符串转换为Json格式的数据。Json格式数据如下所示:{“title”:张无忌,“time”:2014-03-27,“con-tent”:谴责昆明暴力事件实施者},客户端通过取得title,time,content三个标签就可以获得它们所对应的数据。基于对项目优化的考虑,本新闻客户端的所有图片均使用外链图片,服务器只需传送图片的URL到客户端,客户端根据URL通过Http协议从网络上下载图片,首先以字节的形式保存在数组中,然后通过BitmapFactory的DecodeByteArray方法将字节数据转换为Bitmap格式的数据,Bitmap格式的数据可以直接以图片的方式显示在An-droid界面上。UI设计[7]小组把新闻客户端的背景图片完全设计好后,主界面使用TextView显示导航,导航可包括娱乐、汽车、女性、政治、财经、房产、游戏、科技和军事等内容。由于手机屏幕的限制,本客户端使用HorizontalScrollView类实现可左右滑动导航,使用ListView显示新闻,ButtonView实现屏幕下方的各个按钮等。其主界面如图7所示。点击新闻列表中的某一条新闻,就可显示该新闻的详细内容。在主界面点击放大镜样式的图标即可跳转到搜索界面,将想要搜索的内容上传到云端,云端将相对应的新闻返回并显示到手机客户端上。例如:在搜索框里输入cloudcompu-ting,然后点击搜索,就会显示出云端与cloudcom-puting相关的新闻。运行截图如图8所示。(二)客户机测试使用Hadoop云计算平台[8],Hadoop包括两大核心,即分布式存储系统和分布式计算系统。其中分布式存储系统采用HDFS进行存储,HDFS是Hadoop的存储云。主节点运行文件管理进程(namenode),从节点实现文件存储进程(datanode)。而分布式计算系统采用MapReduce进行计算。MapReduce是Hao-doop的计算云,主节点运行任务管理进程(jobtrack-er),从节点运行任务执行进程(tasktracker)。新闻云测试平台使用三台PC搭建Hadoop环境,详细内容如表2所示。MySQL是轻量级数据库,因为存储空间有限,所以对大数据的处理能力十分有限,就算是Oracle等世界顶尖级数据库公司也力不从心,Hadoop应运而生,以价格优势以及超强的数据库能力成为下一代数据库解决方案。Hive是建立在Hadoop上的数据仓库基础构架[9]。Hive提供SQL解析引擎,它将SQL语句转译成MapReduce,然后在Hadoop上执行。Hive的表其实就是HDFS的目录,按表名把文件夹分开。Hive将元数据存储在数据库中,目前只支持Mysql和Derby。在Hive环境下建立数据库并建表,与轻量级数据库字段相对应。通过Java程序将Mysql表中数据导出后上传到Hadoop的Hive数据库指定表的目录下,就将此表导入到了刚才建立的数据库中,对Hive执行查询并将结果保存到本地。这样就将轻量级数据库的表信息通过Hadoop处理并保存到了本地。在数据处理部分可以进行例如舆情分析、数据清洗等工作。针对传统机器内存的限制和如今数据量不断增大的问题,这种云架构打破了传统的物理机瓶颈,只要增加廉价的运算节点就可以不断提高整个Hadoop架构的处理能力。整个浏览系统采用了J2EE的标准,使用了Browser/Server架构,简化且规范了应用系统的开发与部署。前台的页面用Jsp完成,页面设计用div+css+javascript的设计方式;后台在Java环境下完成,使用Servlet和Javabean结构。用户在浏览器中输出信息,提交表单,确认提交后,form表单将数据通过Http协议传递给Tomcat服务器中发布的Web项目,即Url中指定的Servlet。Tomcat容器将接收的表单数据交给Servlet,再由Servlet处理。Servlet调用相应的处理类验证用户信息,处理类操作数据库返回验证信息,若验证成功Servlet将验证查询数据库,并将生成的Jsp通过Ht-tp返回给客户端浏览器,图9为新闻云页面。
六、结论
本文设计了一个基于云计算的新闻云平台,该平台包括基础设施、管理平台、虚拟化、新闻应用四个子平台,为客户端提供浏览、查询、收藏和订阅等基本功能服务。对新闻数据进行三个步骤的处理,即对数据进行预处理,对数据所包含的同质以及异质新闻进行处理和建立索引表,分配给服务器存储。考虑到新闻媒体的多样化,对各种不同媒体,确定唯一存储格式作为标准格式,以便于存储和管理维护。为验证方案的有效性,搭建了基于Hadoop的云平台,其中分布式存储系统采用HDFS进行存储,分布式计算系统采用MapRe-duce进行计算,使用Hive提供SQL解析引擎,将SQL语句转译成MapReduce,然后在Hadoop上执行,完成海量数据的检索。同时设计了基于PC机和Android移动终端的新闻云客户端。
作者:尚凤军 谈娅 单位:重庆邮电大学计算机科学与技术学院 重庆邮电大学 马克思主义学院