阿里云案例 关注
手机版

云场景实践研究第16期:梦想旅行

  1. 云栖社区>
  2. 阿里云案例>
  3. 博客>
  4. 正文

云场景实践研究第16期:梦想旅行

场景研读 2018-02-04 12:39:54 浏览1324 评论0

摘要: 作为服务于全球旅游用户的平台,梦想旅行在大数据的云上实践过程中,极大的提高了图片上传的速度和Api访问的稳定性。本文站在架构的角度,介绍了梦想旅行如何借助阿里云应对遇到的阻碍,实现服务的高可用与容灾。

更多云场景实践研究案例,点击这里:【云场景实践研究合集】联合不是简单的加法,而是无限的生态,谁会是下一个独角兽

作为服务于全球旅游用户的平台,梦想旅行在大数据的云上实践过程中,极大的提高了图片上传的速度和Api访问的稳定性。本文站在架构的角度,介绍了梦想旅行如何借助阿里云应对遇到的阻碍,实现服务的高可用与容灾。

值得一提的是,因为数加平台的逐步完善,很多实用的功能的开放,也大大加快了业务上的进度,例如数加平台的一些实用功能,人脸识别、电商图片、机器翻译等,还有和E-MR和ODPS上的机器学习算法,都大大简化了算法团队的开发难度,更加关心业务指标,而不是忙着搭建平台和算法模型。

—— 李帅


采用的阿里云产品

  • 阿里云服务器 ECS
  • 阿里云负载均衡 SLB
  • 阿里云对象存储 OSS
  • 阿里云云数据库 RDS
  • 阿里云 E-MapReduce
  • 阿里云 MaxCompute
  • 阿里云云解析 DNS
  • 阿里云内容分发网络 CDN
  • 阿里云云监控
  • 阿里云日志服务


为什么使用阿里云

在有限的资源的情况下,支持快速、跨区、可扩展的分布式爬虫系统

多地爬取,引入过VPN进行爬取,解决网络带宽带来的最大瓶颈,提高图片上传能力,提供稳定的API访问能力


关于梦想旅行

梦想旅行主要是服务于出境自由行的用户,为用户实时体统餐饮、酒店预订、景点查询等基于LBS的服务。一般出境游的朋友会查攻略、求达人、看路书。在国内可以搜索附近获得旅游信息,而在国外却面临信息不对称的窘境,导致出境游需要非常繁杂的准备工作。

梦想旅行可以用几个词简单概括:出国、哪吃、哪玩、哪优惠。要完成这个目标,需要做三个方面:全球旅游数据整合与结构化、知识图谱构建和知识实体的挖掘、智能旅行。全球旅游数据的整合与结构化是梦想旅行的基础,通过获取海量的异构旅游数据,进行清洗、整合,形成丰富、完善的旅游知识体系,帮助出境游用户更简单的游玩。


畅行全球的“障碍

梦想旅行爬取并收录全球旅游相关网页超过20亿+实现全球多地爬取传输存储,存储200个以上的历史版本,实现对原始网页内容的变化的跟踪,热点页面更新时间低于30分钟,自学习智能调度算法、热点和冷门数据的平衡更新,智能嗅探各种旅游的数据来源、模板自动解析与匹配。这个量级虽然对于大公司来说并不是多大的数字,但对于小微型企业,如何在有限的资源的情况下,支持快速、跨区、可扩展的分布式爬虫系统,就是一个非常值得研究的问题。

这部分也有梦想旅行的一点独特之处,就是异地的爬取,异地爬取并不是为了容灾,而是因为很多有用的网站,尤其是社交类网站,在国内是无法访问的。例如facebook,facebook上目前除了社交用户外,还有大量的商家自己维护的相关信息,如地点、营业时间、优惠情况,甚至是其他用户对商家的咨询和评价,这些内容可能对行前和行中用户非常有价值。目前采用的多地爬取的方式实现,其实中间也引入过VPN进行爬取,但问题是网络带宽首先变成了最大瓶颈,同是防火墙检测速度非常快,一旦流量异常,很快vpn可能就无法使用。

目前的海外网络质量比较好,国内的网络状态也处于改善中。然而,一旦网络访问需要跨国内国外,这个时候就必须经过一座独木桥——海外出口。这条线路因为带宽有限,流量巨大,所以链路状态非常差。根据测试来看,平常的丢包一般在3%-6%之间,但一旦是上午9点后,下午6点后的上网高峰期,这条网络经常出现20%以上的丢包,处于完全不稳定的状态。如何在这种网络状态下,拥有快速的图片上传能力,提供稳定的API访问能力,是梦想必须要解决的重要问题。


为什么选择阿里云?

分布式爬虫架构

梦想旅行的分布式爬虫架构中采用ESC组成Crawler集群,重点网站每个网站都有自己的代理池,原因是针对于A网站封掉的ip,针对B网站是可用的。引入Js的渲染引擎,是因为很多的网站核心数据是由ajax异步填入的,所以通过渲染引擎就可以拿到这些核心数据。

0590c86b96df2e8117b89c59154a0e976460fe61

梦想旅行借助阿里云在杭州和北美的消息集群,爬取页面后,会写入相应的消息集群,ETS通过抽取、转换并对两个消息集群的数据进行处理和存储,放入网页库和链接库。这里需要说的是WDB采用OSS实现,这个设计非常实用,因为OSS对于存储小文件十分方便,第一,没有文件数目的上限限制,第二,存储总大小也没有限制,第三,单个文件大小没有限制。由于以上三点,他们用oss为每个网页存储了200以上的历史状态,能够便于对网页数据历史状态的快速跟踪。

数据整合与知识发现

梦想旅行的基础数据大都存储在OSS和RDS上,主要是因为E-MapReduce和ODPS对两者都能够支持,可以进行快速的数据计算

e25af81fc654c4008c0556926cca4a4c411ff4a6

计算层面,在E-MR和ODPS没有大规模采用之前,梦想旅行曾经自己做过一段MPI,后来因为复杂度较高,并且E-MR和ODPS功能更加完善,很快的迁移到两个计算平台。这点需要说明,为什么需要两个大数据处理平台支持,由于之前获取的原始页面非常多,数据处理逻辑复杂,经常需要对数据做大规模的修正和处理,因此必须能够加速数据处理速度,刚好这时候阿里云的两个计算平台都能够使用,帮其更加关心业务的实现,快速的进行业务迭代

数据上传服务提速

综合考虑的相关因素,采用了就近部署、单/双边加速、异步拉取/回传等步骤,极大的提高了图片上传的速度和Api访问的稳定性。要实现以上的几点,阿里云也有很好的支持,即云解析、OSS和图片服务

d448b74e64764690b883c78aefed154b22b0ff8e

高可用与容灾

通过负载均衡实现多机服务,避免单点故障SLB在梦想旅行的服务中是非常常用的基础功能。对于要求不高或访问较少的场景下,采用slb,同一请求内部,需要多次访问的,采用本机haproxy,实现本机转发,提升转发性能,可以显著的加快访问速度,相比SLB提速400%。

518beea85dc48be822e83dfdd7e3999356b6b98d

备份方面,梦想旅行一些数据库,如审核系统、CMS等,均采用RDS。阿里云的OSS跨区备份前不久上线,也解决了文件数据同步依赖于otter的问题,现在数据同步更快更及时。

系统监控方面,最初的采用是自建的zabbix服务,后来改用云监控,比较方便定制,通过自定义,基本能够解决大部分监控问题,也方便使用

日志系统一方面梦想旅行接了消息队列做实时处理,另一方面接了阿里云的日志系统,通过odps进行数据分析,简化了日志分析流程


上云成效

整体来讲,梦想旅行上云后,借助阿里云的云服务器ECS、负载均衡SLB、对象存储OSS、云数据库RDS、E-MapReduce、MaxCompute、云解析DNS、云CDN等产品,攻克网络瓶颈,保证了每个服务的高可用,同时主备机房准实时同步,也保证了数据安全可靠。


关于梦想旅行的更多实践详情:架构分析、数据整合、负载均衡,梦想旅行解析云上实践 

原文发布日期:2016-09-28

云栖社区场景研究小组成员:李杉杉,仲浩。

【云栖快讯】阿里云栖开发者沙龙(Java技术专场)火热来袭!快来报名参与吧!  详情请点击

网友评论

场景研读
文章479篇 | 关注2659
关注
一种即开即用且高性价比的在线备份服务,帮助客户把数据备份到阿里云上的备份存储库,为客户数据提... 查看详情
提供海量、安全和高可靠的云存储服务。RESTful API的平台无关性,容量和处理能力的弹性... 查看详情
大数据开发套件(Data IDE),提供可视化开发界面、离线任务调度运维、快速数据集成、多人... 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
双12

双12