我想运行多个共享相同上下文的微服务应用,这样我就可以为多个spring boot(微服务)应用运行自定义安全过滤器。
的例子:
用户服务:https://ip:port/myapp/user
产品服务:https://ip:port/myapp/product
评论服务:https://ip:port/myapp/comment
我应该为所有微服务运行一个公共过滤器(自定义安全过滤器)
正如@luboskrnac建议的那样——出于安全性考虑,您可以简单地将公共逻辑提取到一个单独的JAR中。
关于你的共享应用程序上下文(我假设你只是指共享URL空间,而不是在应用程序之间共享任何特定状态等),那么是的-你应该使用像Zuul
这样的东西-这可以作为外部和所有微服务之间的单一接口(其中,在底层,它们都运行在自己独特的应用程序上下文命名空间/端口号中——但是Zuul
可以将它们组合在一起,并在一致的位置上使用漂亮的url公开它们)。
幸运的是,整个Netflix微服务堆栈都得到了Spring的良好支持,因此可以直接使用Zuul
和Eureka
(发现服务)启动和运行。
我有一个hello-world
的堆栈设置写在这里(连同代码):http://automateddeveloper.blogspot.co.uk/2015/09/spring-boot-netflix-oss-adventure-into.html
将该过滤器提取到每个微服务将使用的单独JAR中。该JAR将是单独的项目版本,并独立地部署到您的工件存储库中。
事实上,在微服务环境中,你将有更多的"公共"bean/功能,它们应该在服务之间共享。因此,这种通用JAR在微服务环境中是必要的。