Files
davidpaulyoung/content/post/2018-04-11-service-mesh-vs-api-gateway.md
2026-05-14 14:06:21 -06:00

5.3 KiB
Raw Blame History

layout, title, subtitle, description, excerpt, date, author, image, publishDate, tags, URL, categories
layout title subtitle description excerpt date author image publishDate tags URL categories
post Service Mesh 和 API Gateway的关系探讨译文 API Gateway和Service Mesh的关系是我最近一直在思考的问题也和同事及社区的朋友之间进行了一些讨论。这篇短文很清晰地总结了两者之间的相似之处以及这两者在微服务架构中的不同用途。 API Gateway和Service Mesh的关系是我最近一直在思考的问题也和同事及社区的朋友之间进行了一些讨论。这篇短文很清晰地总结了两者之间的相似之处以及这两者在微服务架构中的不同用途。 2018-04-11 09:32:00 赵化冰 /img/2018-04-11-service-mesh-vs-api-gateway/background.jpg 2018-04-11 09:32:00
Microservice
Service Mesh
API Gateway
/2018/04/11/service-mesh-vs-api-gateway/
Tech

Service Mesh vs API Gateway

前一篇关于Service Mesh的文章中,我提到了几个关于Service Mesh和API Gateway之间关系的问题在本篇文章中我打算就Service Mesh和API Gateway的用途进行进一步讨论。

为了区分API Gateway和Service Mesh让我们先分别看看两者各自的关键特征。

API Gateway: 将服务作为被管理的API向外部暴露

使用API Gateway的主要目的是将微服务作为被管理的API暴露给外部系统。因此我们在API Gateway层开发的API或者边界服务对外提供了业务功能。

API/边界服务调用下游的组合或者原子微服务,通过组合/混装多个下游微服务的方式来提供业务逻辑。

在API/Edge服务调用下游服务时需要采用一种可靠的通信方式应用了断路器超时负载均衡/故障转移等可靠性模式。因此大部分的API Gateway解决方案都内置了这些特性。

API Gateway也内置了以下特性的支持包括服务发现分析可见性性能指标监控分布式日志分布式调用追踪和安全。

API Gateway和API管理生态系统的其他组件的关系紧密比如 API 市场/商店, API 发布门户。

Service Mesh微服务的网络通信基础设施

现在我们来看看Service Mesh有哪些不同。

Service Mesh是一个网络通信基础设施 可以用于将应用层的网络通信功能从你的服务代码中剥离出来。

采用Service Mesh 你不用在服务代码中实现用于可靠通信的模式如断路超时等类似地Service Mesh也提供了服务发现服务可见性等其他功能。

API Gateway和Service Mesh实践

API Gateway和Service Mesh之间的主要不同点API Gateway是暴露API/边界服务的关键组件而Service Mesh则仅仅是一个服务间通信的基础设施并不了解应用中的业务逻辑。

下图说明了API Gateway和Service Mesh的关系。如同前面所说这两者之间也有一些重叠的部分例如断路器等但重要的是需要理解这两者是用于完全不同的用途。

图1 API Gateway和Service Mesh实践

如上图所示Service Mesh作为Sidecar边车和服务一起部署它是独立于服务的业务逻辑的。

另一方面API Gateway 提供了所有的API服务这些API服务有明确定义的业务功能它是应用业务逻辑的一部分。API Gateway可以具有内建的服务间通信能力但它也可以使用Service Mesh来调用下游服务API Gateway->Service Mesh->Microservices

在API管理层次你可以使用API Gateway内建的服务间通信能力也可以通过Service Mesh来调用下游服务以将应用网络通信功能从应用程序转移到Service Mesh中。

译者按

API Gateway和Service Mesh的关系是我最近一直在思考的问题也和同事及社区的朋友之间进行了一些讨论。这篇短文很清晰地总结了两者之间的相似之处以及这两者在微服务架构中的不同用途。

文章中提到“可以使用API Gateway内建的服务间通信能力也可以通过Service Mesh来调用下游服务”。在和同事讨论时大家提到一个比较重要的考虑因素是在API Gateway处引入一个Sidecar可能带来的额外延迟。

API Gateway作为微服务引用的流量入口其对效率要求较高如果随API Gateway部署一个Sidecar可能对效率有一定影响。

我对此未进行测试但从理论上来说服务发现重试断路等逻辑无论放到API Gateway还是Service Mesh中耗时应该是差不多的部署Sidecar只是增加了创建一个本地链接的消耗如下图所示:

将API Gateway和Service Mesh的功能进行清晰划分API Gateway负责应用逻辑Service Mesh负责服务通讯Metrics收集等微服务基础设施这样划分后在架构上更为清晰。对于效率问题我们可以考虑对API Gateway进行水平扩展来解决。

原文

本译文发表已征得原作者同意,原文参见 Service Mesh vs API Gateway