NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

携程技术演进之路

  • 2020-02-15
  • 本文字数:4299 字

    阅读完需:约 14 分钟

携程技术演进之路

作为互联网 OTA 领头羊,携程在近 20 年的发展历程中,在业务形态和互联网行业整体发展驱动下,经历了三轮技术体系的演进。本文将详述这一技术演进历程,希望能给互联网企业,尤其是早期的互联网企业一些借鉴和启发,帮助大家少走一些弯路。

一、携程当前的技术体系

最新的财报显示携程的 GMV 将近 7000 亿,已经是全球排名第一的在线 OTA。支持如此大业务量背后的技术体系,规模也是巨大的。


携程目前有将近 4000 研发人员,周发布数 8000+,应用数 10000+,主机实例数 80000+。


有多个数据中心,遍布中国大陆,香港,欧洲,美国等。而且在核心数据中心之间,实现了高可用和灾备计划,网站可用性达到 4 个 9。



上面这张图是携程技术体系组成,画的还是比较简单的,远不能反映目前携程体系架构的复杂性。


主要包括三大块:


第一块系统架构,由无线大前端平台、分布式框架与中间件、分布式大数据存储构成。


第二块,建立在基础框架上面的,是非常复杂的业务系统,携程酒店、度假、机票等业务的订单和商品中心产品数据等等,都是根植于这个系统当中。


第三块,赋能系统。比如大数据与人工智能平台,会把海量的大数据收集起来,做深入的数据挖掘和推荐。运维部署保障中心,把整个服务器的资源统一管起来,通过强大的监控中心和运维体系保障系统正常运行。


二、携程技术演进路线


携程技术演进路线,可以大致分成三个阶段:


  • 呼叫中心时代,主要是以线下业务驱动为主;

  • 互联网+移动互联网时代,产品技术驱动为主;

  • 数字化+AI 时代,大数据驱动为主。


三个阶段是很漫长的,也经历了非常复杂的演变过程。总体而言,技术演进取决于业务形态和互联网行业的发展变化


在这里提一下携程的业务特点,携程算是 O2O 企业的鼻祖,具有和其他 O2O 一样的特点,比如线下重,线上轻;对资源重度依赖;线下流程复杂,像我们常说的三流企业(信息流、物流、资金流);属于典型的 ERP 形态。所不同的是携程是 Offline To Online 递进,跟现在通常所说的 O2O 递进顺序是相反的,但是殊途同归,大家的最终业务形态是类似的。

2.1 呼叫中心时代

2.1.1 业务场景

呼叫中心时代,是很多老携程人经常会怀念的时代。携程最早的客户业务是从发卡开始的,那个时候,在火车站、汽车站、机场,我们的业务人员拿着携程的会员卡去发放。


会员卡上有两个关键数字,一个是卡号,一个是携程呼叫中心的电话号码。客人想出差订酒店,只需要打携程呼叫中心电话,报卡号,用户关系就建立起来了。


所以那时候的流量入口是电话。


这个业务场景也决定了携程和一般互联网企业有些不太一样的地方。因为流量入口是电话,携程是通过坐席人员代替用户来操作,因此对坐席的操作规范和服务流程,要求是非常严格的。但因为用户不直接接触系统,所以用户体验是很弱的。

2.1.2 技术体系

这个时期的技术体系,具备初创企业典型特点。


首先是架构比较单一,主要的商业逻辑写在数据库层面。当时我们主要采用微软 Windows 平台,ASP+SQLServer 这样的一个体系架构。跟很多互联网公司,刚起步的时候,所采用的 LAMP 体系架构都是类似的,都是通过脚本语言加上数据库,快速搭建一个系统去做。这类体系架构的缺点是高耦合,扩展性不好,优点就是开发和发布快。


那个时候建立新的产品和业务,都是以 C2P(Copy To Paster)模式为主。如果想快速开展新业务,最简单的办法是拷贝粘贴,把原来的代码直接拷过来进行修改。例如携程酒店是我们的第一个业务,机票是第二个,我们就直接把酒店代码拷贝过来,然后再在上面去改。


总结下来就是: 快速迭代、快速开发、快速发布,非常契合业务的高速发展需要,但是耦合高,扩展性差,体系结构没有经过优化,也为后面挖了不少坑。

2.2 互联网和移动互联网时代

2.2.1 业务场景

1999 年差不多到 2005、2006 年,携程都是以呼叫中心模式去做的。


2006 年开始,伴随着早期电商网站的起步,很多用户的行为习惯已经逐步转向互联网了,他们更习惯在网上买商品。因此伴随着用户行为的改变,这时候携程的流量入口也从电话转向到 Online,再到后来的移动端 APP。

2.2.2 技术体系

这个阶段的技术体系,跟大型互联网公司类似,以支持大流量并发访问和稳定性,扩展性为主,各个应用都是分层的。


分层有多个优势,第一通过分层把每一层的业务进行隔离和透明化,更多地进行解耦,也能很方便的部署。这样当有大流量的时候,可以很快扩充,把流量分担,做负载均衡。


第二,能做高可用。每一层应用都部署在多个服务集群上,当其中一个集群挂了,另一个集群可以很快顶上来。


另外一个就是可以通过服务化进行子系统之间的解耦。我们把所有以前的两层架构变成三层架构,三层架构变成四层架构。同时由于拆分了不同的子系统,子系统之间的相互调用通过 SOA 基于服务的方式去做。


这样能够非常快速的搭建基于核心服务体系之外的业务系统,给各个前端去使用,包括 Online、手机、Offline,统一的接口,统一的规范。那个时候提出的口号是:open API everywhere.


它带来的好处,就是现在大型互联网站所必须具备的,我们称之为的“3+1”模式,高并发+高性能+高可用,再加一个高扩展。

2.2.3 转型痛点

在这个阶段,可以说是携程整个技术体系转型最大,也是最痛的阶段。这里列出的一些痛点,现在看可能不算什么,但在当时还是比较困扰我们的。


例如:


1)业务快速发展跟不上


我们早期的拷贝黏贴的模式,在快速应对业务发展的前期起了非常好的作用。但是后来,随着业务快速发展和流量倍增,这种模式就不适合了。之前的技术体系本身就是两层架构,应用只能部署在单台服务器上,高并发能力有限。扩展性很差,不能进行大型应用之间的分层和部署,也就无法支持应用隔离和应用多集群部署。


痛点在于,前期越快,到后期必然会越来越慢,而应用架构和物理架构必须要重构,花费成本很高;


2)子系统的拆分边界不清


和很多互联网公司在进行技术改造的时候一样,携程早期拷贝粘贴了很多个垂直的像烟囱式的独立系统,这些独立系统中有很多重复的部分。


以支付为例,我们当时是把支付收集信息放到系统当中,酒店放到酒店集群,机票放到机票集群,支付完成之后,再把信息收集到一个数据库中。


这种情况下,如果银行需要改一个信用卡授权码,每个系统都需要重新做一遍,新的功能上线协调、沟通成本很高。系统的边界不清,你中有我,我中有你。


后来我们做了一个 SOA 子系统拆分的项目,重新梳理业务流程,把一些重复的子系统拆分出来。其实不论酒店还是机票、度假业务,有些流程是类似的,比如预订,都是先查询,然后下单、支付、发消息通知。


重复的子系统拆分出来之后,就变成了后来的携程公用系统,比如支付平台、消息平台、物流配送平台等等。这个项目整整进行了两年时间,为携程平台的转型打下了坚实的基础。


3)流程拆分复杂


过程非常复杂,牵扯到流程改变,流程重新划分,系统再改造的过程。这块不做过多阐述,总结下来就是:是公司的业务复杂度,决定了流程复杂度,从而决定了系统复杂度,一环一环传递下来的。因此系统的改造必须先从优化业务流程入手,而不是相反。


4)分层体系架构的复杂


不同的系统拆分之后,你会发现,原来很简单的事情,变得很复杂。


还是以支付举例,如果在一个系统里,下单、支付,支付成功之后,返回一个订单状态——交易完成。如果不成功,事务回滚。当订单和支付都在一个系统中时,我们只要写在中间件模块里,用微软的 transaction server 机制, 把代码嵌进去,成功了就 commit,失败了就 rollback,结束了。


但当拆成不同的子系统之后,支付平台和订单下单流程不在一个系统中,甚至不在一个物理服务集群中,如何去保证事务提交的完整性?这时只能通过类似状态机回调和消息队列的方式进行解耦,来保证最终状态的一致性,复杂度大大增加。


再比如缓存,本来在一个体系当中,每台服务器中,缓存数据都是独立和一致的。当分成不同集群之后,如何保证每台服务器中的缓存数据的一致性?


当然随着技术的发展,后面有很多系统,像 Redis 这种中间缓存数据中间件,就可以通过 hashcode 算法,较好的解决了分布式缓存的问题。但在当时,这也是个难题。

2.3 大数据和人工智能时代

2.3.1 业务场景

这个阶段,则是依托海量用户和海量数据,发展平台个性化和数字化,以及通过 AI 赋能。 在我看来,所有的电商平台系统,最终都会演变为这种形式。

2.3.2 技术体系

携程在这个阶段,技术体系主要是“ABC 战略”。由下至上依次是:


C——Cloud(云),计算、网络、存储云化;


B——Bigdata(大数据),在云上做整个集团数据集成、共享、交换、打通;


A——AI(人工智能),在 B 之上,做个性化、数字化和人工智能;


目前携程 AI 赋能主要体现在两块:


第一块是营收增长方面,做精准化的营销,个性化推荐,提升转化率。


最近刚看到一个消息,就是淘宝宣布双 11 期间,通过点击淘宝个性化推荐商品页面进来的用户所成交的订单数,已经超过主动搜索进来的用户。这里面节省的用户费力度成本,订单转化率成本,都是很可观的。由此也更进一步证明了,基于海量数据发展出的个性化、数字化特性对电商平台的重要性。


这将是电商以后发展的一个大方向,其实像今日头条、抖音等内容信息类平台,就是通过大数据的个性化驱动和分发的方式,大大提升了用户黏性,从而后发先至,将对手远远抛在身后的。


第二块则是通过人工智能做客服机器人和 AI 数据挖掘。


携程有一个很大的呼叫中心,座席一万多人,为我们的客人提供服务。而通过客服机器人,可以部分代替座席,降低成本,提高效率,并加快服务响应,这是携程可以深挖的地方。


过程中也遇到了很多问题,比如语音识别的准确性,可能还不能很好的支持进行多轮的人机对话。如果我们语音识别率每次可以达到 90%的话,一轮对话下来 90%,两轮对话下来就只有 81%,最终的准确率大家可以想象。


所以怎么去做呢?


可以想象下,你到了海外,语言不通,如果点菜只通过语言去讲的话,效率是比较低的。而这时候,如果商家拿出一个菜单,你只需要点击菜单,告诉商家“这个,这个”就结束了。


所以我们的智能客服,同用户的信息交流方式也要多样。不仅仅通过文本和语音,还可以通过其它图文并茂的方式,最短时间内,让用户和机器人可以达到信息交流的目的,提高效率。


关于携程的技术演进之路,简单介绍到这里。现在回头看来,携程走过的这些历程,跟其它大型电商平台,都是非常类似的,所谓殊途同归。大家都是通过不断的迭代,重构,引进和吸收新的技术和理念,一步一步走到今天


我们现在还在路上,相信以后也会一直在路上。


作者介绍


李小林,携程技术副总裁,平台研发中心负责人。从事 IT 互联网技术研发工作二十多年,目前负责携程基础设施平台。


本文转载自公众号携程技术(ID:ctriptech)。


原文链接


https://mp.weixin.qq.com/s/24-0KSmB40K_E9yiwAh5VA


2020-02-15 17:281010

评论

发布
暂无评论
发现更多内容

云图说丨Astro Canvas一站式数据可视化开发,分钟级构建业务大屏

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

DTO、VO、BO、PO、DO的用法区别,居然这么多人搞不清楚.....

程序知音

FL Studio21最新版DAW数字音频工作站

茶色酒

FL Studio FL Studio 21

vivo全球商城:库存系统架构设计与实践

vivo互联网技术

系统架构 电商 库存

【实用类】测试使用ChatGPT开发shell脚本 | 社区征文

瀛洲骇客

ChatGPT

CI/CD | 不可忽略的Jenkins基础架构修复问题

龙智—DevSecOps解决方案

ci cicd jenkins CI/CD CloudBees

web3 NFT代币铸造盲盒抽奖质押dapp游戏系统开发智能合约技术分析

开发微hkkf5566

研发效能怎么分析?方法论、模型、误区都在这里了

思码逸研发效能

研发效能

你没有必要完全辞去工作

宇宙之一粟

创业 个人成长 思维方式 工作 打工人

“鼎新杯”案例精选 | 中国联通数字化研发低代码平台为一线赋能

信通院IOMM数字化转型团队

低代码 数字化转型 中国联通

GPU推理服务性能优化之路 | 得物技术

得物技术

Python

首届玄铁 RISC-V 生态大会上海举办 龙蜥操作系统持续深度参与标准共建

OpenAnolis小助手

芯片 risc-v 龙蜥操作系统 平头哥 生态大会

柏拉图会反对ChatGPT吗?~深度好文| 社区征文

李韧

人工智能 ChatGPT

基于 Flink 流计算实现的股票交易实时资产应用

Apache Flink

大数据 flink 实时计算

这几个群,程序员可千万不要进!

禅道项目管理

项目管理 程序员 项目管理工具

从“13天”到“0天”延时,揭秘火山引擎DataLeap SLA保障最佳实践

字节跳动数据平台

大数据 数据治理 数据研发 企业号 3 月 PK 榜

基于Mindspore2.0的GPT2预训练模型迁移教程

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

联合解决方案 | 亚信科技AntDB数据库携手浪潮K1 Power赋能关键行业数字化转型,助力新基建

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 3 月 PK 榜

AI脸部美容,一键让你变瘦变美变老变年轻

极客飞兔

php Python AI PaddleGAN 人脸编辑

不用写代码就能开发小程序,浅看产品经理是怎么做到的?

这我可不懂

低代码 低代码平台 JNPF

万字分享:以Code Review 最佳实践,解答降本增效 or 增加成本之问(上)

极狐GitLab

DevOps Code Review 代码安全 代码评审 安全左移

数据标注工具,多维度体验优化|ModelWhale 版本更新

ModelWhale

人工智能 标注 标注工具 团队协同 模型管理

CleanMyMac4.20汉化免费版Mac清理工具

茶色酒

CleanMyMac4.20

DBT 收购 Transform,指标平台已成现代数据栈关键拼图

Kyligence

数据分析 指标管理

MQTT 5.0消息发布流程

EMQ映云科技

物联网 IoT mqtt QoS 企业号 3 月 PK 榜

Atlassian Server用户新选择 | 云版和本地部署的数据中心版,总有一个适合您

龙智—DevSecOps解决方案

迁移 Server Atlassian

Oracle ASM磁盘组配置、日常运维、故障处理等操作资料汇总

墨天轮

数据库 oracle asm 磁盘管理

思码逸任晶磊:ChatGPT 时代的软件研发数据与效能提升

思码逸研发效能

机器学习 研发效能 ChatGPT

隔离级别+事务+连接池+锁

hasWhere

镭速传输是如何管理大文件跨国传输的

镭速

并发编程详解:从理论基础到案例实战(十三个工具类,十大设计模式)

程序知音

Java 并发编程 设计模式 java架构 后端技术

携程技术演进之路_技术管理_李小林_InfoQ精选文章