Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日本兵马俑集团;黑兹卡斯特_Java_Cluster Computing_Terracotta_Hazelcast_Jgroups - Fatal编程技术网

Java 日本兵马俑集团;黑兹卡斯特

Java 日本兵马俑集团;黑兹卡斯特,java,cluster-computing,terracotta,hazelcast,jgroups,Java,Cluster Computing,Terracotta,Hazelcast,Jgroups,试着围绕这3个项目来思考,它们似乎都能处理在尝试集群时出现的稍微不同的问题。但是他们的所有文档都是为已经“知情”的开发人员编写的,像我这样的新手很难理解 他们每个人试图解决的具体问题是什么?这些问题之间有什么不同 使用它们进行集群与集群应用程序服务器(如JBoss或GlassFish的内置集群功能)有何不同 这些框架所解决的问题是否不同,足以保证在同一个项目中使用它们?或者他们是彼此的竞争对手,因此对相同/相似的问题有不同的解决方案 提前感谢您对这些奇怪但难以捉摸的框架的深入了解 jgrou

试着围绕这3个项目来思考,它们似乎都能处理在尝试集群时出现的稍微不同的问题。但是他们的所有文档都是为已经“知情”的开发人员编写的,像我这样的新手很难理解

  • 他们每个人试图解决的具体问题是什么?这些问题之间有什么不同
  • 使用它们进行集群与集群应用程序服务器(如JBoss或GlassFish的内置集群功能)有何不同
  • 这些框架所解决的问题是否不同,足以保证在同一个项目中使用它们?或者他们是彼此的竞争对手,因此对相同/相似的问题有不同的解决方案

提前感谢您对这些奇怪但难以捉摸的框架的深入了解

jgroups更多的是关于任务分配和集群管理,而hazelcast/terracotta更多的是分布式缓存(数据网格)——当您比较所有功能时,它们之间肯定存在重叠——您需要找出哪些功能更重要,可能更容易实现

hazelcast允许通过基于tcp的寻址或多播进行集群。它支持映射、多重映射、列表、队列和主题—对于基于磁盘的备份,您必须实现加载/存储接口

使用EhCache,您可以对缓存使用JGroups、JMS或RMI复制


简而言之,如果您正在寻找分布式数据缓存/网格,hazelcast或ehcache将是您要寻找的工具-如果您正在寻找使用库的任务分发,而不关心现有的数据网格缓存,JGroups将适合您。

可以区分两类技术:i。启用码(即中间件API)和ii。端到端或即用解决方案(即应用API)

JGroups是一种使能技术,其核心实现了可靠的单播、多播和广播等功能,这些功能是构建更复杂的分布式协议的基础,如:;它属于一类

Hazelcast和Terracotta都是端到端服务技术,因为它们为分布式应用程序提供了丰富的服务;该解决方案属于分布式和内存缓存解决方案,非常适合以低延迟计算数据

在能力方面:

  • JGroups提供了一组原语,用于启用组成员资格,这是任何集群场景中的一个关键概念,其中必须根据生命周期和角色管理一组加入/离开参与者/节点;它允许基于协议内核设计创建丰富的协议集,通过在基础API(如所说的组成员)上堆叠微协议,依赖于TCP和UDP*上的消息的可靠分布。现成的JGroups不提供任何组合服务:这种服务可以构建在提供的基本功能之上*

  • Hazelcast提供了一套丰富的分布式数据结构,可通过隐式复制因子完全复制或分片;分布式列表、映射、队列和锁是使用Java集合接口实现的基本数据结构的示例,显然,分发和复制隐式地需要由其引擎特别是模块提供的组成员服务。Hazelcast可以通过IP组播、TCP IP组播和第三方云服务(如Zookeeper)实现组成员管理。Hazelcast可能会使用JGroups服务进行节点发现和群集管理(也称为组成员服务)

  • 另一方面,Terracotta,如果与流行的Ehcache关联,则它提供分布式缓存服务,而该服务又基于一组基本的组成员资格功能;在实现方面,它提供了一组特定于缓存系统的特定API,因此没有Hazelcast那么通用

考虑到这两种技术之间的关系,JGroups实际上是复合服务的支持服务(即构建块)
(即语义丰富的API),如Hazelcast和Terracotta,它们为第三方应用程序提供端到端或即用服务,在幕后管理所有可靠的分发方面。当然,JGroups是一个中间件,Hazelcast和Terracotta是可以嵌入自己的中间件实现的应用程序,用于集群服务。

谢谢@ali(+1)-不过有一些快速跟进:我的第二个问题呢?JGroups/Hazelcast/Terracotta上的集群与我的JBoss/GlassFish服务器集群有何不同?此外,如果您能帮助我理解Terracotta和EhCache之间的区别/关系,我将不胜感激!再次感谢!几年前,terracotta boughtehcache将其作为缓存整合到他们的产品中。我假设您正在寻找开源解决方案(除非您希望获得这些产品的企业版)。我没有在JBoss/GlasshFish上花太多时间-我相信JBoss使用JGroups进行内存复制/集群(不确定,但我认为您过去也可以尝试使用JMS/RMI,但我可能错了)-您也可以使用基于磁盘的备份。不知道Glassfish的最新版本。希望能有所帮助。@IAmYourFaja-AFAIK GlassFish使用鱼群进行集群。Shoal在引擎盖下使用JXTA/JGroups。JBOSS使用Infinispan和JGroups的组合,其中Infinispan是数据网格解决方案,JGroups是集群解决方案。Hazelcast和Terracotta更具可比性。Hazelcast可用于集群和数据网格。我不能评论它的性能,因为它还没有在produc中使用过