Spring在内存数据网格应用程序中

时间:2016-04-26 06:37:27

标签: spring hazelcast infinispan gemfire geode

在基于内存数据网格的应用程序的服务器端使用Spring是否明智?

我的直觉告诉我,在低延迟高性能系统中这是无稽之谈。我的一位同事坚持将Spring纳入其中。这种包容的利弊是什么?

我的立场是Spring可以在客户端使用,但它对于服务器来说太重了,它带来了太多的依赖性,并且是一个更容易想到的漏洞。

2 个答案:

答案 0 :(得分:3)

数据网格系统通常是内存和I / O密集型。使用Spring并不会影响它(你可能会认为Spring创建了很多bean,但是通过适当的垃圾收集调优这不是问题)。

另一方面,使用Spring(或任何其他DI)可以帮助您构建和测试代码。

因此,如果您正在使用基于数据网格系统的某种服务器,请注意正确调整操作系统中的GC,套接字(内存缓冲区和套接字内存)。这些将为您提供比减少DI更多的好处。

答案 1 :(得分:1)

首先,我对“漏洞抽象”评论感到惊讶。我从未听过有人批评过Spring。事实上,恰恰相反。 Spring从应用程序代码中删除了基础结构(如数据网格)的实现细节,并提供了一致且熟悉的编程模型,使您可以专注于业务逻辑。 Spring在增强数据网格的配置和访问方面做了很多工作,特别是Gemfire,并且通常本身不会创建任何运行时开销。在初始化Spring应用程序期间,Spring在内部使用反射和AOP等工具,这可能会增加应用程序的启动时间,但这对运行时性能没有影响。 Spring已在许多高吞吐量,低延迟的生产应用程序中得到验证。在极端情况下,网络延迟和序列化等问题通常是影响性能的最大因素。

“春天带来了太多的依赖”是一种常见的抱怨,但却是一种谬误。我想说Spring会为它需要做的事情带来恰当数量的依赖关系。此外,Spring Boot启动器和平台BOM可以简化依赖关系管理,因此您无需担心版本不兼容或明确声明常见的依赖关系。我将不得不与你的同事站在一起。