Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

去哪儿平台技术

2,593 views

Published on

  • Be the first to comment

去哪儿平台技术

  1. 1. “去哪儿”<br />David Wu<br />2010年4月13日<br />1<br />
  2. 2. 一、“去哪儿”介绍<br /> 二、监控系统<br />三、虚拟化在去哪儿的应用<br />四、Java开发的一些tips<br />
  3. 3. 一、“去哪儿”介绍<br />
  4. 4. “去哪儿”简介<br />中国领先的旅游媒体<br />2005年5月上线<br />最大的旅游搜索引擎<br />机票,酒店,知道,博客,打折,签证,度假,景点<br />开始提供手机服务<br />
  5. 5. 增长趋势<br />
  6. 6. 数字<br />35M月访问用户<br />每天60M动态请求,峰值1700+/sec<br />每天消息系统承载30M消息,峰值1000/sec<br />每天18M次数据获取、网页解析<br />30G memcacheddata, 264M次访问,峰值7000/sec<br />50%的数据能够在3s内得到服务,80%的数据能在8s内提供服务<br />
  7. 7. 数字<br />过去两年我们搜索量增长了28倍<br />技术团队从10个人增长到60个人<br />产品线从2个增长到6个<br />各种系统从5个增长到近30个<br />
  8. 8. 技术部门的使命<br />实现<br />实现产品<br />给产品的实现更多的可能性<br />用户体验<br />可用性<br />速度<br />成本<br />Capex(固定资产投资)/opex(运营费用)<br />开发效率<br />
  9. 9. 系统演进的动力<br />来源<br />流量的增长<br />产品需求的复杂化<br />发现的途径<br />监控<br />变更和发布记录<br />实现当中发现的问题<br />项目管理中发现的开发效率问题<br />
  10. 10. 二、监控系统<br />
  11. 11. 高可用性<br />3个9:99.9%<br />2592秒/月=43分钟/月<br />2小时/季度<br />4个9:99.99%<br />259秒/月=4.3分钟/月<br />12.9分钟/季度<br />
  12. 12. 一个故障<br />特定事情发生<br />服务质量<br />不可接受<br />故障发生<br />注意到故障<br />并开始修复<br />修复结束<br />
  13. 13. 网站故障来源<br />故障的来源<br />各种变更<br />访问量增长(capacity planning)<br />人为操作失误<br />硬件、软件异常<br />
  14. 14. 监控<br />监控分为两大类<br />监<br />及时发现失效点<br />关联关系<br />控<br />控制,就要有预先的概念<br />保留历史记录,对可能出现的问题进行预判和预先改进<br />在故障处理的时候,检查历史记录,找出变更对应的时间<br />
  15. 15. 对关联关系的看法<br />个人认为使用服务方负责监控服务的质量和可用性<br />识别重要关联关系<br />对关联服务有质量标准,譬如成功率,延时等<br />制定报警标准<br />根据实际情况修正相关标准<br />
  16. 16. 层次<br />
  17. 17. Qunar的监控系统<br />What’s up<br />监控服务器存活状态<br />监控URL存活状态<br />Cacti<br />监控服务器各项资源的使用情况<br />丰富的plugin<br />Squid/memcached/netapp<br />保存历史记录,观察流量和各项资源的使用的关系<br />要求ops每天都需要浏览cacti,每周全面审核<br />
  18. 18. Qunar监控<br />Hyperic<br />Java<br />开源<br />丰富的plugin<br />可用的报警机制<br />所有的业务、系统相关指标都在hyperic<br />Smokeping<br />Monitor机房到各省各个运营商的链路质量<br />
  19. 19. 经验<br />
  20. 20. 经验<br />每次发布完,团队要对所有的监控指标和系统图形观察30分钟以后才算结束发布<br /> ops团队每天早上会对关键应用的指标进行快速review<br />Ops团队每周会对监控指标做快速巡查<br />90%以上的故障能通过监控系统发现<br />
  21. 21. 三、虚拟化在去哪儿的应用<br />
  22. 22. Xen<br />虚拟化<br />70%以上的生产服务器跑在Xen上<br />迁移方便<br />部署、管理简单<br />更高的使用率,平均cpu使用率从15%->45%<br />OVM/Xen<br />有基于web的管理界面<br />剪裁比较好,300M<br />
  23. 23. Hardware<br />CPU<br />2x4 core<br />Ram<br />32G or 16G<br />Disk<br />2x500G, Raid 0+1,有些有带电池写cache的raid卡<br />NIC<br />2x1G,1 for ilo<br />
  24. 24. Xen<br />Example<br />[david.wu@tools1.ops.cn1 ~]$ ssh l-ovms8.ops.cn1 'sudo /usr/sbin/xm list'<br />Name ID Mem VCPUs State Time(s)<br />112_tw6_f_cn1 2 2200 4 r----- 3097120.3<br />114_tw7_f_cn1 3 2200 4 -b---- 3099024.2<br />116_mem1_f_cn1 1 1700 4 -b---- 267107.3<br />118_sug1_f_cn1 10 1200 4 -b---- 58702.3<br />430_twb2_f_cn1_ovms8 9 2200 4 r----- 2283516.6<br />434_askdb1_ovms8 11 2200 4 -b---- 60466.4<br />Domain-0 0 668 8 r----- 1661065.3<br />
  25. 25. 问题<br />性能<br />RAM/Syscall(context switch)<br />I/O performance<br />Disk performance<br />Network performance(not so important in web environment)<br />管理<br />Network structure(vlan tagging)<br />VMM层<br />Vm之间隔离<br />
  26. 26. RAM/Syscall<br />Unixbench score<br />Raw 503<br />Dom-0 397<br />Dom-U 317<br />
  27. 27. Unixbench score<br />
  28. 28. Disk performance(with write buffer)<br />Bonnie++<br />
  29. 29. Disk performance(without write buffer)<br />
  30. 30. Disk performance(Random seek)<br />
  31. 31. Vlan tagging<br />一个物理主机上要支持在多个vlan的虚拟机<br />规模扩大,单个网段无法满足需求<br />安全分区需求<br />
  32. 32. Xen<br />In the future<br />Share storage/Live migration<br />Device pass-through<br />VMDq/VT-d/SR-IOV<br />Network structure optimization<br />Upgrade to Xen 4.0 to improve the performance<br />
  33. 33. 四、Java开发的一些tips<br />
  34. 34. JAVA开发的一些Tips<br />善用jdk的命令<br />Jps<br />Jstat<br />Jmap<br />Jstack<br />jhat<br />
  35. 35. tips<br />内存<br />OOM<br />GC并不能杜绝内存泄露<br />仔细计算内存的使用,内存是有限的,给内存的使用一个上限<br />Jhat可以帮助你看到你的内存用在什么地方<br />内存池化<br />
  36. 36. tips<br />线程<br />线程数量是有限的<br />所以减少线程数量是非常重要的<br />减少数量意味着要缩短线程的长度<br />线程池化,降低创建和销毁线程的开销<br />
  37. 37. tips<br />Cache和timeout是互联网永恒的主题<br />数字,数字,数字<br />监控对于工程师,相当于雷达对于战斗机<br />还可以更简单吗??<br />如果不知道未来,那就不要为未来做准备<br />性能(速度)象海绵,挤一挤总会有的<br />去掉一个部件远比增加一个部件功劳大<br />并发安全是魔鬼<br />
  38. 38. 一点体会<br />共享基础设施比代码重用更加重要<br />保持状态是扩展性的天敌<br />团队的背景很大程度决定了架构的采用<br />“最好”vs“最合适”<br />“解决现在的问题”vs“解决将来的问题”<br />好的架构匹配好的运维<br />任何一项技术/架构的引进都需要一个痛苦的过程<br />
  39. 39. 邮箱: david.wu@qunar.com<br />电话: 13701172202<br />

×