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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

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(转载)

目录
相关文章
|
1月前
|
API
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
|
2天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。
|
3天前
|
监控 JavaScript 安全
构建微服务架构下的API网关
【4月更文挑战第15天】在微服务架构中,API网关扮演着至关重要的角色。它作为系统的唯一入口,不仅负责请求的路由、负载均衡和认证授权,还涉及到监控、日志记录和服务熔断等关键功能。本文将探讨如何构建一个高效且可靠的API网关,涵盖其设计原则、核心组件以及实现策略,旨在为后端开发人员提供一套实用的指导方案。
14 4
|
25天前
|
消息中间件 缓存 API
微服务架构下的API网关性能优化实践
在现代的软件开发中,微服务架构因其灵活性和可扩展性被广泛采用。随着服务的细分与增多,API网关作为微服务架构中的关键组件,承担着请求路由、负载均衡、权限校验等重要职责。然而,随着流量的增长和业务复杂度的提升,API网关很容易成为性能瓶颈。本文将深入探讨API网关在微服务环境中的性能优化策略,包括缓存机制、连接池管理、异步处理等方面的具体实现,旨在为开发者提供实用的性能提升指导。
|
27天前
|
缓存 负载均衡 监控
构建高效微服务架构:API网关的作用与实践
【2月更文挑战第31天】 在当今的软件开发领域,微服务架构已成为实现系统高度模块化和易于扩展的首选方法。然而,随着微服务数量的增加,确保通信效率和管理一致性变得尤为重要。本文将探讨API网关在微服务架构中的核心角色,包括其在请求路由、安全性、负载均衡以及聚合功能方面的重要性。我们将通过具体案例分析,展示如何利用API网关优化后端服务,并讨论实施过程中的最佳实践和常见挑战。
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 02 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
1月前
|
缓存 监控 负载均衡
构建微服务架构下的API网关实践指南
【2月更文挑战第22天】在现代的软件开发实践中,微服务架构因其灵活性和可扩展性而成为众多企业的首选。随着服务数量的增长,有效地管理这些服务的入口——API网关,成为了确保系统稳定性和效率的关键。本文将探讨如何在微服务环境中构建一个高性能、可扩展的API网关,以及它如何帮助实现请求路由、负载均衡、认证授权和监控等功能,同时提供了一系列实施的最佳实践和面临的挑战解决方案。
|
1月前
|
监控 测试技术 API
构建基于微服务架构的高效API网关
【2月更文挑战第20天】 在现代软件架构中,微服务已成为企业开发云原生应用的首选模式。随着服务数量的增长,有效的服务管理和请求路由变得至关重要。本文将探讨如何构建一个高效的API网关来管理微服务架构中的服务交互,重点讨论其设计原则、关键组件以及实现方法。通过引入API网关,我们旨在简化客户端与服务的通信,提供统一的访问入口,增强安全性,并提升系统的可扩展性和维护性。
|
5月前
|
Java API Maven
微服务技术系列教程(27) - SpringCloud- Zuul整合Swagger管理微服务所有API
微服务技术系列教程(27) - SpringCloud- Zuul整合Swagger管理微服务所有API
55 0
|
6月前
|
关系型数据库 MySQL API
Go语言微服务框架 - 6.用Google风格的API接口打通MySQL操作
随着RPC与MySQL的打通,整个框架已经开始打通了数据的出入口。 接下来,我们就尝试着实现通过RPC请求操作MySQL数据库,打通整个链路,真正地让这个平台实现可用。
18 0