我正在尝试用微服务架构构建一个简单的应用程序。下面是我创建的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微运行在一个嵌入式tomcat服务器上。现在,我想为所有这些micros网关创建一个通用网关。它帮助我根据我得到的请求路由我的请求,例如:-例如,如果我收到网关/客户的请求。在阅读这篇文章时,我需要路由请求汤姆我的客户微,并获取它的响应,并将其发送回客户端。我可以用哪个弹簧工具来实现这一点?
发布于 2017-09-24 16:12:28
因为您的需求非常简单,所以您可以自己实现这样一个网关。这是一个例子。
但是,如果您真的想使用一些Spring解决方案,您可以尝试使用弹簧云Netflix,这是Spring伞式项目的一部分。它包括路由器和过滤功能,这反过来又基于Netflix Zuul网关服务。
请注意,这不是一个完整的独立应用程序,而是一个库。因此,您仍然应该创建另一个在应用程序中充当API网关的微服务。要使它成为网关,只需将@EnableZuulProxy
注释添加到具有@SrpingBootApplication
注释的同一个类中。您可以找到一个非常好的示例这里。
还请注意,您应该以某种方式将您的微服务地址告知网关以进行重定向。它可以通过两种一般的方式来完成:
第一种方法简单明了,但对于大量的微服务和/或当微服务的位置可以动态变化(例如,由于自动缩放)时,则不是很好。
第二种方法需要额外的组件-服务注册-并需要修改其他微服务(让它们在注册表中注册)。这是相当复杂的方法,但在复杂架构的情况下,这是唯一可能的方法。简单而有表现力的例子可以在同一条中找到。
最新情况(1月19日)
2018年12月,Spring团队将Spring中几乎所有Netflix组件(除了尤里卡)都进入了维护模式。这意味着明年他们不会收到任何功能更新(只有bug和安全修复)。
所有受影响的组件都有替代物,包括上面提到的Netflix。因此,请考虑在新项目中使用代替。
https://stackoverflow.com/questions/46390552
复制相似问题