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

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 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(转载)

目录
相关文章
|
18天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
2月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态。
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
126 3
|
16天前
|
负载均衡 监控 API
dotnet微服务之API网关Ocelot
Ocelot 是一个基于 .NET 的 API 网关,适用于微服务架构。本文介绍了如何创建一个 Web API 项目并使用 Ocelot 进行 API 请求路由、负载均衡等。通过配置 `ocelot.json` 和修改 `Program.cs`,实现对 `GoodApi` 和 `OrderApi` 两个项目的路由管理。最终,通过访问 `https://localhost:7122/good/Hello` 和 `https://localhost:7122/order/Hello` 验证配置成功。
25 1
dotnet微服务之API网关Ocelot
|
15天前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 10 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 10 月产品动态。
|
19天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
24天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
26天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
45 3
|
26天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
47 2
|
29天前
|
监控 测试技术 API
确保微服务的API版本控制策略能够适应不断变化的业务需求
确保微服务的API版本控制策略能够适应不断变化的业务需求