红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

Uber 从单体架构转向微服务架构

  • 2015-10-22
  • 本文字数:1025 字

    阅读完需:约 3 分钟

在成立之初,Uber 采用单体架构构建了一款仅服务于一座城市的产品。但随着 Uber 的迅速发展、核心领域模型的扩大,组件成了紧耦合的,持续集成成了很大的负担。新增特性、Bug 修复、技术债务解决,全都在单个中进行,这极其困难。因此,他们决定效仿那些快速成长的公司(如亚马逊、Netflix、Twitter 等)将单个代码库拆分成多个代码库,由单体架构迁移到微服务架构。近日, Uber 官方网站介绍了这一迁移过程

他们之所以迁移到微服务架构,主要是为了达成以下三个目标。

易见性

在迁移之前,他们已经有500 多个服务,服务发现变得非常困难。每个服务都有自己的结构,服务的用法不能做到显而易见。通常,服务提供的 REST RPC 端点都是弱契约。向 REST API 添加 JSON 模式可以提高安全性及改进针对服务的开发过程,但不易于编写或维护。总之,无法保证容错性或延迟,也没有标准的方法处理客户端超时和中断或者确保一个服务中断不影响其它服务。这些缺陷也影响了系统弹性。因此,他们需要一种可以提供类型安全、验证且具备容错性的标准通信方法。而且,该方法还要满足如下要求:

  • 提供客户端库的方式要简单;
  • 提供跨语言支持;
  • 超时和重试策略可调整;
  • 测试和开发高效。

因此,他们认为 Uber 需要一种已有的接口定义语言(IDL),而且该语言还提供了大量预构建的工具。经过评估,他们发现, Apache Thrift 最能满足他们的需求。Thrift 提供一个构建可扩展、跨语言服务的库和工具集合。数据类型和服务接口定义在一个语言无关的文件中,然后生成代码将服务之间RPC 消息的传递和编码抽象出来,而这些服务是使用不同语言编写的。

安全性

Thrift 最吸引他们的地方是其安全性。Thrift 通过将服务绑定到严格的契约来确保安全性。该契约描述了服务的交互方式,包括如何调用服务、提供什么输入以及会产生什么输出。

弹性

他们从 Netflix 的 Hystrix 库和 Twitter 的 Finagle 库获得了处理系统弹性问题的灵感,编写了一个可以确保客户端成功处理失败场景的库。他们后续会对此进行详细介绍。

遗憾的是,Thrift 工具集相对还不成熟,面向Python 和Node 的工具也不够多。这有个风险,就是他们可能需要花费大量的时间创建这样的工具。另外,身份验证和跨服务跟踪也是他们面临的两个挑战。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-10-22 19:006248
用户头像

发布了 1008 篇内容, 共 372.0 次阅读, 收获喜欢 340 次。

关注

评论

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

华为云GaussDB打造金融行业坚实数据底座,共创数字金融新未来

清欢科技

【论文复现】Panoptic Deeplab(全景分割PyTorch)

华为云开发者联盟

人工智能 华为云 论文复现

jquery 事件绑定及取消 bind live delegate on one区别 (超详细且通俗易懂)

Ankiee

jquery 11月月更

DHorse系列文章之镜像制作

tiandizhiguai

云原生 Serverless Kubernetes

刘强东给京东高管降薪:2千多位总监兄弟工资打8折,并拿出100亿保障”兄弟“基础住房

小小怪下士

程序员 京东 刘强东

Zebec开启多链布局,流支付生态持续扩张

西柚子

offset新探索:双管齐下,加速大数据量查询

IT科技苏辞

如何在 Rocky Linux 上安装 Apache Kafka?

wljslmz

Apache kafka 11月月更

python常用内置函数用法精要(一)

乔乔

11月月更

kafka实战】分区重分配可能出现的问题和排查问题思路

石臻臻的杂货铺

kafka Kafka实战 11月月更

NFT盲盒链游DAPP系统开发搭建技术

薇電13242772558

web3

华为再次入选2022年Gartner® SIEM魔力象限

科技怪授

华为云

不懂“数据服务”,聊什么“数据中台”

雨果

数据中台 数据服务

为什么要用 Tair 来服务低延时场景 - 从购物车升级说起

阿里技术

内存数据库 低延时

大厂数据开发老司机送给数据工程师的10条建议,建议先收藏再细品!

雨果

数据开发

OneFlow-ONNX v0.6.0正式发布

OneFlow

人工智能 深度学习

Baklib帮助中心:自助服务指南

Baklib

客户服务 帮助中心

5G+云渲染,助力虚拟仿真医学实训

Finovy Cloud

云渲染

2023年值得学习的云计算技术有哪些?

wljslmz

云计算 11月月更

Nginx负载均衡配置、限流配置、Https配置详解

C++后台开发

nginx 负载均衡 HTTP 后端开发 C++开发

温州有等保测评机构吗?听说没有是吗?

行云管家

等保 等保测评

全面焕新|详解 Grafana v9.0.x 新增功能特性

阿里巴巴云原生

阿里云 云原生 Grafana 新功能

华为云安全亮相世界互联网大会

科技怪授

华为云

使用 Bytebase 管理 Rainbond 上的应用数据库

北京好雨科技有限公司

集世界杯+GameFi元素的MetaElfLand,推出世界杯专场活动

西柚子

Serverless 的前世今生

Serverless Devs

双机热备与数据备份的关系说明一二

行云管家

数据备份 双机热备

Java岗位必备技能SpringBoot的9道面试题集锦

钟奕礼

Java java程序员 java面试 java编程

二面被RocketMQ虐后,狂刷这套实战到源码手册,再战阿里

钟奕礼

Java Java 面试 java程序员 java编程

集世界杯+GameFi元素的MetaElfLand,为何将在世界杯期间爆发?

鳄鱼视界

全球6位IT负责人解读数字化转型不断失败的原因

雨果

数字化转型

Uber从单体架构转向微服务架构_语言 & 开发_谢丽_InfoQ精选文章