【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:006264
用户头像

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

关注

评论

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

低代码开发不可能取代程序员

互联网工科生

低代码

Python 集合(Sets)1

小万哥

Python 程序员 软件 后端 开发

除了Office,这8款好用的办公软件也值得推荐!

彭宏豪95

效率 职场 软件推荐 在线白板 办公软件

Apache IoTDB 作为合作伙伴参加 Doris Summit Asia 2023!

Apache IoTDB

天谋科技与华为鲲鹏完成兼容性互认证

Apache IoTDB

华为云持续扎根软件工具生态,突破10倍研发效能赋能千行百业

YG科技

Redis Scan原理

宁静知行者

redis 底层原理

新手必看!Bitget Wallet 和 Metamask 到底该选谁?真实对比评测

BlockChain先知

代码混淆界面介绍

雪奈椰子

基于 ACK Fluid 的混合云优化数据访问(三):加速第三方存储的读访问,降本增效并行

阿里巴巴云原生

阿里云 云原生 容器服务

WorkPlus私有部署即时通信助力企业信息安全与高效协作

WorkPlus

OpenHarmony嵌套类对象属性变化:@Observed装饰器和@ObjectLink装饰器

OpenHarmony开发者

华为云API图像搜索ImageSearch的快捷性—AI帮助您快速归类图片

YG科技

Web3新手入门9大必备宝藏APP

EOSdreamer111

终极对决!Bitget Wallet vs Metamask 钱包大比较!隐藏功能曝光

石头财经

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz AIGC

别再说被八股文害惨了!GitHub阿里Java面试题库标星145K不无道理

程序员万金游

#java #面试 #编程 #程序员 #Mysql

华为云API图像识别Image的趣味性—AI识别迈克尔·杰克逊

YG科技

最高评级!华为云CodeArts Board获信通院软件研发效能度量平台先进级认证

YG科技

Web3 新手攻略:9个不可或缺的APP助力你踏入加密领域

股市老人

Linux是什么,其特点是啥

智趣匠

区块链数字货币交易所系统软件开发详情(源码)

西安链酷科技

交易所源码 交易所搭建

国产化即时通讯平台WorkPlus,助力企业实现自主可控的沟通与协作

WorkPlus

设计师、教师、奶爸从零开始做提示词,文心一言APP让提示词“人人可用”

彭飞

百度世界2023剧透丨肖阳:「语义检索技术+大语言模型」融合,百度「新搜索」将亮相

彭飞

百度世界2023剧透丨百度王颖:百度文库每周上线2-3个AI新功能,累计使用次数近亿

彭飞

华为云发布CodeArts Governance开源治理服务,开源使用更安心

YG科技

请查收:赛博威TPM营销费用管理指南——费用管理类型篇

赛博威科技

营销数字化

如何保持前端开发者的竞争力

这我可不懂

前端开发

软件测试/测试开发丨App自动化—CSS 定位与原生定位

测试人

Python 程序员 软件测试 自动化测试 测试开发

WorkPlus一站式解决方案,助力企业构建统一门户系统

WorkPlus

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