Web services 选择API网关工具实现SOA/microservices体系结构

Web services 选择API网关工具实现SOA/microservices体系结构,web-services,rest,api,soa,microservices,Web Services,Rest,Api,Soa,Microservices,我确信我需要使用一个API网关,但我不能理解在我的用例场景中不同工具之间的主要区别 目前,我有多个服务(DBS,移动应用程序,Web应用程序和一些额外的系统。考虑有15个不同的服务)通过REST API相互通信。这是很难管理和测试的,所以我想把架构改成更像Netflix对Zuul所做的事情 理想情况下,服务不知道其他服务。它们向特定端点(API网关)发送请求。然后,API网关与必要的服务交互并将响应发送回。 下面是一个实际示例:服务将请求发送到自定义(端点)连接器,对请求进行解析,将其分解为发送

我确信我需要使用一个API网关,但我不能理解在我的用例场景中不同工具之间的主要区别

目前,我有多个服务(DBS,移动应用程序,Web应用程序和一些额外的系统。考虑有15个不同的服务)通过REST API相互通信。这是很难管理和测试的,所以我想把架构改成更像Netflix对Zuul所做的事情

理想情况下,服务不知道其他服务。它们向特定端点(API网关)发送请求。然后,API网关与必要的服务交互并将响应发送回。 下面是一个实际示例:服务将请求发送到自定义(端点)连接器,对请求进行解析,将其分解为发送到其他服务(拥有请求的特定内容)的较小请求,将内容返回到响应中,收集所有响应,使用收集的所有内容创建最终响应,将响应发送回发送请求的第一个服务

我需要高可用性、可扩展性、容错性、在一个地方监视和测试所有服务的能力、进行金丝雀测试的能力、易于添加新服务和管理旧服务的能力。我重视开源软件和成熟软件。应该跑出前提

我认为解决我的问题的最佳解决方案是:WSO2、Apigee、Zuul和AmazonAPI网关。我不知道哪个更适合我的用例。我看过其他的,但我没有发现与这4款相比在功能或成本方面有任何优势

感谢您对这些技术优缺点的反馈!其他建议也欢迎

注: 不是我所有的服务都在AWS上,但有些是。
系统需要处理每分钟有上万个请求的高峰,这些请求是经常发生的,但绝不是连续发生的。

因为您有不同的微服务环境,其中每个微服务都有自己的业务上下文,并且可以通过REST endponit访问。在这种情况下,您的客户机不需要知道每个微服务,因此API网关就出现了,使用它您可以有一个进入所有微服务的入口点

有不同的API网关解决方案可用,如您所说的apigee、apiman等。这些框架提供了API网关所需功能的一些基本实现,如请求节流、请求调用监控、身份验证句柄、集中安全性等

Netflix的Zuul提供了您自己实现所需的过滤器。因此,如果您使用的是Zuul,那么您必须自己实现所有想要放在API网关中的特性


我希望这个解释有帮助

> P>您也可以考虑论坛系统中的论坛哨兵API安全网关(我为论坛系统工作)。 根据您的示例用例,如果每个“较小的请求”服务都使用相同的协议(例如HTTPS)、消息格式(例如JSON)和安全特性(TLS、身份验证等),那么解决方案应该相对简单


如果每个服务都使用不同的身份或消息格式,那么您的API网关解决方案还需要具有强大的身份和消息转换功能。例如,一个小请求可能需要一个BasicAuth头来验证服务,而另一个小请求可能需要一个SAML断言。

谢谢您的反馈!!因此,如果我理解正确,如果我正在寻找一个现成的完整解决方案,那么Zuul可能不是最好的选择……如果你想要一个所有功能都现成的解决方案,那么就使用一些框架,如果你想用过滤器实现你的自定义解决方案,那么就使用Zuul。