软件工程本科毕业设计论文-百度垂直搜索业务建库统计平台.doc_第1页
软件工程本科毕业设计论文-百度垂直搜索业务建库统计平台.doc_第2页
软件工程本科毕业设计论文-百度垂直搜索业务建库统计平台.doc_第3页
软件工程本科毕业设计论文-百度垂直搜索业务建库统计平台.doc_第4页
软件工程本科毕业设计论文-百度垂直搜索业务建库统计平台.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大连理工大学本科毕业设计(论文)百度垂直搜索业务建库统计平台Baidu Vertical Search Business Database Building Statistics Platform 学 院(系): 软件学院 专 业: 软件工程(日语强化) 学 生 姓 名: 单连斌 学 号: 200892323 指 导 教 师: 评 阅 教 师: 完 成 日 期: 2012.5.20 大连理工大学Dalian University of Technology百度垂直搜索业务建库统计平台摘 要近来,垂直搜索越来越受到互联网行业的商家和媒体关注,垂直搜索的模式与价值被逐步的挖掘,渐渐的显露与清晰。以垂直搜索为入口的更多互联网盈利模式被不断的推出和被越来越多的用户接受并使用。百度、谷歌、360等互联网公司也在垂直搜索领域展开了激烈的竞争。百度垂直搜索产品线主要包括新闻、MP3、图片、视频、地图等搜索业务以及以上各产品线包含的子产品。在百度新的战略计划中,垂直搜索有着更加重要的地位和价值。百度垂直搜索的服务质量也亟待提高与优化。作为产品线中重要的一环,运维工作的高效与准确直接关系着线上服务的稳定与快速。本论文所介绍的项目,能够为垂直搜索产品线中数据层的重要建库业务提供良好的信息采集与归档功能,并支持可视化的Web页面展示。系统能够提供准确的数据支持,为数据增长趋势提供可靠的数据参考,最终为运维工作带来明显的效率提升。系统基于Linux服务器平台实现,为图片搜索、视频搜索、百度地图3条产品线,8个重要建库业务提供关键信息挖掘的工具。系统采用MySQL数据库格式化存储,服务器程序基于Python语言的django框架,Web页面采用JS与CSS语言编写。经过测试和上线实际应用,能够完成项目需求的标准,为百度垂直搜索运维团队后端组提供方便快捷的服务。关键词:垂直搜索;运维自动化;数据可视化- I -百度垂直搜索业务建库统计平台Baidu Vertical Search Business Database Building Statistics PlatformAbstract Recently the field of vertical search attracts attention from the internet companies and medias increasingly. With the excavation being taken gradually, the pattern and business value of vertical search is getting obviously and clearly. So more and more internet profit patterns which based on vertical search have been launched and they are accepted and used by more and more users. Baidu, Google, 360 and many internet companies are also competing hotly in the vertical search field. Baidu vertical search products include news, MP3, images, video, maps and other search services, as well as sub-products of the above products. Vertical search has a more important position and value in Baidus new strategic plan. Baidus vertical search quality needs to be improved and optimized. As an important part of the product line, efficient and accurate operation work has direct relationship between the stable and fast online service. The project described in this paper can support an important data layer library construction business to provide key information collection and archiving for the vertical search product line, also can display the visualization of the Web page. It can provide significant efficiency and accurate data to support automated operation and maintenance work and also provide reliably data for the online data growth trend.The project is based on Linux server platforms and totally mining key information of 8 important database building business in 3 vertical search products include Baidus image search, video search, Baidu Map. It uses MySQL database for a format storage and the Web applications use the django framework based on Python. Now the project is tested by on-line service and it is able to complete the project required standards. The project can provide Baidu vertical search operation maintenance team VSDL group a convenient and efficient service.Key Words:Vertical Search;Automation of Operation and Maintenance;Data Visualization- IV -目 录摘 要IAbstractII引 言11 论文概述21.1 课题背景、意义及目的21.1.1 百度垂直搜索架构31.1.2 课题的背景与意义31.1.3 课题的目的41.2 论文的主要工作42 核心技术介绍52.1 百度Noah运维平台及CT任务调度系统52.1.1 百度Noah运维平台52.1.2 Noah平台CT任务调度系统52.2 Shell脚本62.3 Web开发框架Django62.4 JavaScript与CSS73 系统需求分析83.1 系统总体功能83.2 需求分析93.2.1 系统功能要求93.2.2 系统用例103.3 运行环境113.3.1 硬件要求113.3.2 软件要求124 系统设计与实现134.1 设计的目标134.2 设计遵循的原则134.3 系统架构设计144.4 数据库的设计144.5 功能模块的设计164.5.1 软件模块划分的目的164.5.2 软件模块划分的原则164.5.3 模块划分的概述164.5.4 模块的详细设计与实现195 系统测试335.1 系统测试概述335.2 测试用例设计实例335.3 测试结果分析35结 论37参 考 文 献38致 谢39百度垂直搜索业务建库统计平台引 言对于搜索引擎数据层而言,成功的为前端检索服务建立索引数据是最根本的需求,保证索引数据的完整与可靠是对数据端最根本的要求,在满足基本前提下,能够更快捷、更准确的建立数据,能够预知网页数据量的变化趋势,会给数据层服务带来显著的帮助,最终为检索端提供更优质的数据。相比程序逻辑而言,从服务器于模块运维的层面更加易于提升服务的质量。而这些工作同时也会给运维团队提供方便的工具,和直观的可视化数据。可靠的、经过格式化并归档的数据可以记录阶段内数据层服务的质量,同时也利于工程师预估数据量的变化趋势。目前百度垂直搜索运维工作中缺少一个能够支持以上功能的平台,故对此系统进行如下的设计:(1) 轻量级数据数据获取,使系统能够长期稳定的运行在Linux服务器上,并能够快速的从线上服务器获取最新数据。(2) 采用MySQL数据库,能够对统计的数据进行整理和长期归档,可以阶段性的查看所有历史数据。(3) 支持良好的可扩展性,便于有新的建库统计或新的关键数据需求时快速添加。(4) 实用基于Python语言的Django框架开发Web服务,提供货良好的可视化数据展示,通过Web页面的形式,便于及时快捷的访问。针对以上设计,此论文将重点工作放在一下几个方面:(1) 搭建完整的平台与环境,让所有服务能够稳定长期的运行。系统数据采集实用shell脚本方式,直接从关键建库业务服务器获取最新的数据,安装Python-MySQL,Python-Django的完整服务。(2) 制定良好的数据库存储策略,便于不同产品线和建库业务的格式化存档和查询。(3) 合理的提取参数,完善的配置文件,保证在添加新的需求无需改动代码。(4) 敏捷、高速迭代的Web端开发,使得统计的数据及时上线使用,同时为功能的完善提供可用的模型。 系统的完成、上线、实际应用最终为后端运维工作带来较高的收益,为垂直搜索数据端建库服务KPI的衡量提供准确可靠地数据。注:页码,居中,底部,宋体,小五,正文起始页页码为1。阅后删除此文本框。1 论文概述1.1 课题背景、意义及目的 与通用搜索引擎不同,垂直搜索引擎是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。垂直搜索是相对通用搜索引擎的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。其特点就是“专、精、深”,且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加专注、具体和深入。垂直搜索引擎为用户提供的并不是上百甚至上千万相关网页,而是范围极为缩小、极具针对性的具体信息。因此,特定行业的用户更加青睐垂直搜索引擎,是垂直搜索引擎的长期、稳定的群体。 搜索引擎的出现,整合了众多网站信息,恰恰起到了信息导航的作用。通用搜索引擎就如同互联网第一次出新门户网站一样,大量的信息整合导航,极快的查询,将所有网站上的信息整理在一个平台上供网民使用,于是信息的价值第一次普遍的被众多商家认可,迅速成为互联网中最有价值的领域。互联网的低谷由此演变为第二次高峰。大家熟知的搜索引擎Google、百度等是通用搜索引擎现如今的杰出代表,他们为互联网的发展做出了重要的贡献。然而,搜索引擎行业也不是一家公司就可以独撑天下的,从百度的上市、yahoo中国的并购一系列动作表明,如今的搜索引擎大战如同门户网站初期的竞争一样激烈。相信,通用搜索引擎在经历过一段时间的角逐后,也将会继续维持几大服务商各自控制一部分市场的局面。 垂直搜索引擎概念的提出,就是针对性的为某一特定领域、某一特定人群或某一特定需求提供有一定价值的信息和相关服务。可以简单的说成是搜索引擎领域工业化分工。众多专业性网站、行业网站独立服务于互联网的成功,恰恰证明了互联网的格局应该是多方面的。通用搜索引擎的性质、决定了其不能满足特殊领域、特殊人群的精准化行业服务模式。可以说通用搜索引擎的发展为垂直搜索引擎行业的出现提供了良好的市场空间,势必出现垂直搜索引擎在互联网中占据市场的趋势,也是搜索引擎行业细分化的必然趋势。 随着在线广告市场的不断细分,一大批格局特色的垂直搜索网站应运而生,并一起各种差异化的直达应用,对通用搜索造成了直接的威胁。根据CNNIC的调查结果,2005年,使用百度和谷歌的用户达到总量的90%;而2006年随着垂直搜索的兴起,这一数值下降到87.4%,这还没有计算增量市场。但与此同时,各大搜索引擎也已将垂直搜索列为产品开发的重点。当Google、Yahoo、MSN、百度等开始纷纷推出垂直搜索频道或者开始提供某种垂直搜索服务逐渐成熟时,垂直搜索的竞争更加的激烈。目前,一淘网的电商搜索、360视频搜索的市场介入,标志着国内垂直搜索引擎领域的竞争更加白热。 针对这种局面,百度利根据自身在搜索引擎领域的固有优势,利用网页搜索的超大数据量,以及搜索引擎领域的专利和技术优势,成功的占领国内垂直搜索引擎较多的市场,并结合百度推广的盈利模式,在占有垂直搜索市场的同时,带来了相对可观的收益。目前,百度在垂直搜索主要分为以下几个产品线:新闻、MP3、图片、视频、地图。基于网页搜索的架构,垂直搜索各产品线的大致架构基本相同,但还缺少很多完善的方面,其中,产品线自动化运维工具较通用搜索相比较,无论从数量还是质量,都有较大的差距,论文所叙述的项目,正式为垂直搜索产品线提供一个数据可是化,运维自动化的工具1。1.1.1 百度垂直搜索架构 百度垂直搜索每条产品线的架构各不相同,但整体相同,都是基于网页搜索的通用架构,本节对百度搜索引擎通用架构做简单介绍,从而给出本项目的定位。 搜索引擎整体分为检索端(简称前端),与建库端(简称后端)。检索端主要负责根据用户的请求,利用建库端产出的倒排索引文件作为数据源,做出如判断运营商、检索条目计算权值并排序等响应,最终返回给用户需要的检索结果,检索端包含Web Server(如Apache、Lighttpd等),主要的排序逻辑等模块;建库端则负责从数据库(包含爬虫程序抓取、网页搜索挖取、三方网站提供)中导出互联网网页数据,进行切词、整理字段、筛选、去重、删除屏蔽数据等操作,并对数据进行建立索引过程,最终产出供检索端使用的倒排索引文件。 前后端的配合工作,既能够保证服务的稳定运行,又可以达到独立运行,某一端服务异常不会影响另一端的服务正常运行。在服务运行的过程中,数据调度油中间模块数据中心完成,数据中心与本项目无关联,不在赘述。1.1.2 课题的背景与意义 由于建库端的主要工作是保证索引数据及时,完整的生成,所以建库质量的高低直接关系着整个后端工作是否按照预期成功完成,所以及时的获知建库业务的关键信息,对产品线有着重要的意义,也是评价建库工作完成情况的参照和标准。目前百度自动化运维平台虽然有着很多运维工具,但针对垂直搜索数据端建库业务数据统计的工具还没有完整的工具,该项目则有效的弥补了自动化运维平台在此方面的空白,能够很好的解决后端建库信息收集的问题,对实际工作有着较为重要的意义。1.1.3 课题的目的 项目的主要功能是在后端重要的建库业务(目前包含3条产品线的8个重要建库业务)运行的服务器上获取每一轮建库完成后的关键信息。其中主要包含本轮建库最终产出的索引文件的数据量、建库输出的索引量、建库任务的开始和结束时间以及建库任务的返回值(用于标识建库任务是否成功完成)。 这些信息会以文档存储,并写入MySQL数据库,最终在Web页面上以可视化的图表和表格的形式展现,方便日常队建库任务的维护和检查。并支持查看时间段内所有轮次的建库情况,会为每季度后端任务KPI提供一个可考准确的参照标准。在经过实际使用和测试之后,该系统会整合到目前的自动化运维平台,为其他产品线提供良好的服务。1.2 论文的主要工作 论文所研究的主要目标是完成百度垂直搜索业务建库统计平台的开发。通过对目前产品线后端建库业务的服务器部署情况,关键信息提供方式,所需要的关键数据等信息的调研,并根据目前后端运维工作的需求,详细介绍整个系统的设计与实现,描述项目的成功上线,投入实际使用,最终完成需求中的要求的过程。根据以上叙述,论文完成了以下工作: (1) 第一章:论文概述。主要介绍了课题的背景,目的和意义,以及项目实景应用带来的立意,和未来的发展前景。 (2) 第二章:核心技术介绍。分析本系统的体系设计结构,并对在项目开发过程所用到的核心技术进行了简单介绍。 (3) 第三章:系统需求分析。根据百度垂直搜索业务建库端信息收集的基本需求,与实际工作相集合,完成对项目的总体设计及功能模块的构建工作。 (4) 第四章:系统设计与实现。提出设计目标与原则,对系统进行功能和模块划分,对数据库进行详细设计,详细介绍了本系统的实现过程。 (5) 第五章:系统测试。根据软件工程的测试方法,对系统进行了黑盒测试和白盒测试等分析系统的测试。 (6) 结论:对论文内容简单总结,归纳了百度垂直搜索业务建库统计平台项目开发所带来的收益,和在开发过程中学习到得知识。2 核心技术介绍2.1 百度Noah运维平台及CT任务调度系统2.1.1 百度Noah运维平台 Noah是OP(运维部)统一运维平台的代号,是一系列运维系统的集合,包括监控报警、自动化上线、服务管理、机器管理等,旨在用统一的平台完成各种运维工作。Noah平台为百度运维工作提供了极大的帮助,使得运维工程师从繁琐复杂的运维工作中解脱出来。图2.1是百度Noah自动运维平台的登陆界面,该平台要求员工以合法的身份和密钥登陆。图2.1 百度Noah平台2.1.2 Noah平台CT任务调度系统 任务调度中心(Control Tower,简称CT)是为了解决定时任务之间的前后依赖关系问题二研发的一套分布式调度服务。在CT任务还未开发之前,各产品线之间广泛采用crond来进行定时任务的调度,crond能够准确的在特定的时间启动shell命令,但无法保证不同任务之间的前后依赖关系。常见的采用错开调度时间,甚至预留“足够”的缓冲时间来“保证”这种依赖关系的做法多次出现过。 CT能够在调度层从根本上解决任务之间的依赖关系问题。从2008年1月份上线至今,运行两年多的时间内,系统稳定,并且提供了丰富的外围服务系统(前端界面、文件中转、监控报警和统计报告等)。 论文所介绍的项目会采用Noah平台中CT任务系统,通过建立任务依赖,将垂直搜索数据端建库任务作为上游任务,来调度服务的启动。同时也利用该系统对项目服务的异常进行监控,出现问题及时报警。图2.2所示的既是CT任务平台对任务的管理和调度页面。图2.2 CT任务调度系统2.2 Shell脚本 Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的1。但它比Windows下的批注里更强大,比用其他编程程序编辑的程序效率更高,因为它使用的是Linux/Unix下的命令。Shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,实现命令以及数据流重导流向等功能,以达到我们所想要的处理目的。Shell是一个命令解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的街口系统级程序,用户可以用Shell系统来启动、挂起、停止甚至是编写一些程序2。2.3 Web开发框架Django Django是用Python语言写开源web开发框架,它鼓励快速开发,并遵循MVC设计,遵守BSD版权,初次发布于2005年7月,并于2008年9月发布了第一个正式版本1.03。最新发型版本是Django1.4,本系统所是用的是Django1.3.1。 Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码的复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,甚至可以很方便的开发出自己的工具包,这使得Django具有很强的可扩展性,Django还强调快速开发和DRY(Do Not Repeat Yourself)4。2.4 JavaScript与CSS JavaScript是一种能让网页更加生动活泼的程序是语言,也是目前网页中最容易学习又最方便的语言5。JavaScript是一种动态、弱类型、基于选型的语言,通过浏览器可以直接执行。开发者可以利用JavaScript轻易的做出亲切的欢迎讯息、漂亮的数字钟、有广告的跑马灯以简易的选举,还可以显示浏览器停留的时间,让这些特殊效果提高网页的可观性6。 CSS是英语Cascading Style Sheet(层叠式样式表单)的缩写,他是一种用来表现HTML或XML等文件样式的,能够真正做到网页表现与内容分离的一种样式设计语言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象盒模型的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的变现设计语言7。3 系统需求分析 需求分析是一个项目提出方和承担方相互沟通的过程,一方是系统的使用者,一方是系统的制造者,在系统制造过程中,只有双方相互配合,共同对系统进行设计才能最后达到使用的要求。用户是业务上的熟悉者,对业务流程有非常清晰的了解,但是,对于软件需求方面的描述是非常不了解的,他们所能提供的只是他们最终要达到的功能,但是,这其中包含的业务流程是非常复杂的。因此,需求分析在软件开发过程中,有着举足轻重的地位8。3.1 系统总体功能 百度垂直搜索业务建库平台是一个基于B/S模式的Web在线系统。针对运维所需要对产品线建库情况的了解,系统所要提供的信息应该包含每一轮建库过程完成后的关键信息,例如建库任务是否成功退出、本轮建库的索引量(索引量是建库完成情况的重要指标)、建库输出的倒排索引文件的数据量、建库任务的开始以及结束时间等。系统还需要对某一阶段内所有建库信息的统计和展示,例如任何一周、月、季度内建库任务共完成的轮次,以及其中成功和失败的情况,索引量和数据量的增长趋势。对于这些信息的来源,既线上建库服务器而言,不能因为本项目的添加而对原有的服务造成影响,更不能因为新的项目出现异常而使得建库业务被中断,影响线上服务质量。因此,有理由把百度垂直搜索业务建库平台分为两大部分。 (1) 数据挖掘与归档存储 建库统计平台所统计的重要信息全部都是从3条产品线中8个建库业务所涉及的11台建库服务器上获取,需要一台中控机来运行百度垂直搜索业务建库平台,对数据进行收集、整理、存储和展示。而目前各产品线所给出的统计信息无论是格式还是字段都不相同,因此需要在建库业务机器上部署信息统计模块,来对于每个建库业务生成的数据进行收集,暂时存储在临时文件中。中控机器会从各个建库机器上收集已经包含所有信息的统计文件,进行统一的格式化存储和写入数据库。数据挖掘与归档存储的功能结构图3.1如下所示,模块整体分为两个部分,分别是数据挖掘与数据归档模块。其中,数据挖掘又有三个子模块,数据字段处理模块的主要功能是对建库数据文件进行字段分割与处理,以标准的格式写入临时文件中。临时文件处理模块主要功能是对数据字段处理后输出的临时文件进行解析,获取各字段的数值备用。格式化归档模块则负责将已经得到的字段写入归档文件中,按照建库轮次编号保存归档,以便工作使用查看。数据库存储模块有两个子模块,分别是格式化数据文件与MySQL数据库存储模块,最终完成数据写入MySQL数据库中,为前端Web页面展示提供数据源。图3.1 数据挖掘与存储归档功能结构图 (2) Web页面展示模块 项目支持以图表的形式对建库个数进行可视化的展示,同时也支持以表格的形式对详细的每一轮建库信息的数据进行罗列。Web展示采取基于Python语言的Django框架开发完成,便于日后的维护和更新。 目前百度垂直搜索业务建库统计平台所统计的建库情况和所属产品线如下: 百度图片:4个建库业务,分别是空间月库、空间日库、贴吧月库、新浪定向库。 百度视频:2个建库业务,分别是视频大库、时效性库。 百度地图:2个建库业务,分别是检索建库、基站定位建库。3.2 需求分析3.2.1 系统功能要求 如前所述,本论文所介绍的百度垂直搜索业务建库平台是一个方便垂直搜索数据端运维工作的系统。通过对现有工具的分析,以及对工作需要的调研,确定了百度垂直搜索业务建库统计平台的基本功能需求。 数据挖掘:系统能够统计3条产品线中的8个重要建库业务所包含的11台服务器获取建库工作的关键字段,如索引量、数据量、任务开始与结束时间、任务返回值等。并且能够有良好的可扩展性,方便在未来的工作中有新的统计需求时快速添加到统计平台中来。 数据库存储:能够将所有获取和整理的统计信息以统一的格式写入MySQL数据库中,以便于使用任何语言和框架开发的Web端展示,并提供长期数据统计的基础,为以后添加数据量变化趋势等功能提供可用数据。数据库要求有主库与从库,保证数据读写的速度和数据的一致性和完整性。 任务启停:系统要有合理的启动方式。按照目前的需求,系统要在各建库业务任务完毕后启动,收集本次建库任务的关键信息,这就要求统计平台与线上建库任务有着可靠地任依赖关系,同时又要保证本项目不会对原有的建库任务造成任何的影响。 Web展示:系统能够提供良好的数据可视化展示,以表格和图表两种方式提供用户查询的时间段内的所有轮次建库信息情况。用户指定想要查看的产品线下的某一个建库任务,然后选择时间段,提交之后页面会展示已选时间段内的所有建库情况,并以图表的方式给出可视化的信息,便于了解数据量、建库时长、索引量的变化趋势。3.2.2 系统用例图3.2 百度垂直搜索业务建库统计平台用例图 百度垂直搜索业务建库统计平台是面向用户,既垂直搜索数据端运维工程师的系统,故用例只有用户层面,用户的用例定义:(1) 查询指定建库信息。用户选择产品线以及其下的建库业务,选择查询起始时间与结束时间,即可查询到这段时间内建库任务的完成情况和关键信息。 (2) 插入、删除、修改建库信息。为了避免手动建库情况下统计的疏漏,用户使用项目预留的API接口,执行Shell脚本向数据库插入、删除、修改某一轮次建库的信息。(3) 添加新的统计需求。用户按照要求的格式添加新的配置文件,即可将新的建库业务统计需求添加到百度垂直搜索业务建库统计平台中。 图3.2是百度垂直搜索业务建库统计平台用户的用例图。系统的功能比较简单,但对于数据的可靠性和及时性比较严格,用户能够使用的用例并不多,只有上述的三个。3.3 运行环境3.3.1 硬件要求 由于本系统在运行过程中需要以Web页面展示所有建库业务的信息,并且要求对数据库有主从机器冗余,故平台使用机器以及其配置如下: (1) 中控服务器1台。目前使用Image产品线线上工具平台服务器这台服务器。该服务器硬件信息如下:2颗INTEL Nehalem E5520主频2.26GHz的CPU、4条DELL PC3-8500 4GB内存、6块DELL SAS 300G转速10000硬盘。 (2) 数据收集整理服务器1台。目前使用Video产品线中控机(产品线中控机拥有该产品线所有机器的信任关系)这台服务器。该服务器硬件信息如下:2颗Xeon E5150主频2.66GHz的CPU、8条HP P2-5300 2GB内存、8块HP SAS 146G转速10000硬盘。 (3) 数据库主库目前使用统计平台中控机上自己安装的MySQL数据库,从库使用DBA部门提供的服务器和tc-dba-video-even00.tc服务器。由于是DBA部门管理的机器,没有足够的权限查看具体信息,但对项目的工作无任何影响。文中不做赘述。 (4) 各产品线数据端任务运行服务器由于数量较多,并只部署了一个数据获取的任务模块,故不在罗列。 以上提到的服务器名称中tc代表土城机房服务器,yf代表永丰机房服务器,都属于百度服务器运营商,跨机房的数据库冗余,能够完全保证数据的安全性和完整性。所有涉及的服务器均采用RAID5逻辑磁盘冗余阵列,可以容忍一块硬盘的损坏,只要及时修复,就不会造成数据的丢失。3.3.2 软件要求 本系统中,Web服务器直接部署在项目中控机chunyu机器上,Web Server采用通用的Lighttpd和Apache两种,均可用于线上服务,Web Server的安装和部署均为自己手动完成。 Web框架采用Django框架,该框架便于快速的Web开发,同样是一个轻量级的基于Python语言的框架9。 数据库采用MySQL数据库,该数据库的安装和部署是中控机上已有的软件,故无需再次安装。 Python2.6.8,中控机上原有Python2.3,但在实际开发中发现Django框架不支持Python2.3,故自行下载Python2.6在Linux下的安装包,手动升级并配置。 Python-MySQL工具包,用于Django的MySQL支持,安装过程需要用到python-setuptool工具,故下载安装了Python2.6版本的setuptool工具。 Shell脚本程序,百度垂直搜索业务建库统计平台后端数据获取阶段均采用中控机Shell脚本方式完成10。 Gnuplot图表绘制工具,使用Python脚本语言直接调用该工具包绘制Web页面中的图表。 Noah平台CT任务日志获取工具,使用了组内工程师自行开发的获取日志工具,用于获取任务完成的相关信息。 Noah平台CT任务bscp工具,用于数据注册,合理启动获取数据的进程。 客户端由于使用浏览器访问,故需要支持JS和CSS的浏览器11。4 系统设计与实现4.1 设计的目标 根据目前垂直搜索数据端运维工作的实际需求,结合产品线建库业务的工作情况,以下是项目设计的目标: (1) 保证数据的准确性、安全性、可靠性和可用性。 (2) 数据的及时更新、能够在第一时间获取最新一轮的建库统计信息。 (3) 合理的数据库存储格式,会数据库表的格式和存储方式有合理的设计。 (4) 方便的页面操作,能够以最简单的操作查询想要获取的信息,简介的用户体验。 (5) 良好的可扩展性,对于新的产品线、建库业务、统计字段需求,能够快速便捷的添加和支持。 (6) 快速的迭代,在项目后续的完善和升级过程中,能够快速迭代,在最短时间内上线服务,升级和更新可以在项目的二期和三期完成。4.2 设计遵循的原则 一个成型的系统应该具有可靠性、灵活性,功能上应该完整、安全且可扩充,因此在设计时遵循以下原则: (1) 采用熟知的技术,熟悉的算法来实现。采用Browser/Server模式,使系统运行更稳定;完善系统维护,保证小范围的功能产生变化时对系统只有较小的影响;合理,简洁的数据库设计,保证高效灵活的数据检索的同时尽可能使数据冗余量降低。 (2) 充分满足当前用户的需求,同时着眼于将来,为系统的扩充留有余地。使用友好的人机交互界面,使用户操作简单容易。通过清晰的模块划分使用户很容易在系统中找到要实现的功能。 (3) 考虑此系统与其他系统之间的联系,以增大其灵活性,给其他可能新增的模块留下接口,以便实现功能的扩充。 (4) 按部就班地从概要设计到详细设计再到代码实现期间,做到有理有据。并在开发过程中充分考虑到安全可靠性,系统采用MySQL数据库系统,数据处理速度快,且安全保密性能高。 (5) 要有足够的测试,方便用户使用,也方便对程序的管理,不仅要实现项目的基本需求,还要提高系统的整体人性化水平12。4.3 系统架构设计百度垂直搜索建库业务统计平台是一个线上实际应用的系统,该系统能够为运维的日常工作带来较大的收益。同时,系统对实时性、准确性、可靠性有着较为严格的要求。系统与百度垂直搜索建库业务有着密不可分的联系,但又不能对线上的业务有任何负面的影响。实时性要求系统能够在建库业务完成后最快速的启动,进行统计,以免数据发生改变,影响准确性。可靠性要求数据库有着完善的备份和同步机制,避免数据库服务器或硬件的故障造成任何影响13。基于以上的要求,系统的架构如图4.1所示:图4.1 系统架构图4.4 数据库的设计数据库是按照数据结构来组织、存数的管理数据的仓库。为了保证数据的安全可靠性,数据表结构的设计按照每个建库业务对应一张数据库表的设计,目前项目共有8张表,每张表包含以下字段: ObjNum(索引量),DataNum(数据量),StartTime(其实时间),EndTime(结束时间),CostTime(耗时时长),ReturnValue(建库任务返回值)。目前各建库业务之间没有相互的关联关系,所以数据库表之间相互独立。每张表的字段信息、数据类型等全部相同。这种设计更加方便对数据库表的添加和修改。系统提供了数据库表的建立和修改的工具,用户可以使用该工具对所有建库统计对应的数据库表的格式、内容做出快速的修改。 表4.1是系统数据库表的结构:表4.1 建库信息表字段名称字段类型主键默认值允许为空否字段说明ObjNumbigint(20)否NULL是索引量DataNumint(11)否NULL是数据量StartTimetimestamp否0000-00-00 00:00:00否开始时间EndTimetimestamp否当前时间否结束时间CostTimeint(11)否0是耗时RetunValueint(11)否NULL是返回值 系统使用自动建表脚本一次性将目前所有建库业务对应的数据库表自动生成,便于系统在迁移时快速完成环境搭建,也方便系统的扩展和推广。目前中控机上数据库表内容如图4.2所示:图4.2 数据库字段信息 为了保证数据库的安全性,数据库使用1主2从的物理结构,写入过程直接写入主数据库,读取会从从库中读取数据,提高读写效率,MySQL自动同步策略保证了数据的一致性。主从数据库自动同步策略有百度内部DBA部门管理,本论文中不再对该部分做论述。4.5 功能模块的设计4.5.1 软件模块划分的目的 模块分析是描述系统需求的一个过程,他是将需求分析中产生的感性描述进行抽象画,提取出要实现的功能,他是整个系统开发的一个关键环节。分析的根本目的是在开发者和剔骨需求的用户之间建立一种理解和沟通的桥梁。因此,模块分析对于开发项目而言,有着明确的目的:(1) 是程序实现的逻辑思路更加清晰,可读性增强。(2) 模块与模块之间有一定的独立性,使模块内功能更加明确,容易控制。(3) 可充分利用重用的代码。(4) 抽象出可公用的模块,可维护性强,保证了软件有很好的扩展性。(5) 系统运行时可以选择不同的流程14。4.5.2 软件模块划分的原则 在分析过程中,系统功能模块的划分应遵循以下的原则:(1) 功能独立性原则 系统功能模块的划分必须使得各模块内部的功能、信息资源等各方面有很好的独立性。在实际应用中每个模块更能相对独立,尽量减少不必要的数据调用关系。应将联系比较密切,功能相近的模块集中管理,这样使以后的搜索、查询、调用、和调试都比较方便。(2) 结构独立性原则 模块之间联系尽量少,用简单、明确的街口。一个系统如果内部联系较强,则其对外部的联系必然会少,因此划分是应将脸较多的划入同一模块中,以保证安全性和便于维护。(3) 结构可扩展原则 事物是不断进行发展的,特种设备安全的管理过程也不例外,因此,为了今后进一步扩展业务的需要,划分模块时一定要充分考虑系统的发展15。4.5.3 模块划分的概述按照系统工作流程划分,百度垂直搜索业务建库统计平台整体共可划分为四大模块,包括后端与前端。后端的主要工作是对统计信息的获取和解析等处理,前端的主要工作为处理用户的请求和读取书库库中的信息。百度垂直搜索业务建库统计平台的模块划分如表4.2所示:表4.2 系统模块划分模块划分部署机器主要的功能数据统计线上建库业务服务器根据建库任务获取数据数据解析统计平台中控机解析临时数据文件中的字段数据库存储统计平台中控机与DBA数据库格式化存储字段Web页面展示统计平台中控机读取数据库,展示信息 以下是对每个模块进行详细的叙述:(1) 概述: 数据统计模块:系统所有信息的来源,其中部分建库业务在任务完成后已经输出数据文件,故无需再次部署。对于没有输出数据文件或输出信息格式不统一的建库任务,需要在建库任务执行的服务器上部署该模块,对每一轮建库完成后输出的关键信息进行整理,在固定的目录下以临时文件的形式记录,为建库平台提供数据源。图4.3 页面设计风格 数据解析模块:当数据获取模块整理并保存了数据信息临时文件后,中控机会登陆到线上建库服务器拷贝该文件至本地,对文件的内容进行解析,计算,最终按照建库业务的划分以统一的格式写入临时文件中。 数据库存储模块:由于系统的需求和设计,数据库存储需要写入主数据库,既安装在本地的MySQL数据库,主从同步的工作由DBA部门提供的代理接口自动完成。该模块主要功能是解析已生成的数据信息临时文件,将文件中的条目分字段合并成实体,写入主数据库中16。 Web页面展示模块:该模块根据用户的请求信息从数据库从库中读取符合条件的所有数据条目,经过制表、绘图,最终以网页的形式展示给用户。(2) 系统中页面设计风格:主题页面风格设计如图4.3所示: 图4.4 项目详细设计页面 针对图4.3的设计,对页面进行了详细的规划,如图4.4,其中左侧的Selection是用于用户选择想要查看的产品线以及产品线下的建库业务,对于这种特殊的结构,决定采用树形结构,将建库业务作为叶子节点挂在产品线之下;右侧上方的Settings部分作为参数设置,由用户选择起始时间和结束时间,并以此为参数,从数据库中获取在此时间段之内的所有建库信息,故采用了两处DateTime控件,并提供了较为常用的天、周、月快捷选项;Form/Chart部分则是用于展示数据表格和可视化图表,出对对页面简洁和易读的考虑,此处采用了Tab也得方式分别展示图表和表格,这样会使得图表和表格拥有足够的页面空间,同时也保证了用户查看的方便。 本系统采用的JavaScript和CSS来实现以上页面设计,除主题页面外,对图表展现部分,采用内嵌页面的方式完成。使用jquery.treeview控件完成页面左侧的树形结构,采用css完成右侧的Tab栏。4.5.4 模块的详细设计与实现图4.5是项目中控机上目录结构:图4.5 模块目录结构 如图4.5所示,VSDL_build_stat目录为数据挖掘模块工程主目录,其下包含bin、shell、stat_conf、log、tmp、djcode、pages目录。 其中,bin目录下是CT任务日志获取工具,包含get_tc_info.pl、chunyu_noah_token.key、create_db_table.sh三个文件。get_ct_info.pl工具为第三方工具,由Noah平台提供的API,用于获取建库任务日志。chunyu_noah_token.key文件中为获取日志时所需要的权限密钥,该密钥需要从Noah平台中申请,为了便于使用,将其以文件保存。create_db_table.sh是为了数据库建表方便开发的建表工具,支持对多张数据库表同时建立,以标准的格式一次建立所有产品线建库任务对应的数据库表。 shell目录下是所有数据挖掘模块设计的Shell脚本,主要包含build_stat.sh(模块总控脚本)、data_to_db.sh(数据库写入脚本)、get_data.sh(数据获取与解析脚本)。 stat_conf目录下是对建库业务的配置文件,系统采用每个建库任务对应一个配置文件,便于对新的建库统计需求的添加支持,同时也可以满足对具有多台服务器的建库业务进行统一统计。目前包含以下8个配置文件:img_drbuild.conf(百度图片新浪定向库)、img_spaceAll.conf(百度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论