去哪儿酒店实时报价搜索技术分享_第1页
去哪儿酒店实时报价搜索技术分享_第2页
去哪儿酒店实时报价搜索技术分享_第3页
去哪儿酒店实时报价搜索技术分享_第4页
去哪儿酒店实时报价搜索技术分享_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、去哪儿酒店实时报价搜索技术分享关于去哪儿酒店搜索v 定位垂直搜索平台v 目标Smart Your Hotel Reservationv 目前规模搜索210家酒店预订站点支持全球22699个城市覆盖368892家酒店主要议题v 系统结构总览v 服务拆分和系统可用性v 实时报价搜索的设计考量v 监控系统OOO系统结构总览v 系统的核心考量信息搜索准确和全面报价和房态的实时准确高可用性性能系统结构总览如何

2、达到报价和房态的实时准确实时报价获取高可用性服务拆分监控和运维性能缓存设计监控和数字系统结构总览v 现有主要服务HotelSearch Render Service负责主要页面数据获取和展现HotelSearch Service负责关键字检索HotelSearch Rank Servicerank计算服务HotelSearch Price Service负责实时房价房态搜索和计算HotelSearch Price Crawl Service实时房价房态抓取服务系统结构总览服务拆分v 拆分原则功能内聚的独立业务模块v

3、拆分目的降低维护成本提高系统整体可用性故障隔离服务降级服务拆分v 服务化模块间通讯 httpnginx + QunarClient rpcdubbov 可用性和负载均衡 rpczookeeper httpngx-healthcheck负载均衡roundrobin按ip或cookie哈希按搜索条件哈希实时报价搜索v Why酒店的价格和房态,尤其是房态变化快价格和房态的准确性是保证用户的搜索体验的前提条件v Challenges保证用户请求的响应效率保证用户看到最新的价格和房态降低对目标网站的抓取量实时报价搜索v 核心组

4、件报价服务抓取服务消息中间件分布式缓存实时报价搜索v 当前规模报价服务每秒请求量峰值近1600qps,全天超过1亿次动态请求报价服务平均请求响应时间4ms报价抓取服务平均每秒处理完成4000个抓取请求,全天近2.5亿次报价抓取实时报价搜索v 如何应对服务拆分异步化缓存设计降低抓取量实时报价搜索v 服务拆分 报价计算服务和抓取服务分拆HotelSearch Price ServiceHotelSearch Price Crawl Servicev 拆分意义 功能侧重点不同报价服务缓存+计算系统对外接口响应时间是关键抓取

5、服务定向抓取整体吞吐量和获取率是关键v 服务间通信 生产者消费者 异步通讯实时报价搜索v 异步化消息中间件线程池隔离前端动态请求实时报价搜索v 消息中间件用于报价计算服务和抓取服务之间的通信方案选择activemq基于业务模式进行配置不需要持久化客户端控制负载均衡过期消息可以丢弃直接丢弃 提高吞吐量async send & async ack接收到消息后异步处理可用性考量client端连接串配置成failover协议实时报价搜索v 消息中间件消息中间件v 客户端负载均衡优化效果www.qun

6、实时报价搜索v 线程池隔离目的提高性能独立任务串行执行转并行执行提高整体可用性最大限度降低外部资源依赖失效的影响使得整体吞吐量和响应时间可控避免资源争用关注点线程池容量合理设置任务超时设置利用监控,持续运维实时报价搜索v 线程池参数选择corePoolSize该请求qps历史峰值*增长系数(1.5,依据业务预期而定)*调用外部接口任务超时时间(s)queueLinkedBlockingQueue,队列,资源不可控,不考虑ArrayBlockingQueue,会产生任务等待,适合线下任务,只考虑吞吐量而不关注响应时间时使用SynchronousQueue,D

7、irect handoff,有任务立即尝试开线程执行,在关注响应时间时选择maxPoolSizemax(该请求qps历史峰值*增长系数, corePoolSize)rejection policy直接丢弃记录监控实时报价搜索v 前端js动态请求目的报价服务不会等所有商都抓回报价将最设计考量前端按照特定间隔poll报价服务接口poll的间隔根据以下因素动态改变发送的报价抓取请求回数比例随时间衰减报价服务接口连续返回相同结果集的次数价及时展现给用户实时报价搜索v 缓存设计进程内缓存的意义提高整体性能减少外部资源依赖,提高可用性www.qunar.

8、com实时报价搜索v 缓存设计 缓存分类基础信息缓存酒店的报价抓取元数据全量缓存 系统启动时加载进程内缓存 LRU 命中率是关键 多级策略 控制读写锁粒度分布式缓存 实时报价搜索v 构建内存缓存的基本原则关注单个缓存对象的大小要正确的使用数据类型值域固定的字符串对象常量化Sern()自定义String Pool要监控缓存命中率要估算总的内存开销缓存要有明确的容量上限对于LRU缓存,不同业务数据尽量不要共用同一LRU队列实时报价搜索v 报价多级缓存目的确保用户报价请求,即一级缓存的命中率确保各商报价抓取结果合

9、并时的缓存命中率减少和memcached的通信开销减少序列化反序列化的开销,控制负载实时报价搜索v 报价多级缓存借鉴于java heap的隔代管理实时报价搜索v 报价一级缓存命中率实时报价搜索v 内存缓存换出到memcached的次数优化前后对比实时报价搜索v 从memcached换入到内存缓存的次数优化前后对比实时报价搜索v Memcached的使用Slab Allocation Mechanism防止类似大小的不同业务数据缓存争用同一slab,导致evictio

10、n尽可能提高缓存命中率保证memcached集群的总容量符合业务需要缓存失效会导致对商网站的大量抓取缓存一定要有合理的过期时间定期主动清除过期数据,减少evictionqmemcached-patch使用高效的序列化反序列化工具kryo确保可用性监控和报警实时报价搜索v kryo替换java原生序列化/反序列化的效果实时报价搜索v 降低抓取量目的降低目标网站的负载降低双方的成本手段为每个目标网站设置cachetime依据当前抓取量监控依据目标网站房态房价变化频率监控人工配置+动态调整定时线下全量抓取配合线上用户触发抓取与合作客户配合进行变价推送运维和监控v 意义好的系统是运维出来的及时发现问题掌握系统运行状况找出系统优化方向为技术决策提供依据v 分类实时监控和运维脚本监控系统www.qunar.

温馨提示

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

评论

0/150

提交评论