去哪儿平台技术

2,571 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,571
On SlideShare
0
From Embeds
0
Number of Embeds
164
Actions
Shares
0
Downloads
67
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 我们希望在不久将来,能为您服务。谢谢。
  • 去哪儿平台技术

    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 />

    ×