




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
阿里技术沙龙 去哪儿酒店搜索分享 关于去哪儿酒店搜索 定位 垂直搜索平台 目标 Smart Your Hotel Reservation 目前规模 搜索 210家酒店预订站点 支持全球 22699个城市 覆盖 368892家酒店 主要议题 系统的核心功能 酒店信息的搜索 酒店报价和房态的实时准确 高可用性 系统设计上的考虑 围绕着核心功能目标我们做了些什么 整体结构服务化拆分 实时抓取 系统结构总览 整体结构服务化拆分 现有主要服务 页面展现功能服务 关键词搜索服务 rank计算服务 报价服务 报价抓取和调度服务 拆分原则 功能模块相对独立 功能内聚 目的 降低维护成本 提高系统整体可用性 故障隔离 服务降级 实时抓取 实时抓取的需求 酒店的价格和房态 , 尤其是房态变化快 价格和房态的准确性是保证用户的搜索体验的前提条件 实时抓取的难点 保证用户请求的响应效率 保证用户看到最新的价格和房态 降低对目标网站的抓取量 实时抓取 实时抓取核心服务组件 报价服务 抓取服务 消息中间件 分布式存储 实时抓取 当前规模 报价服务每秒请求量峰值近 1500qps 报价服务平均请求响应时间 2.7ms 报价抓取服务平均每秒处理完成 2500个抓取请求 报价服务平均 20分钟一次 full gc 报价服务平均 10s一次 young gc 报价服务 15分钟负载峰值 3-3.5,平均 1.2-1.5 实时抓取 我们如何做到的 服务拆分 异步化 缓存设计 降低抓取量 实时抓取 -服务拆分 服务拆分 报价服务和抓取服务分拆 功能侧重点不同 报价服务 缓存 +计算系统 对外接口响应时间是关键 抓取服务 定向抓取 整体吞吐量和获取率是关键 典型的生产者消费者场景 异步通讯 实时抓取 -异步化 异步化 消息中间件 线程池隔离 前端 js动态请求 实时抓取 -消息中间件 消息中间件 用于报价服务和抓取服务之间的通讯 方案选择 activemq 配置考量 不需要持久化 过期消息可以丢弃 直接丢弃 提高吞吐量 async send & async ack 接收到消息后异步处理 需要 failover client端连接串配置成 failover协议 实时抓取 -消息中间件 实时抓取 -线程池隔离 线程池隔离 目的 独立任务串行执行转并行执行,提高性能 最大限度降低外部资源依赖失效的影响 使得整体吞吐量和响应时间可控 避免资源争用 关注点 线程池容量合理设置 任务超时设置 利用监控,持续运维 实时抓取 -线程池隔离 应用场景一 背景 用户提交一个酒店搜索,搜索列表页在得到符合条件的酒店列表后,需要远程调用报价服务的接口获取酒店报价 报价服务的任何问题都不能影响到搜索结果列表页的展示 如果结果列表酒店数量太多,报价服务串行获取报价效率较低,调用方等待时间较长 实时抓取 -线程池隔离 应用场景一 解决方案 单独创建一个线程池来处理对报价服务的调用 对于超过一定阈值的酒店数的报价查询请求,拆成多个任务执行 设计考量 线程池参数选择 任务超时设置 经验值,我们一般是选择被调用方响应时间 *10 超时后处理 任务需要能够响应中断 超时后要回收资源 超时后需要将调用条件记录到日志中,供线下分析 实时抓取 -线程池隔离 应用场景一 设计考量 线程池参数选择 corePoolSize 该请求 qps历史峰值 *增长系数 *调用外部接口任务超时时间( s) queue LinkedBlockingQueue,无界队列,资源不可控,不考虑 ArrayBlockingQueue,线下任务,只考虑吞吐量而不关注响应时间时使用 SynchronousQueue, Direct handoff,有任务立即尝试开线程执行,在关注响应时间时选择 maxPoolSize max(该请求 qps历史峰值 *增长系数 , corePoolSize) rejection policy 直接丢弃 记录监控 实时抓取 -线程池隔离 应用场景二 背景 报价抓取服务从消息队列中接收到消息执行抓取 各个目标网站的响应时间,所能承受的抓取量以及并发度不一 实时抓取 -线程池隔离 应用场景二 解决方案 异步处理消息,提高消息接收速度,提高消息队列吞吐量 各个目标网站的抓取走各自独立的线程池,防止对某一个网站的抓取出现问题影响到对别的网站的抓取请求 设计考量 线程池的容量设置 对方网站所能承受的并发量 单次抓取请求的响应时间 吞吐量优先,使用有界队列来尽量避免请求丢弃 实时调整线程池容量设置 对每一个目标网站的抓取任务线程池做监控 实时抓取 -前端 js动态请求 目的 将最新报价及时展现给用户 设计考量 前端 javascript在有限的时间范围内按照一定时间间隔 poll报价服务接口 poll的间隔根据以下因素动态改变 发送的报价抓取请求回数比例 随时间衰减 报价服务接口连续返回相同结果集的次数 实施抓取 -缓存设计 目的 提高整体性能 减少外部资源依赖,提高可用性 缓存分类 基础信息缓存 缓存所有常用信息字段 全量缓存 系统启动时加载 lazy initialization is evil here 增量更新 报价缓存 进程内缓存 LRU 减小并发锁颗粒度 分布式缓存 memcached 实施抓取 -缓存设计 几点体会 内存缓存 关注单个缓存对象的大小 要正确的使用数据类型 值域固定的字符串对象常量化 Sern() 自定义 String Pool 要监控缓存命中率 要估算总的内存开销 缓存池要有容量上限 对于 LRU缓存,不同业务数据尽量不要共用同一 LRU队列 memcached 需要关注 memcached的内存分配机制 memcached的操作也是外部资源访问,要有超时设置 关键业务数据最好独占一组 memcached,防止类似大小的不同业务数据缓存争用同一 slab,导致 eviction 监控 实时抓取 -降低抓取量 目的 降低目标网站的负载 手段 为每个目标网站设置 cachetime 依据当前抓取量监控 依据目标网站房态房价变化频率监控 人工配置 +动态调整 定时线下全量抓取配合线上用户触发抓取 与合作客户配合进行变价推送 运维和监控 “ Life is like a box of chocolate, and you will never know what you are gonna get” -THIS SHOULD NOT HAPPEN TO ONLINE SYSTEM 运维和监控 意义 好的系统是运维出来的 及时发现问题 掌握系统运行状况 找出系统优化方向 掌握业务数据 为技术决策提供依据 分类 实时监控和运维脚本 监控系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国水力发电机组行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国氢化可的松口服片行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国气囊式液压蓄能器行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国柑橘精油行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国服装管理软件行业市场现状供需分析及投资评估规划分析研究报告
- 自考行政管理的主题研究方向试题及答案
- 2025-2030年中国无线安全摄像头行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国旋转金相磨床行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国旅游景区行业市场深度调研及前景趋势与投资前景研究报告
- 2025-2030年中国料理机行业市场现状供需分析及投资评估规划分析研究报告
- 手工焊接工艺操作规范
- 《母鸡》作业设计-统编版语文四年级下册
- 高校人才引进机制研究
- 【高中物理竞赛专题大全】竞赛专题1力学50题竞赛真题强化训练解析版
- 《2023中国会议统计分析报告》
- 上消化道出血病人的护理
- 2020教学能力大赛国赛一等奖实施报告汇报PPT-国一
- 信访事项复查申请书
- 2023学年完整公开课版《老师领进门》
- 《伊利乳业集团企业内部审计存在的问题及优化对策分析案例(论文)10000字》
- 2023年副主任医师(副高)-急诊医学(副高)考试历年高频考点真题附带含答案
评论
0/150
提交评论