微服务 API 网关与微服务机箱

Posted

技术标签:

【中文标题】微服务 API 网关与微服务机箱【英文标题】:Microservices API gateway vs. Microservices Chassis 【发布时间】:2019-04-06 19:48:15 【问题描述】:

我是微服务新手,听说过微服务机箱,但我在网上找不到足够的资源。我想知道微服务底盘框架和 API 网关有什么区别,因为据我所知,底盘框架解决了横切关注问题,其中一些已经被 API 网关解决了。

对于 .net 的微服务底盘框架有什么建议吗?

【问题讨论】:

您好,好问题,但由于“要求场外资源”和“基于意见”,它被标记为离题。为了克服这个问题,您可能需要重写您的问题并要求常见的最佳做法。 【参考方案1】:

横切关注点:在任何企业应用程序中,除了主要业务逻辑之外,还有许多关注点需要注意。 ...这些关注点是日志记录、事务处理、性能监控、安全等。这些关注点被称为应用程序的横切关注点。

澄清这一点意味着几乎所有微服务都有一些共同的问题。这些问题以及如何管理它们就是机箱。微服务底盘是实现这些横切关注点的一种方式。构建可重复使用的机箱有助于节省时间、加强团队之间的一致性,并确保每个服务共享相同的操作特性。

API 网关 在微服务中还有其他作用。每个服务在发现服务中注册后,API网关必须使用发现服务来建立客户端和每个服务之间的连接。

看这个例子:

以上示例来自 Spring 实现(Java)。

想象一下当每个服务在不同的端口和地址时的情况。然后客户端必须知道每个服务的所有地址和端口才能调用它们。如果其中任何一个发生变化,会发生什么?一切都毁了。

为了解决这个问题,每个服务都在发现服务器上注册自己(在这个例子中是Eureka)。 API-Gateway 然后必须使用该发现服务并为每个服务创建 API 地址。例如,它可以将这种模式中的任何请求:/micro_service_name/** 转发到相关的注册服务。 这意味着如果order-service 具有/orders/get/order-id API,则客户端必须使用/order-service/orders/get/order-id 来访问订单。 API-gateway 使用发现服务器将请求重定向到匹配的服务。

【讨论】:

很好的完整答案,但我仍然有一个问题:实际端点是否传递给客户端,因此客户端会跟踪,还是 api 网关执行实际转发? @Stefan 它通常是API网关的工作(顾名思义) 那么,明确一点:网关转发实际请求,返回实际数据给客户端? @Stefan 是的。网关将请求转发给适当的微服务并将数据返回给用户。【参考方案2】:

微服务架构中的 API 网关主要与服务发现有关,这意味着为了知道从哪个端点调用哪个服务,一种简单但不够充分的方法是使用 API 网关,一个简单的所有服务的数据库及其地址和端口,将其与容器化技术如Docker 进行比较。以下是在代码项目中发表的一组关于微服务的文章,您可以阅读并评论您的问题。https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-I https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-II https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-III

【讨论】:

以上是关于微服务 API 网关与微服务机箱的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud——微服务网关介绍

0102-使用 API 网关构建微服务

使用API网关构建微服务

API网关介绍

主流云原生微服务API网关成熟度与安全功能对比分析

Spring Cloud微服务安全实战_4-1_微服务网关安全_概述&微服务安全面临的挑战