我正在观看由 lightbend 制作的关于将单体重构为微服务的网络研讨会,我遇到了一个问题。该框架的主要目标似乎是重构单体,但 lagom 似乎在其自己的容器和技术集上运行。当我想到单体和遗留 Java 应用程序时,我想到的主要技术是 Java EE。我认为当今生产中的大多数应用程序都依赖于一些 Java EE 技术。我工作的那个主要是基于 EJB 的。所以我的问题是:Lagom 如何解决这个问题?我想重构这种应用程序涉及将远程 EJB 查找转换为休息调用。但是,如果 lagom 不在 Java EE 容器中运行,我将如何保留我的应用程序的本地 EJB?可以同时使用吗?
3 回答
我对 Lagom 没有深入的了解,但是,使用基于微服务的架构的市场严重依赖 Spring Boot/Cloud。目前,我正在使用微服务进行一个非常大的项目,似乎 Spring 家伙为每种微服务模式提供了很多框架/工具,当您考虑微服务时应该牢记这些框架/工具。另一方面,Netflix(最大的微服务用户)依赖 Spring,我认为 Spring Boot/Cloud 是一种将 Java EE 单体应用程序重构为微服务的好方法
我建议观看https://vimeo.com/163760711。答案是您不应该只是将您的 EJB 转换为服务,如果这样做,您只会引入拥有许多服务的所有复杂性和性能问题,而不会获得微服务的任何好处。如果您想从微服务中受益,您需要重新考虑您的架构。
您可以从使用一组 REST Web 服务来表示现有的 EJB 服务开始,这些服务反过来将被新的基于 Lagom 的微服务使用,如下所示:
[EJB 服务] <- [基于 EJB 的 REST 服务网关] <- [基于 Lagom 的微服务]
或作为部署模块:
[您的 EJB 应用程序 .EAR] <- [EJB-REST 网关 .WAR] <- [基于 Lagom 的应用程序]
由于您的 EJB 应用程序将在容器中运行(例如 Wildfly),因此您的 Lagom 应用程序将独立部署(可能在不同的主机上)。引入 REST 服务层将允许您独立开发每个模块,这是在这种情况下成功的关键。
接下来,您将逐步实现新功能,并可能在新的基于 Lagom 的应用程序中重新实现一些旧功能。
这正是我所做的,它就像一个魅力。