微服务架构模式是否类似于 EJB 1.0?

Is the Microservices architectural Pattern similar to EJB 1.0?

我们在微服务中看到的是一个独立的组件,通过有线协议与该组件的父消费者进行通信。

我们在 EJB 1.0 中看到了非常相似的模式。

我的问题是:微服务架构模式是否类似于 EJB 1.0?

我从未直接与 EJB 合作过,但我曾与 EJB 团队合作过,主要是创建与 EJB 服务交互(作为服务器和客户端)的微服务。

恕我直言,与 EJB 的最大区别在于它是为处理更大的应用程序而创建的。构成 EJB 的方面和技术有很多。在考虑小型微服务时,其中一些似乎有些矫枉过正。当项目更大时,这些技术的实施成本更高 return。同样,这是一个主观意见。在创建小型微服务时,您会意识到架构是多么简单,并且所使用的技术可以保持在最低限度。

综上所述,我认为 EJB 可以在微服务环境中有效使用。关键在于保持应用程序容器小巧灵活,并能够通过 HTTP 轻松地与其他服务协同工作。

虽然与原始 EJB 规范背后的思想和微服务正在做的事情有一些相似之处,但还是有很多不同之处。

EJB 提供了一种构建基于组件的体系结构的标准化方法,通过契约确保 bean 的产品可以被其他体系结构使用,同时抽象出事务、状态和线程管理。构建组件的想法非常相似;最大的变化是我们现在叫他们"services." 契约式开发的思路也差不多

下面提供了一些高级差异:

  • EJB 规范指出:"Enterprise beans are intended to be relatively coarse-grained business objects." 这与良好的微服务实现形成对比,其中最好的设计是具有单一关注点的限界上下文。

  • 在 EJB 1.x 架构中,容器是持久性提供者;而在微服务架构中,每个服务管理自己的数据和持久性。

  • 使用微服务模式,通过最小化您的范围并且从不让事务跨越微服务边界来简化事务管理。

  • 对于微服务,线程池是针对每个服务或服务实例的。如果线程池耗尽,理想情况下您会生成该服务的另一个实例。在 EJB 1.x 环境中,线程管理是容器的责任。

微服务架构和 EJB 1.x 架构之间还有许多其他差异,但这些是一些亮点。我使用过这两种架构的实现,到目前为止,微服务架构的维护成本似乎更低。尤其是考虑到 EJB 在单体架构中已经变得一团糟。