我正在尝试使用微服务架构构建一个简单的应用程序。以下是有关我创建的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
注释的同一类中。您可以在这里找到一个很好的例子。
还请注意,您应该以某种方式通知网关您的微服务地址以进行重定向。可以通过两种通用方式完成此操作:
在第一个方法是简单明了,但还不是很了解的大量微服务和/或在微服务的位置可以动态改变(例如,由于自动缩放)。
在第二个方法需要额外的组件-服务注册-并且需要其他微服务的修改(让他们在注册表中注册自己)。这是相当复杂的方法,但是在复杂体系结构的情况下是唯一可行的方法。在同一篇文章中可以找到简单但富有表现力的示例。
截至2018年12月,Spring Cloud团队宣布,Spring Cloud中的几乎所有Netflix组件(Eureka除外)都进入维护模式。这意味着明年他们将不会收到任何功能更新(仅是错误和安全修复程序)。所有受影响的组件
都有替代品,包括上述Netflix Zuul。因此,请考虑在新项目中使用Spring Cloud Gateway而不是它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句