Uber将整体式API拆分为微服务

Uber工程师Emily Reinhold最近介绍了他们是如何将整体式API拆分为灵活的模块化微服务体系结构的。她重点介绍了在Uber的迁移工作中,设计和体系结构方面几个最重要的考虑。

根据 Reinhold的介绍,迁移至微服务的主要目标在于在三个指标方面实现更好的缩放性:应对流量的激增,更轻松地增添新功能,以及转为使用一种在组织迅速增长的情况下能轻松适应规模变化的体系结构。

为了降低微服务之间的耦合,Uber工程师在常规设计方面做出了一些决策:

MVCS,对众所周知的模型-视图-控制器(Model-View-Controller)方法进行的扩展,可明确包含服务层并承载应用程序逻辑。这样Uber就可以在业务逻辑和持久层之间实现解耦,借此更容易地修改持久层。 UDR,Uber的全球复制数据存储,该技术取代了PostgreSQL,使得Uber可以通过多个数据中心同时为用户提供乘车服务。

此外为了应对大量服务所造成的后续问题,Uber工程师还对体系结构进行了一些重大更改:

异步网络:为了处理数量日益增加的服务请求,Uber工程师通过一种基于Python事件环路(Event-loop)的异步网络库Tornado实现了同时缩放至数万个开放连接的能力。使用Tornado的优势之一在于该技术可与Uber现有的Python网络代码集成,借此构建结构化的异步范式。 服务的发现和弹性:面对数量激增的服务,关键在于要能发现服务并找出故障点。例如需要收集故障率和SLA违背等指标,检测运行状况不正常的主机,通过短路(Circuit breaking)防止连锁故障。Uber通过Hyperbahn使用TChannel解决了这一问题,这是一种他们自行开发并已开源的,适用于RPC的网络多工(Multiplexing)和帧通讯协议。 严格的接口定义:Uber选择使用Thrift通过IDL定义服务接口,并借此生成不同语言的客户端源文件。Thrift使得他们能够检测出客户发起的,与接口定义规范不符的调用。

最后Reinhold还提到Uber会通过下列基本原则确保生产环境正常运行:

通过负载测试发现瓶颈和断点。 通过容器实现更高的硬件利用率。 通过模拟服务中断确保系统能够顺利恢复并发现可能存在的弱点。

Emily Reinhold也曾在上一次纽约QCon活动中讨论过这些话题。

====================================分割线================================

本文转自d1net(转载)

时间: 2024-10-24 05:38:56

Uber将整体式API拆分为微服务的相关文章

Red Hat: API层是微服务架构成功的关键

Microservices作为一项在云中部署应用和服务的新技术已成为当下最新的热门话题.但大部分围绕microservices的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点. 企业和服务提供商正在寻找更好的方法将应用程序部署在云环境中,microservices被认为是未来的方向.通过将应用和服务分解成更小的.松散耦合的组件,它们可以更加容易升级和扩展,理论上是这样. 最近一场关于"容器技术和虚拟机是否是实现微服务的最佳技术"的辩论在加州硅谷的OpenSt

微服务架构中API网关的角色

[编者的话]本文主要讲述了Mashape的首席技术执行官Palladino对API网关的详细介绍,以及API网关在微服务中所起的作用,同时介绍了Mashape的一款开源API网关Kong. 本文讲的是微服务架构中API网关的角色API网关提供商Mashape的首席技术执行官Marco Palladino预测,尽管它们在命名方面存在差异,但新出现的服务网格并不完全不同于API网关,两者之间的相似性会随着时间的推移而不断增长. Palladino指出,实际上这两种技术提供的功能很相似.API网关,比

微服务架构实战:Swagger规范RESTful API

REST的引入 本文讲的是微服务架构实战:Swagger规范RESTful API,随着微服务架构的广泛流行,REST风格受到越来越多的关注.我们先来看一下REST在WIKI的定义及五大关键点: 什么是统一接口? REST要求,必须通过统一的接口来对资源执行各种操作.对于每个资源只能执行一组有限的操作.以HTTP/1.1协议为例,此协议定义了一个操作资源的统一接口,主要包括以下内容: 7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS HTTP头信息(

为什么微服务需要API网关?

本文讲的是为什么微服务需要API网关?[编者的话]James Higginbotham.API架构师,现供职于LaunchAny.这是一家API咨询公司,帮助其合作伙伴完善API设计与管理. 随着以API产品化和以其为中心的IT计划的兴起,API网关和管理层变得很通用.我们应该为微服务考虑API网关吗?如果是这样,它们能提供什么收益吗? API网关是什么? API网关可以提供一个单独且统一的API入口用于访问内部一个或多个API.它们典型的会提供访问频率限制层和安全层.但诸如Tyk.io这样的A

微服务架构的优势与不足

微服务正在博客.社交媒体讨论组和会议演讲中获得越来越多的关注,在Gartner的2014 Hype Cycle上它的排名非常靠前.同时,软件社区中也有不少持怀疑论者,认为微服务不是什么新东西.Naysayers认为这就是SOA架构的重新包装.然 而,尽管存在着不同的争论,微服务架构模式却正在为敏捷部署以及复杂企业应用实施提供巨大的帮助. 首先我们看看为什么要使用微服务. 开发单体式应用 假设你正准备开发一款与Uber和Hailo竞争的出租车调度软件,经过初步会议和需求分析,你可能会手动或者使用基

微服务实战(一):微服务架构的优势与不足

本文讲的是微服务实战(一):微服务架构的优势与不足,[编者的话]本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战.正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足. 这篇文章作者是Chris Richardson,他是早期基于Java的Amazonite EC2 PaaS平台CloudFoundry.com的创始人.现在他为企业提供如何开发和部署应用的咨询服务.他也经常在http://microservice

品高公开课 | 基于Docker容器的微服务架构实践

小编的话 "品高公开课"系列文章意在分享技术牛人的知识干货,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞! 微服务以一种全新的架构设计模式,牵动了互联网应用从设计到运维整个流程方法论的变革. 而以Docker为代表的容器技术则为微服务理念提供了匹配的实现机制.本周五,将由品高软件工程师陈洪杰带讲述微服务架构的故事. 分享嘉宾 陈洪杰,目前就任品高广州云架构产品部--BingoCloud平台的软件开发工程师,拥有Docker,LXC等多个容器平台的项目

Google、IBM 和 Lyft 开源其大型微服务系统管理工具 Istio

谷歌.IBM 与 Lyft 三方已经共同公布了 Istio 项目的首次公开发行版.Istio 是一个开源项目,旨在提供一种统一化的微服务连接.安全保障.管理与监控方式.我们目前的发行版主要面向 Kubernetes 环境 ; 当然,在后续的升级当中,我们还将逐步实现对虚拟机以及 Cloud Foundry 等其它环境的支持能力. Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性.监控.路由.连接管理与策略等)创造了基础.这款软件利用久经考验的 Lyft Envo

华为架构师8年经验谈:从单体架构到微服务的服务化演进之路

本次分享的大纲如下: 传统应用开发面临的挑战 服务化实践 服务化不是银弹 服务化架构的演进方向   一 .传统应用开发面临的挑战 挑战1-- 研发成本高   主要体现在如下几个方面:   代码重复率高   在实际项目分工时,开发都是各自负责几个功能,即便开发之间存在功能重叠,往往也会选择自己实现,而不是类库共享,主要原因如下:   从技术架构角度看,传统垂直架构的特点是本地API接口调用,不存在业务的拆分和互相调用,使用到什么功能就本地开发,非常方便,不需要过度依赖于其它功能模块: 从考核角度来