在Dropwizard中作为服务的页眉和页脚?

时间:2015-10-17 14:05:51

标签: web-services architecture freemarker dropwizard microservices

我有一个假设的Web应用程序,它被分成一个微服务架构,如(例如): Distributed application structure

客户端A-C是提供HTML的Web应用程序。服务1-3是处理CRUD并提供JSON服务的后端。还有其他客户端(未图示)不访问前端服务 - 即Android和iOS等本机客户端。我试图找出在所有Web客户端上提供公共前端内容(例如页眉/页脚/ css)的最佳方法。我能想到这样做的最好方法是创建一个前端服务,每个Web客户端都可以访问该服务以获取此公共信息。这样改变公共前端的方式将立即反映在每个应用程序中,无需更新版本,重新编译或重新部署。

我的问题是这样做的最佳方法是什么?我使用Dropwizard为Web客户端和服务提供服务。 Web客户端通过Jetty提供Dropwizard视图(带有freemarker模板)。有没有办法组合Dropwizard视图,以便我可以从前端服务请求页眉和页脚视图,并将它们包装在从客户端返回的每个视图周围?或者我是否完全错了?我知道Freemarker支持模板继承,但据我所知,这意味着页眉/页脚必须存在于每个客户端中,或者从公共JAR中引入(这需要更新版本号并重新编译)。

2 个答案:

答案 0 :(得分:1)

如果你想在所有微服务之间同步内容,在你的情况下是页眉和页脚,我建议Zookeeper,它是专为分布式编排设计的,并且有更多的推动力model - 即您在Zookeeper中更新标头,您的所有服务几乎会立即收到该更新。

我建议使用Curator库,因为它比Zookeeper更容易使用,cache example可能是一个有用的起点。

答案 1 :(得分:0)

您还可以将Hazelcast用作分布式地图/缓存。它非常容易使用(参见代码示例),但是如果你想要一些企业功能,你必须付出很多。