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

Header and footer as a service in Dropwizard?

我有一个假设的 Web 应用程序,它被拆分成一个微服务架构,例如(作为示例):

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

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

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

我建议 Curator library as it's much easier to work with than Zookeeper directly, the cache example 可能是一个有用的起点。

您还可以使用 Hazelcast 作为分布式 Map/Cache。它真的很容易使用(见代码示例),但如果你想要一些企业功能,你必须付出很多。