经历了 5 年的发展,滴滴出行现已拥有 4.5 亿用户、超过 2100 万车主,业务覆盖 400+ 城市。

在创业初期,为了快速拥抱业务,架构的建设在体系化、完善度等方面会有所不足。随着时间的推移,架构在可持续性、稳定性等方面不断进步。

2017 年 12 月 1 日,在 51CTO 主办的 WOTD 2017 全球软件开发技术峰会主会场上,滴滴出行执行总监赖春波做了主题为《如何构建滴滴出行业务中台》的精彩演讲。

从中我们可以了解到滴滴出行构建业务中台的原因及在发展过程中遇到的问题和应对的策略。

构建业务中台的四个原因

2015 年末,滴滴出行在短时间内形成了包括快车、出租车、专车、顺风车、代驾等多业务的垂直化架构。随之,滴滴启动了中台战略整合业务系统。

决定构建业务中台主要出于四方面考虑:专业深度、人力资源、用户体验、全局打通。

专业深度。由于是多业务垂直化的架构,会有多个团队开发同样的架构,这就需要很多的工程师。

每个团队都是用最快速的方式构建流程,所以技术很难做深。这样一来,导致客户端的流畅度不高,后端不稳定,影响可扩展性。

人力资源。从原则上来说把每个团队加到足够的人,每个架构都能有很好的发展。但工程师的薪资都非常高,招聘大量工程师来做同样的架构,研发成本高昂。还有些时候,即使你愿意花钱,也招聘不到合适的人。

用户体验。流畅度、稳定性、扩展性、界面、交易流程等都是影响用户体验的重要因素。

在当时的组织结构和研发情况下,会出现业务的应用场景不同,交易流程却相同的问题,这样很影响用户的体验。

全局打通。所有业务本质都是出行,出行本质具有协同效应。但在各自独立发展情况下,业务间完全没有协同性,在构建中台过程中,我们可以逐步把协同性建立起来。

构建出行业务中台的挑战

构建出行业务中台并不是只有好处,也一定会带来很多问题,最大的问题是软件复杂度。

从业务角度来说,把所有业务合并到一个体系下,本身就是很难的事,再加上滴滴出行是实时性 O2O 业务,场景差异很大,而且作为互联网公司,不仅有很多需求不明确,还会不断持续变化。

这种情况下,想要用一套相对稳定、相对固定的架构去支持所有业务,十分困难。

从组织角度来说,滴滴出行有多个事业部,业务涉及 400 多个城市,组织和个人的变化更快。

针对软件复杂度的挑战,中台制定了最基本的实现目标:在业务多元化发展的组织中,去构建一套工程架构,构建一套组织结构及对应的管理机制,以保证业务可持续的又快又好的发展。

滴滴业务中台的架构实践

在谈具体对策与实践之前,先来看看整个业务中台的架构设计,如下图:

整个的架构设计分几个边界的上下文,好处在于把相关性不强的逻辑拆开,同时在一个相关性下面,通过分层对业务进行更好的建模。

调度层作为入口去牵引多个业务线,业务流程层为调度层做服务,状态智能层用来支持上面的两层。

在对业务和产品进行更好建模的基础上,进行了“五化”:服务化、异步化、配置化、插件化、数据化。

服务化

服务化很常见,以下单为例,如下图:

下单流程能够调用很多服务,在多个层次,以接口层次结果进行拆解。

这里需要提醒的是服务化要注意如下三点:

服务之间的协议和规范要建立好。

注意控制力度,力度太小、太大都会有问题。

随着时间的发展,服务化本身要不断的演进。

异步化

对每个事件的非核心或不需要实时反馈给客户端的逻辑进行拆解,核心的主流程会变简洁。对非核心的逻辑在事件上做订阅之后,进行二级处理。

以结束订单为例,如下图:

结束订单的时候有很多逻辑要做,但是都是通过 MysqlBinlog 处理或 MQ 处理。

配置化

服务化和异步化能解决很多迭代效率的问题,但由于系统、业务的复杂性,各个业务都有些差异,体现在不同的产品线、城市、区域、时间等等。

配置化的核心是对这些进行建模,把每个对象模型化,抽象成 ID,在不同的服务化里把这些可配置的能力进行抽象。

具体抽象过程,如下图:

第一级抽象采用的是类 iptables 的规则引擎判定产品分类,第二级的规则引擎由模块自定义。

所有配置化都是用的自生成平台,要配置什么,自定义配置即可,这个过程是动态进行的。

当前业务中台已经可以支持上千个配置点,比如不同层次的计价规则不一样、不同产品线的车样子不同、不同的场景,如拼车和接送机,管控规则也不一样等等。

插件化

配置化解决的是业务线差异问题,但如遇到逻辑差异较大的情况,就要做插件,统称为 FPI。

在 FPI 的能力上,不同的团队可以开发很多插件,在特定的配置点下,对它的逻辑进行加载。

真正业务流程到这儿,可以调起它对应的插件做出来。对于一些没有差异化需求的业务,可以用开发的 default 逻辑,这是更极端的灵活性的体现。

有灵活性的体现后,团队还可以做一些组织上的调整,原来每个服务或者平台是一个垂直化的架构,有些团队是横向,是 FT,有些 FT 是接送机 FT,专门做接送机的事情。

通过插件的形式在每个系统加载它的插件,它就可以跟着业务思考、跟着产品思考这个业务该怎么走、这个产品怎么演化。

相对的逻辑是更加专注的,这也带来很好的组织结构对中台的适应性。

数据化

在大数据时代,数据是不得不考虑的问题,所以在业务中台,要实现全局打通,本质是要把数据打通。

所以我们制定了离线分析与在线决策的方案,如下图:

第一个是离线做分析,可以做数据血缘、模型训练,同时可以把它放到在线决策层面,构建很好的智能客户引擎和交易引擎,这个可以干预,因为干预可以让升舱或者多业务线的清单成为可能。

因为有这样的决策,使在线服务的管控和判断做得更加智能。

数据化方面,需要注意以下三方面:

让数据更加规范和标准化。

构建完整的数据流,从在线到离线,从日志到模型的在线使用。

引入机器学习的算法、人工智能的算法去构建在线数据智能的决策。

这是业务中台的五个对策,主要解决传统的系统架构问题,怎么做到高耦合和内聚,怎么提高迭代。

配置化和插件化解决灵活性问题,把灵活性开放给不同团队。数据化实际上是中台赋能业务,有中台的赋能才能变得更好。

经验总结

业务中台从无到有,到被应用的实践过程中,积累了很多实战经验。主要分享以下几点:

第一点:成功实现最大的业务孵化中台是滴滴出行构建业务中台最大的经验。

因为最大的业务最复杂,把最复杂的业务搞定,用最复杂的业务落地别的业务会容易。也就是从快车开始做,逐步整合专车、出租车、代驾等。

第二点:稳定,中台对业务有收益,最根本的是保证稳定,稳定是发展的前提和基础。

在整个构建中台的过程中非常重视稳定性,有各种机制,包括灰度发布、分层次发布、流量回放、全链路压测等等,保证代码的质量和系统的稳定。

第三点:加强沟通,平衡多业务的优先级。

滴滴出行有多个业务,有很多大区和城市,每个地方都有很多需求,要有一套机制和资源池。

如何保证相应每个业务都能按照所对应的在公司的重要性来获取部分资源,要保障它的灵活性和效率,所以要有很多沟通工作,有很多平衡的工作。

第四点:中台系统要不断演进,不能一成不变,要发现问题、解决问题。

业务中台不是一蹴而就,而是要在发展过程中不断的变化,持续迭代。

第五点: “没有最好,只有最合适”!

所有中台都一定是适合某个公司特点,最合适的中台是当你深入了解业务、产品、系统、组织,而且不仅了解今天在哪里,还要了解过去是怎么演变而来,未来又会怎么演化。

只有当了解所有的东西之后,才能做出最好的中台架构设计。本文转载自 51CTO技术栈

作者:王雪燕

编辑:陶家龙、孙淑娟

原文链接

https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw%3D%3D&mid=2653193327&idx=1&sn=cb2f26f80d2c8618be3b57a588514e53&chksm=8c99f6b5bbee7fa300f499948a36ac36df9d212761aeefcaf975c2b2c38af352f84d938e75cf&mpshare=1&scene=23&srcid=03017hnyRO0omFoQf7Nu2RuC%23rd

服务推荐

  • 蜻蜓代理
  • 代理ip
  • 微信域名拦截检测
  • 微信域名检测api

滴滴出行的业务中台实践相关推荐

  1. 从滴滴出行业务中台实践聊聊如何构建大中台架构

    经历了 5 年的发展,滴滴出行现已拥有 4.5 亿用户.超过 2100 万车主,业务覆盖 400+ 城市. 在创业初期,为了快速拥抱业务,架构的建设在体系化.完善度等方面会有所不足.随着时间的推移,架 ...

  2. 滴滴出行平台业务架构演进

    桔妹导读:为了满足不同用户在价格.体验等方面的差异化诉求,滴滴提供了越来越丰富的品类,这些品类大体流程是类似的,在一些细节体验上有差异,一套架构如何兼顾隔离和复用,同时支持这些品类,且看滴滴服务端技术 ...

  3. ApacheKafka在滴滴出行商业化探索与实践

    作者:禅与计算机程序设计艺术 1.简介 Apache Kafka是一个开源分布式消息系统,由LinkedIn公司开发并开源.它最初设计用于构建实时流处理平台,能够通过多种传输协议对数据进行多样化的发布 ...

  4. 滴滴业务中台架构之道:来自技术总监的思考

    按:滴滴出行在创业初期,为了快速拥抱业务,架构的建设在体系化.完善度等方面会有所不足.随着时间的推移,架构在可持续性.稳定性等方面不断进步.这就是一种迭代思想,长期来看,没有系统是设计出来的.靠迭代演 ...

  5. 中台实践:数字化转型方法论与解决方案

    一部分 数智化转型与中台落地路径 1章 数智化转型 1.1 数字化和智能化浪潮2 1.1.1 数智化领域4 1.1.2 数智化思维8 1.2 数智化转型路径9 1.2.1 关键路径10 1.2.2 数 ...

  6. 滴滴业务中台架构之术:来自技术专家的实践

    按:业务中台是什么?阿里打个嘴炮,每家公司理解的都不一样.从业务技术的角度来看,意味着什么?没有答案,答案在每个实践者的心里.本文来自滴滴何修峰的分享,算是术方面的知识.还有一篇在道方面的,可以配合着 ...

  7. 滴滴出行小程序体积优化实践

    在19年下半年,为了将微信钱包/支付宝九宫格入口的滴滴出行迁移为小程序,团队对小程序进行了大量的功能升级与补全.在整个过程中也遇到并克服了一系列问题和挑战,其中包体积问题尤为突出.接下来全面介绍一下滴 ...

  8. HBase在滴滴出行的应用场景和最佳实践

    来源:极客头条,作者:李扬,滴滴出行资深软件开发工程师.2015年加入滴滴出行基础平台部,主要负责HBase和Phoenix以及相关分布式存储技术.在滴滴之前,曾在新浪担任数据工程师,专注于分布式计算 ...

  9. 指数级增长背后,滴滴出行业务系统的架构升级

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/52225634 本文内容转载于网络,见文末所标明出处. 成立四年,估值已超260亿美元 ...

最新文章

  1. 深度观察|工业物联网的应用场景和市场潜力
  2. Windows 技术篇-Edge浏览器升级方法实例演示,微软官方应用商店访问下载edge慢解决方法,edge安装包获取
  3. aws iot 连接时间_AWS IoT Core 定价
  4. Divide it!
  5. 9行代码AC——HDU 6857 -Clockwise or Counterclockwise(2020 Multi-University Training Contest 8)(判断三点顺序)
  6. javascript --- 原生的拖拽功能实现
  7. python 多线程读写文件错误_python多线程老是报错。大神帮忙看看哈?
  8. LeetCode 295. Find Median from Data Stream
  9. Holer实现手机APP应用外网访问本地WEB应用
  10. 浏览器渲染机制面试_面试 09-01.浏览器渲染机制
  11. java jsonobject 清空_有没有办法,我可以清空整个JSONObject – java
  12. 创新声卡KX驱动调试设置及效果器使用详解
  13. Delphi第三方控件大比拼
  14. Linux的快速使用_jdk安装_tomcat安装_mysql安装-尚学堂~百战程序员学习笔记
  15. bestpay学习 - - 一个轻量级的完全开源项目
  16. 岁月温柔-9 妈妈吃人参果的后遗症
  17. uview 瀑布流_最简单的微信小程序瀑布流布局方法
  18. 机器学习 之 Kmeans聚类
  19. uva 10118 - Free Candies(记忆化搜索)
  20. 机器学习与分布式机器学习_机器学习治疗抑郁症

热门文章

  1. 【课后习题】高等数学第七版下第九章 多元函数微分法及其应用 第九节 二元函数的泰勒公式
  2. Ubuntu18.04更换中文界面且中文输入法pinyin不可用打不出汉字解决方法
  3. java monogodb 图片 pdf 下载添加单个水印 铺满水印
  4. Abaqus和Mimics在人体组织领域的应用
  5. 使用计算机断开终端连接,“由于终端连接目前正在忙于处理一个连接断开连接复位或删除操作...
  6. 几款主流的App统计工具解析
  7. 聚合支付减少商户结算成本并收取增值收益
  8. Git 删除本地代码文件后重新拉取服务器最新代码
  9. CEVA-X16自由式编程-2-编写第一个“应用程序”
  10. java 获取url 号后面,java获取url地址后缀名