热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

百富旅行:阿里云SAE助力下实现Serverless+微服务完美结合

 客户介绍百富旅行是全球领先的在线旅游同业交易平台,覆盖机票、火车票、酒店、邮轮、汽车票、门票、旅游、商城等版块,通过整合全球的优势资源,基于云计算和大数据决策为全球旅游从业者提供

 

客户介绍

百富旅行是全球领先的在线旅游同业交易平台,覆盖机票、火车票、酒店、邮轮、汽车票、门票、旅游、商城等版块,通过整合全球的优势资源,基于云计算和大数据决策为全球旅游从业者提供一站式智能整体解决方案。截至目前,百富旅行已经与600多家航空公司、国内所有火车线路、2500个汽车站,以及60多家邮轮集团进行了业务整合,网络覆盖全球100多个国家和地区。

 

业务痛点

随着业务的飞速发展,百富旅行技术团队通过Spring Cloud 等开源框架搭建了完善的微服务技术架构,并在底层服务器资源方面全面拥抱阿里云ECS,利用云计算提升工作效率,降低工作成本。将微服务应用上云之后,不需要再考虑硬件资源购买以及服务器架设等运维步骤,这样技术团队可以将更多的精力投入到业务需求实现中。随着系统迭代次数的增加,原有的微服务架构开始暴露出一些问题:

1、微服务运维难度大 从系统架构的角度,将微服务应用直接部署在云虚拟机上,跟部署在物理机房相比,并没有本质的区别,团队依然需要从底层维护每一个应用实例,包括操作系统调整、磁盘容量规划、JDK等组件安装等工作,这些工作都每一台云虚拟机投入使用的过程中,都是必不可以的。

2、测试环境利用率低,闲置资源高 在系统频繁的迭代过程中,不同的开发小组甚至不同的开发人员都需要单独的一套测试环境,久而久之整个技术团队创建了多套测试环境,其中一些测试环境包含了所有的微服务应用,整体资源利用率特别低,造成了大量的资源浪费。而且旅游业务本身也存在非常明显的波峰波谷,微服务架构可以很方便地为每一个应用进行水平扩容,但如果用于扩容的虚拟机资源需要预先购买的话,同样会造成大量的资源闲置。

 

选型调研

近些年在云计算领域异军突起的Serverless架构正好能解决上述这两个问题。由于不需要为Serverlesss应用购买底层服务器资源,直接按需申请,可以免去容量规划、操作系统调优等复杂的运维工作,Serverless架构的弹性伸缩机制也彻底解决了资源的闲置与浪费问题。因此,百富旅行技术团队开始对Serverless架构进行技术预研。

Serverless架构有两种常见的实现方式:

第一种是把每个微服务应用进行容器化改造后,统一使用Kubernetes进行编排,并利用云厂商提供的弹性容器实例实现容器层的按需调用。

这种方式的门槛很高,需要有精通Kubernetes技术的运维小组加入,并且需要团队投入比较大的精力对应用进行容器化改造,暂时不适用于百富旅行这样小规模高效率的技术团队。

另一种方式是使用类似于AWS Lambda或阿里云FC函数计算引擎,将所有业务逻辑进行函数化重构。

这种方式基本上需要将之前写的代码推倒重来,而且在一些拥有复杂调用链路的业余环节并不能发挥Serverless的优势,对百富旅行而言更加不合适。

经过多轮技术调研以及与阿里云技术专家深入交流后,百富旅行技术团队认为,阿里云提供的Serverless应用引擎(SAE)方案最适合他们的Serverless平台。

区别于其它 Serverless 产品,SAE 直接支持 Spring Cloud、Dubbo 等开发框架,真正实现了 Serverless 架构 + 微服务架构的完美结合。开发者可以通过WAR、JAR、镜像三种方式部署Serverless应用,不需要学习Kubernetes以及容器技术,也能享受Kubernetes和云上弹性容器的技术红利。

 

SAE使用实践

由于SAE属于应用层的Serverless方案,对于之前通过Spring Cloud框架构建的微服务应用,可以非常平滑地逐步迁移到SAE平台上,不涉及任何代码和业务逻辑的修改,这一点也是百富旅行全面拥抱SAE方案最重要的原因。

 

百富旅行:阿里云SAE助力下实现Serverless+微服务完美结合

部署在SAE上的微服务应用,可以按需申请资源,根据实际使用资源量按分钟计费,避免业务不活跃时段的费用支出,有效降低成本,并且微服务应用也能充分的发挥弹性伸缩的价值。特别是对于测试环境,SAE可以做到一键启停,避免了资源闲置问题。对于生产环境的任何一个应用,如果有扩容实例的需求,也能够迅速拉起新的实例,并自动与SLB以及注册中心完成绑定。

此外,通过SAE提供的应用生命周期管理能力,百富旅行技术团队彻底告别了通过编写脚本进行版本发布的方式。不论是应用的部署、启动、停止、与SLB关联、扩容实例、缩容实例,都可以通过阿里云控制台进行可视化操作。配合SAE的版本管理以及多种灰度发布机制,进一步降低了版本更新过程中的风险。对于新发布的版本可以在生产环境先进行小规模验证,一旦不能满足要求可以一键快速回滚。SAE还额外提供了系统监控功能,能从基础资源、JVM、应用链路等多个层面实时、直观地了解系统运行状态。

经历了基于SAE的Serverless化演进之后,百富旅行节省了大量云资源的成本投入,并且减少一半以上的运维工作,为业务持续发展打下了坚实的基础。未来,百富旅行将继续基于自身的技术特点不断深入探索Serverless架构,在拥抱新技术的同时也能充分享受到云计算的红利。

更多解决方案和产品细节,可点击Serverless 应用引擎 SAE >>

上云就看云栖号,点此查看更多:https://yqh.aliyun.com/?utm_cOntent=g_1000100940

本文为阿里云内容,未经允许不得转载。


推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
author-avatar
手机用户2602881053
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有