年度最大IPO!Uber背后的技术力量
作者 | 赵钰莹、小智
美国时间 5 月 10 日午间,纳斯达克迎来了年度最大 IPO—Uber 宣布正式以每股 45 美元(位于区间下限)的价格发行股票。InfoQ 整理了近年来 Uber 公司的技术实践与开源动作,以飨读者。
Uber 上市
美国时间 5 月 10 日午间,经过了漫长的等待,Uber 终于正式敲钟上市,其最终发行价定为每股 45 美元(位于区间下限),远低于公众预期。即便如此,按照此前公开的招股文件计算,Uber 仍然可筹资 81 亿美元,估值为 824 亿美元,这几乎是福特和通用汽车的市值总和。
Uber 选择了一名早期女性员工 Austin Geidt 敲上市钟。2010 年,Geidt 以实习生身份加入 Uber,目前担任自动驾驶技术部门战略主管。Uber 现任 CEO Khosrowshahi、全球高管、司机代表以及一家使用 Uber 外卖服务的餐厅老板均被邀请上台,见证这一历史性时刻。
前 Uber 中国员工的狂欢
对于数百名前 Uber 中国区员工们来说,这同样是件值得庆祝的事情。 “我们最近经常聚会,大家已经开始庆祝了。”前 Uber 中国员工对媒体表示。
“其实股票价值并不是很多,象征性地吧。但是全员持股且一直持有,可以说是细节致胜了。”另一名前 Uber 中国员工认为 Uber 的做法非常负责任。据了解,前 Uber 中国员工已经陆续收到 Uber 发来的邮件,确认他们持有的 Uber 股票权益,内容大致如下:
“您被认定为 Uber 前员工,并持有未兑现的 RSU(限制权益股票),股票期权,或者(SAR)股票增值分红。在给您发送与未兑现资产相关的信息时,Uber 将基于您历史工作档案中记录的信息。这其中将包括您的住址或寄信地址、银行支付信息......”据了解,前 Uber 中国全部员工均有持股,但早期进入员工持有 Global 股票加 China 期权,后面的员工则仅有 China 期权,这在 Uber 中国并入滴滴后,便全部转为滴滴期权。持有 Global 股票且工作满 4 年的员工预计可拿到几十万元人民币。
Uber 背后的技术力量
在过去 10 年,InfoQ 对 Uber 团队进行了全方位报道,包括其在大数据、人工智能、架构设计等多个维度的技术实践,以下挑选了部分精彩内容,以飨读者,并以此感念 Uber 技术专家在公司快速成长过程中付出的努力。
Uber 技术实践
- Uber 技术栈全解析
Uber 的工程师团队在其博客上详细记录了整个 Uber 的技术栈细节。
点击 阅读原文 查看 InfoQ 官网策划的 Uber 上市背后的技术力量特别专栏即可阅读。- Uber:100 PB 大数据平台演化简史
Uber 的工程团队撰写一篇文章,介绍了他们的大数据平台如何从传统的基于关系型数据库的 ETL 作业演变为基于 Hadoop 和 Spark 的平台。可扩展的摄取模型、标准传输格式和用于增量更新的自定义库是这个平台的关键组件。
点击 阅读原文 查看 InfoQ 官网策划的 Uber 上市背后的技术力量特别专栏即可阅读。- 放弃 Python,Uber 用 Go 重写 Schemaless 数据库的分片层(点击标题即可阅读)
2014 年,Uber 构建了可扩展的容错数据库 Schemaless,但随着业务的增长,原实现方式对资源消耗更多,同时请求延迟也在增加,为了保持 Schemaless 的性能,Uber 在不影响生产服务的情况下用 Go 重写了 Schemaless 数据库的分片层,完成了将产品系统从旧实现迁移到新实现的 Frontless 项目。
- Uber 为何放弃 Node.js 转用 Go 语言构建高 QPS 服务?(点击标题即可阅读)
Uber 广大服务设计团队普遍采用 Node.js,在 Node.js 的使用方面也有着丰富的经验,然而他们却在构建高 QPS 服务时转向了 Go。Go 在高吞吐量和低延迟的需求、CPU 密集型负载、非中断式的后台加载上满足了 Uber 的需求,还有一些其他的原因。
- Uber 的底层存储从 Postgres 换成 MySQL 之后(点击标题即可阅读)
早期的 Uber 后台软件由 Python 写成,数据存储使用 Postgres。后期随着业务的飞速发展后台架构也变化巨大,演进成了微服务加数据平台。数据存储也由 Postgres 变成了 Schemaless——Uber 自主研发的以 MySQL 做为底层的高可用数据库。
- Uber 架构重构的十二条军规(点击标题即可阅读)
对于开发者来说,架构设计是软件研发过程中最重要的一环,所谓没有图纸,就建不了房子。在遍地 App 的互联网时代,架构设计有了一些比较成熟的模式,开发者和架构师也可以经常借鉴。在这里,跟大家分享一下 Uber 前工程主管 Raffi Krikorian 的 12 条规则,并附上一些解读,希望对大家有所启发。
- 构建 Uber 端到端技术栈的十条经验(点击标题即可阅读)
本文作者在 Uber 这几年,做了很多系统稳定性及可扩展性的工作, 也包括很多快速迭代试错的产品,另外还做了一些移动开发的工作,因此他对 Uber 的端到端的技术栈还比较熟悉。本文以他的经历为例跟大家分享一下如何以 Uber 的方式快速稳定的做一个端到端的大型应用。他刚加入 Uber 时,Uber 正处于飞速成长期。这样的情况对之前工程师设计的简单系统造成了极大的压力。这是他在实战中的系统设计的经验。
Uber 开源
- Uber 开源 Fusion.js:一个基于插件架构的通用 Web 框架
可能很多人都不知道,Uber 其实开发了很多基于 Web 的应用程序,可能有数百个,而且这个数字还在不断增加中,它们中的大部分被用在公司内部,用于管理各种业务。我们知道,Web 技术变化得很快,而最佳技术实践也在不断发展。为数百名 Web 工程师提供高质量的框架和功能,同时又要保持 Web 平台的动态特性,一直以来都是一个巨大的挑战。为了应对这一挑战,Uber 的 Web 平台团队开发了 Fusion.js,一个开源的 Web 框架,用于简化 Web 开发,并构建出高性能的轻量级 Web 应用程序。
点击 阅读原文 查看 InfoQ 官网策划的 Uber 上市背后的技术力量特别专栏即可阅读。- Uber 开源 TensorFlow 框架工具箱 Ludwig,无需编码即可进行深度学习开发
Uber 开源并发布了它们开发的 Ludwig,这是一款基于 Google TensorFlow 框架上的开源工具箱。藉由 Ludwig,用户无需再编写任何代码即可进行深度学习的开发。Ludwig 的独特之处在于它能够帮助非专家更容易地理解深度学习,并为经验丰富的机器学习开发者和研究人员提供更快的模型改进迭代周期。通过使用 Ludwig,专家和研究人员可以简化原型设计过程及数据处理,这样他们就可以专注于开发深度学习体系架构,而不是深陷数据整理。
点击 阅读原文 查看 InfoQ 官网策划的 Uber 上市背后的技术力量特别专栏即可阅读。- Uber 开源 Marmaray:基于 Hadoop 的通用数据摄取和分散框架
三年前,Uber 采用 Apache Hadoop 作为数据平台,从而可以跨计算机集群管理数 PB 的数据。但是,因为 Uber 有很多团队、工具和数据源,所以需要一种可靠的方式来摄取和分散数据。Marmaray 是 Uber 开源的 Apache Hadoop 数据提取和分散框架。Marmaray 由 Uber 的 Hadoop 平台团队设计和开发,是一个建立在 Hadoop 生态系统之上的基于插件的框架。用户可以新增插件以便从任何来源摄取数据,并利用 Apache Spark 将数据分散到接收器上。
点击 阅读原文 查看 InfoQ 官网策划的 Uber 上市背后的技术力量特别专栏即可阅读。- Uber 开源服务 Kraken:一款 P2P Docker 容器仓库
Uber 于 3 月 5 日发布了 Kraken,这是一个开源的点对点(P2P)Docker 容器仓库。Kraken 旨在为大规模系统提供 Docker 镜像服务,解决跨区域支持、性能瓶颈和混合云环境所面临的挑战。Kraken 大致基于 BitTorrent 协议,与 Docker registry API 兼容,并提供可配置的存储后端,诸如 S3 和 HDFS 等。Kraken 最初于 2018 年初在优步内部开始部署,随后向开源社区公开。
点击 了解更多 查看 InfoQ 官网策划的 Uber 上市背后的技术力量特别专栏即可阅读。