哪个是使用Spring的微服务的最佳API网关?

斯里克

我正在尝试使用微服务架构构建一个简单的应用程序。以下是有关我创建的3种微服务的详细信息。

1] Customer.
       database: mongodb
       server  : embeded tomcat server.
       port    : 8081
2] vendor.
       database: mongodb
       server  : embeded tomcat server.
       port    : 8082
3] product.
       database: mongodb
       server  : embeded tomcat server.
       port    : 8083

所有3个micros都在嵌入式tomcat服务器上运行。现在,我想为所有这些微控制器创建一个公共网关[API网关]。例如,如果我收到http:// hostname:port_of_gateway / customer的请求,这可以帮助我根据收到的请求来路由请求在阅读此内容时,我需要将请求路由到我的客户微型计算机,并获取其响应,然后将其发送回客户端。我可以使用哪个弹簧工具来实现这一目标?

托帕维翁

因为您的要求非常简单,所以您可以自己实现这样的网关。这是一个例子

但是,如果您真的想使用某些Spring解决方案,则可以尝试使用Spring Cloud Netflix项目中的Spring Cloud Netflix它包括路由器和过滤器功能,这些功能又基于Netflix Zuul网关服务。

请注意,这不是一个完整的独立应用程序,而是一个库。因此,您仍然应该创建另一个微服务,该微服务将在您的应用程序中充当API网关。要使其成为网关,您应该将@EnableZuulProxy注释添加到具有@SrpingBootApplication注释的同一类中您可以在这里找到一个很好的例子

还请注意,您应该以某种方式通知网关您的微服务地址以进行重定向。可以通过两种通用方式完成此操作:

  1. 通过在网关微服务的配置中静态定义地址;
  2. 通过将服务发现模式Netflix Eureka服务注册表结合使用

第一个方法是简单明了,但还不是很了解的大量微服务和/或在微服务的位置可以动态改变(例如,由于自动缩放)。
第二个方法需要额外的组件-服务注册-并且需要其他微服务的修改(让他们在注册表中注册自己)。这是相当复杂的方法,但是在复杂体系结构的情况下是唯一可行的方法。同一篇文章中可以找到简单但富有表现力的示例

更新(19年1月)

截至2018年12月,Spring Cloud团队宣布Spring Cloud中的几乎所有Netflix组件(Eureka除外)都进入维护模式。这意味着明年他们将不会收到任何功能更新(仅是错误和安全修复程序)。所有受影响的组件
都有替代品,包括上述Netflix Zuul。因此,请考虑在新项目中使用Spring Cloud Gateway而不是它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Nginx作为微服务API网关

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

微服务和API网关

使用大使API网关进行微服务

在微服务中同时使用 api 网关和消息代理

微服务,API网关和前端

API网关和微服务通信

使用由Lambda函数支持的API网关,该函数使用SNS在微服务之间进行通信

从两个微服务使用Spring的云网关合并结果

玩微服务-API网关和服务发现

如何将API网关与微服务和JWT结合使用?

使用Azure Service Fabric部署的微服务的API网关/代理模式

我们是否应该在微服务之间使用api网关(例如zuul)?

在AWS上创建Apollo Graphql微服务的最佳实例是哪个?

在iOS应用中购买服务的最佳付款网关是哪个?

通过API网关进行内部通信微服务

API网关(Zuul)合并两个微服务响应

具有api网关的微服务授权模式

在API网关+ Lambda微服务模板+ DynamoDB上启用CORS

具有微服务和表示层的 API 网关

具有App Engine和API网关的微服务

如何使我的微服务只能通过api网关访问

带有 API 网关的微服务架构与 Message Broker 通信,而不是直接与微服务通信

Swagger网关微服务聚合

Azure Web API 访问:我应该使用哪个 URL,Web 服务 URL 还是网关 URL?

微服务应遵循哪个选项:Spring Boot 或 AWS Lamba

如何使用Google Cloud Endpoints(网关)在单个api端点中从多个微服务(云运行容器)创建组合响应?

微服务-Spring AMQP / RabbitMQ,微服务之间的异步调用最佳模式

Ocelot API Gateway-分配微服务的最佳URL模板?