酒店搜索的动态数据建库研究软件工程_第1页
酒店搜索的动态数据建库研究软件工程_第2页
酒店搜索的动态数据建库研究软件工程_第3页
酒店搜索的动态数据建库研究软件工程_第4页
酒店搜索的动态数据建库研究软件工程_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

,所以本系统能够正常、快速、及时地从各个数据库和http接口拉取数据、组织成protocolbuffer数据格式至关重要。该系统利用c++多线程、protocolbuffer等技术对酒店搜索使:酒店搜索;搜索引擎;protocolbuffer:WiththeadventoftheInternetera,moreandmorepeoplebegantouseoftheInternetandrelyontheInternet,becauseitisfaster,moreconvenient,moretosaveresources.Beforehoisbookedbyephone,ortothehofor,andnowmostofpeoplebookhoontheInternet,thelatterismoreconvenient,informationismoreandmoreabundant.AndthearrivalofInternetacceleratedtheprocess,makingtheusersthroughtheInternettomakeaho hasexceededthelinebookinguserespecially.Withmoreandmoreusersandon-linehotymoreandmore,thecorrectness,stability,speedofho searchwillbechallenged.HosearchandBaidusearchengineisdifferent,eachhavedifferentcharacteristics,theBaidusearchissearch,paymoreattentiontothebreadth;andtheho searchpaymoreattentiontothedepth,itisverticalsearch,weshouldpayattentiontomoredetails,dataandmoreprecise.Andthissystemisthedatasourcemoduleofthesearchmodule,alldataofthesearchmoduleisfromthissystem,sothesystemcannormal,fastandtimelyfromeachdatabaseandHTTPinterfacepullfetchingdata,organizedintotheprotocolbufferdataformatisveryimportant.ThesystemusingC++multi-threaded,protocolbuffertechnologytomanagethedataofho searchmodule. Searchmoduledeploymentondifferentserverusedwiththesameraw-index,andthesystemdividesdataintotwoparts,oneisthereal-timerequirementsofhighandtheotheristhereal-timerequirementisnothigh.Highrequirementofreal-timedataupdatedeveryminute,real-timerequirementisnothigh,updatedeveryhour.Thelastthissystemcan beabletofast,stable,real-timedataacquisition,toprovideaunifieddataforeachsearchmodule,soastoensureallsearchmoduleonthesamesearchrequestsgivingthesamesearchresult. hosearch;searchengine;protocolbuffer概 背景意 PROTOCOLBUFFER简 系统目 系统概 运行环 总控模 ..............................................................26 结 致谢 参考文 正常、快速、及时地从各个数据库和http接口拉取数据、组织成protocolbuffer、入互联网例如台式机手提电脑平板等等同时互联网的快速发展、、个大趋势下,酒店预订没有任何理由不被搬到互联网上。目前有很多酒店预酒店预订服务商都在尽可能的优化自己酒店搜索系统的每一个环节其中酒店搜索的动态数据建库模块是非常重要的一个模块因为它是模块——搜索因为如果要保证数据的实时性,只能不停的全部的数据库中所有的数据,并http40GB5raw-index系统需求分c++linux程序开发等,采用多线程能够加快数据的处理速度,处理40GB的数据可经济可行性:该系统的开发使用的软件都是开源的,不需要任何软件以保证搜索系统使用的信息,使得线上不会出现这种情况,例如:订购了一数小时(例如13:00、15:00)开始时开始做全量(大概20分钟做完全量以后是直到下一个偶数整点为止,奇数小时开始提供服务(例如是13:00开始拉取的14:00,15:00。拉取数据的格式要求需要将拉取的数据以protocolbuffer文件的格式保存起来,便于搜索模块拉取数据后进行数据的。文件的压缩可以通过配置文件选择是否对最后生成的protocolbuffer文件进行压缩,由于搜索模块从该系统拉取数据使用的是scp命令,压缩以后数据的大小会变小,这样scp命令拉取数据的时间会变少,增加了程序的整个系统的12:35索的数据建库系统)和一组ds(酒店产品搜索模块)将进行服务,该组ds被部署在不同的服务器上,如果不进行分片,那么每个部署ds的服务器都需要拉取所有的数据,并将这些数据加载到内存,所以数据量较大的话,内存会被,如果进行分片就可以克制这种问题这里使用的分片规则是酒店是有id的,把id是偶数的酒店分成一个分片(称作0分片和该酒店相关的所有信息都被分配到(0)分片酒店id是奇数的酒店被分配到另一个分(称作1分片,数据量继续扩大,可以进行的分片。下面说一下raw-index(酒店搜索的数据建库系统)是怎样进行数据分片的,其实很简单,根据酒店的id获得分片(0或1,然后根据分片(0或1)用 的方式把这些分片分开,例如:0分片的 data/0/下,而1分片的数据保存在 操作系统硬盘需要安装的软件:protocolbuffer框架、g++编译器等等。raw-index系统概要设配置文件程序开始时程序通过配置文件数据配置文件包含的数据(拉取多少天的数据sql新等等。CreateIndex(void*para);在这个方法中,首先会进行判断是否计时,这里定为60分钟,60分钟以后增量更新结束,释放锁,另一个进程开始这部分数据每分钟更新一次,以保持搜索模块使用的数据是的,从而避免一取的数据利用多线程去调用相应的数据库sql语句或者http接口,根据相应的分片写入分片文件中,如果无法判断写入哪个分片文件,就写入所有的分片protocolbufferprotocolbuffer是开源的一种数据交换格式,提供了三种最简单的使用方法(以c++为例:首先编写.proto文件,在文件中定义空message,messagemessage{requiredint32id=1;optionalint32price=2;repeatedint32date=3;}int32Tags:Tag,115用一个字节编码,1620472个字节的编码,所以应该将Tags115给频繁使用的字段。可以指定的最小的Tag为1,最大为2^29-1,但是不能使用1900019999protocolbuffer[1]。最后可以通过protocolbuffer提供的编译工具将.proto文件编译成.h和.ccmessage,填充上我们想要的数据,生成之后,我们可以调用方message道了定义,就可以把.protomessagemessagexmlprotocolbuffer语义更加清晰,更小更快更简单,编程模式友好,简单易学,并且具有‘向后‘兼容性,不需要重新部署程序[2],就可以更改message的数据结构,并Protocolbuffer的不足之处:功能简单,无法用来表达复杂的概念、目前protocolbuffer的通用性很差,以前只是公司,现在普及得xmlprotocolbuffer如果没有.proto[3]raw-index详细设统一提供数据源,数据的可靠性、实时性、完整性。c++多线程、protocolbuffer对数据进行分片,不同分片的数据到不同的结构,以实现各个分片数据32G操作系统zip、protocolbuffer 数据配置文件:conf/raw-可执行程序:bin/raw-程序控制:bin/start.sh(控制程序的启动、重启、停止等等) EntireUpdateBaseEntitySave类:该类提供一些虚函数,其他的save类(PriceEntitySave)CityDataHandler类:所有handler(类名中有Handler字样的)类都是负责最后实现功能的,Save(类名中有Save字样的)类是靠调用相应的handlerIncrementUpdateMain.cpp:是整个程序的ServiceWarpPubSequenceCreater(pbraw-inde(数据建库文件拉取(scp)到自己的(服务器)。ThreadPool[4]handler)类,这些类完成各自的功能,但代码部分很多都是相近的,protocolbufferServiceWarp.cpp用c++多线程和锁实现,总控模块的启动形式:ServiceWrap算法(伪代码thread1、thread2if!m-queue.empty()//任务队列不为空{//取到该任务的线程是随机的,这里设为thread{Increament=false;//停止增量数据的拉取 {}EntireUpdte(;//{}lock.Open();//}}部分重要的程序源代void*ThreadPool::RunInThread(void*p{ThreadPool*pSelf=(ThreadPool*)p;{//cout<<"*************************"<<pthread_self()<<endl;pair<THREAD_RUTINE,void*>routine;[6]memset(&routine,0,sizeof{SafeMutex_Locklock(pSelf-while(pSelf->m_queue.empty()&&pSelf-{pSelf-}if(pSelf-{routine=pSelf-pSelf- }}if(routine.first!={}}return}void*ServiceWrap::CreateIndex(void*{ ServiceWrap*service=static_cast<ServiceWrap*>(para); returnNULL;constConfiguration&configConfiguration::GetInstance();time_tentire_begin=time(NULL);///开始时间戳作为批次序列号intdate=0; service->m_is_running=false; while(!service- //等待释放{IDX_INFO("waitforincrement}if(entire_ret&&{service->m_is_running=true;service->m_is_increment_over=false;while(service->m_is_running)//{ sleep[7](config.IncrementFeq*60);}service->m_is_increment_over=true; returnNULL;}程序逻辑流程thjread1、无无有有否是Sleep(time)调用形式:boolPubSequenceCreater::CreateEntireSequence(time_tnow,int&date)程序功能性描,http件EntireUpdate类,EntireUpdate类调用HoModelOperator类HoModelOperator类调用和全量更新有关的Handlerprotocolbuffer算法(伪代码{初始化分片 以及其他环境据库;利用存放save类的vector调用相应的handler完成数据的拉取}部分重要的程序源代boolPubSequenceCreater::CreateEntireSequence(time_tnow,int&{ //生成一个EntireUpdateboolret=entire.Initial()&&entire.WriteFile();//初始化一个EntireUpdatereturn}EntireUpdateprotocolbuffer程序逻辑流handler完成数据拉取结结调用形式:boolPubSequenceCreater::CreateIncrementSequence(time_tnow,intindex)程序功能性描服务器时间生成相应的protocolbuffer并把该文件的路径包括文件名写protocolbuffer被调用:总控模块调用该模块,计时[11]调用:该模块调用PubSequenceCreater类、PubSequenceCreater类调用IncrementUpdate类、IncrementUpdate类调用HoModelOperator、HoModelOperator调用相应的save类,save类调用handler类完成数据的拉取和算法(伪代码httpvectorsave,handler部分重要的程序源代bool{constCon

温馨提示

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

评论

0/150

提交评论