- 1
- 0
- 约2.18千字
- 约 2页
- 2026-02-17 发布于北京
- 举报
设计()简介
题目:酒店搜索的动态数据建库指导老师:
作者:软件工程一班
随着互联网和移动互联网时代的到来,使得预订酒店的用户量的越来越
多和上线的酒店数量越来越多,导致酒店搜索的正确性、稳定性、速度都将受到
。酒店搜索和的搜索引擎是不同的,各有各的特点,的搜索是大搜
索,更加注重广度;而酒店搜索更加注重深度,它是垂直搜索,要注重的细
节,数据也更加精细。
本系统(酒店搜索的动态数据建库系统,以下简称raw-index)是酒店产品
检索模块(以下简称ds)的数据源,ds模块的所有数据都来自于raw-index,
因此,raw-index系统能否正常、快速、及时地从各个数据库和http接口获取
数据,并将其序列化为protocolbuffer文件格式至关重要。
raw-index系统主要使用了c++多线程、protocolbuffer、c++多态
性等技术完成。
raw-index模块主要分为三个模块:总控模块、全量数据拉取模块、增量数
据拉取模块。
总控模块简介:
总控模块完成的功能:加载配置文件、控制全量数据拉取模块和增量数据拉
取模块的调用。
总控模块的实现:总控模块中设计了一个任务队列,程序中有三个线程,主
线程根据配置文件中设置的全量数据更新频率,每隔一段时间向任务队列中增加
一条任务;其他的两个线程(下面以thread1和thread2代替)一直在检查任务
队列中是否有任务,如果有的话,就拿去执行(假设thread1拿到任务),每一
次任务会进行一次全量数据的拉取,等全量数据拉取结束后,thread1一直进行
增量数据的拉取(增量数据拉取也有时间间隔,可通过配置文件配置),一直等
到thread2领取到任务,thread1结束任务的执行,继续去检查任务队列中是否
有任务。
全量数据拉取模块和增量数据拉取模块简介:
全量数据拉取模块和增量数据拉取模块的实现是非常相似的,只是拉取的数
据多少不同,全量数据每1小时更新一次,更新所有的数据;增量数据每分钟更
新一次,主要更新对实时性要求较高的数据。第一步是初始化环境,包括检查生
成相应的文件目录等(不同的分片目录不同,分片概念后面介绍);第二部确定
需要更新哪些数据,调用相应的save类第三部:save类调用相应的handler类
完成具体的任务。
一些总要的概念:
•分组:把raw-index分成两组,一组在偶数时间整点开始拉取全量,另一
组在奇数时间整点开始拉取全量。该需求是因为ds是分2组的,一组在
奇数小时进行服务,一组在偶数小时进行服务,每一组raw-index为一组
ds服务)。
•分片:由于数据量较大,如果一个部署了ds的服务器把所有的数据加载
到内存可能会把内存。因此对数据进行分片,酒店id是偶数的相关
数据是0分片,酒店id是奇数的相关数据是1分片,(如果数据继续增加
可以增加的分片)。ds模块在拉取时,根据自己本机的ip地址(如果
ip地址是偶数就拉取0分片数据,如果ip是奇数就拉取1分片数据)拉
取相应分片的数据。
与ds模块的交互:
•1、raw-index模块每一次生成新的文件,都会在本地pubsequence.pb文
件中生成一个记录,ds模块每从raw-index拉取一个文件,也会在其本
地的pubsequence.pb文件中生成一条记录。
•2、ds每5秒检查一次本地的pubsequence.pb文件和raw-index的
pubsequence.pb文件,如果有新文件生成,就用scp命令将文件拉取到
本地并加载到内存,更新本地的pubsequence.pb文件。
当前的效果:
当一组服务器进行服务时,部署在不同服务器上的该组ds都使用同一个
r
您可能关注的文档
最近下载
- 特定技能2号农业练习题11.docx
- 2026年在带头固本培元、增强党性等五个带头方面对照检查存在的问题、整改措施材料6份文.docx VIP
- 冰川雪山攀登技巧心得分享心得总结.docx VIP
- 小森印刷机s40操作说明.pdf VIP
- 8篇2026年带头固本培元、增强党性(五个带头)方面存在的问题精选.docx VIP
- 翼状胬肉病人护理精品PPT课件.pptx
- 2026年河北省职业病诊断医师资格(尘肺病类)高分突破必练试题库(含答案).docx
- 2024中医临床实践指南穴位埋线减肥.docx VIP
- 人教PEP版五年级下册英语全册教案(单元整体教学设计).docx VIP
- 2025年贵州省公务员考试题及答案解析.docx
原创力文档

文档评论(0)