`
m635674608
  • 浏览: 5042752 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

分布式缓存组件Hazelcast

 
阅读更多

Hazelcast是一个Java的开源分布式内存实现,它具有以下特性:

  1. 提供java.util.{Queue, Set, List, Map}的分布式实现
  2. 提供java.util.concurrent.ExecutorService的分布式实现
  3. 提供java.util.concurrency.locks.Lock的分布式实现
  4. 提供用于发布/订阅的分布式Topic(主题)
  5. 通过JCA与J2EE容器集成和事务支持
  6. 提供用于一对多关系的分布式MultiMap
  7. 提供分布式事件和监听器的实现
  8. 提供集群应用和集群成员机制
  9. 支持动态HTTP Session集群
  10. 通过JMX监控和管理集群
  11. 为Hibernate提供二级缓存Provider
  12. 提供动态集群机制
  13. 提供动态分区和备份机制
  14. 支持动态故障恢复
  15. 简单通过jar包集成
  16. 运行速度快.
  17. 体积小

Hazelcast体系结构图

这里写图片描述

hazelcast拓扑

hazelcast拓扑结构可用于分布式集群。支持两种操作模式。采用”嵌入成员”模式时,含有应用代码的JVM直接加入Hazelcast群集,采用”客户端外加成员”模式时,备用JVM(可能在相同或不同的主机上)负责加入Hazelcast群集。这两种拓扑方法如下图所示:

嵌入模式: 
这里写图片描述

客户端外加成员模式:

这里写图片描述

在多数情况下,可以采用客户端外加成员拓扑方法,因为就群集机制而言,它提供更大弹性 - 成员 JVM 可被拆卸和重新启动,不会对整体应用程序产生任何影响,因为 Hazelcast 客户端将只需重新连接到群集的另一个成员。另一种说法是客户端外加成员拓扑方法能够隔离纯粹群集级别事件的应用代码。

Hazelcast数据分区

Hazelcast中的数据分片被叫做partition。默认情况下,Hazelcast有271个partition。用一个数据的key,可以采用序列化哈希的算法将数据映射到具体的分区上面。分区会均匀分布在集群member的内存中。并且有多个副本保证高可用。

下面演示节点增加分区分布的情况:

单个节点:

单仅启动一个节点的时候,该节点为master,且有默认的271个分区。

Hazelcast数据分片单个节点示意图

两个节点

启动第二个节点,第二个节点会加入第一个节点创建的集群中。第一个节点中的分区会重新分配,均匀分布在集群中。且集群中每个成员的数据分片都有一个副本。

Hazelcast数据分片两个节点示意图

加入更多节点

当加入更多节点的时候,原来节点中的数据分片会重新分布到新加入的节点上面,保证集群中数据分片的均匀分布。且同样会备份数据。下面是4个节点集群的数据分片分布:

Hazelcast数据分片四个节点示意图

分区算法

Hazelcast数据分片采用哈希算法。当给以一个map的key或是一个分布式对象的名称,会首先将key或对象名称进行序列化,转成byte array的形式,然后将byte array 进行哈希,将哈希结果对分区数求模得到分片ID。

分区表

分区表在第一个节点创建的时候就会生成。分区表是存储分区和节点的对应关系。作用在于让集群中的每个节点都可以知道分区和数据的信息。第一个启动的节点会将这个分区表周期性地发送给集群中的其他节点。这样,当集群中新增节点或是删除节点的时候,集群中的每个节点都可以拿到最新的分区信息。如果第一个节点(master)失败了,集群会选出新的master(第二个启动的节点),再由新的master将分区表发送给集群中的节点。发送的时间周期可以设置the hazelcast.partition.table.send.interval 系统属性,默认是15s.

 

http://blog.csdn.net/wangyangzhizhou/article/details/52511101

分享到:
评论

相关推荐

    hazelcast-5.2.3.zip

    1. 分布式缓存:Hazelcast提供了一个高度可扩展的分布式缓存,允许你将数据存储在内存中,以实现快速访问。它支持多种缓存配置,如TTL(Time To Live)过期、Eviction策略等,能有效管理内存资源。 2. 分布式Map:...

    hazelcast-3.9

    1. 分布式缓存:Hazelcast的核心功能之一是提供分布式缓存服务,允许你在多个节点之间共享数据,从而减少数据库的负载。它支持多种缓存模式,如LRU(Least Recently Used)和LFU(Least Frequently Used)策略,确保...

    hazelcast-3.8.1 tar包和zip包

    1. 分布式缓存:Hazelcast提供了一个分布式内存缓存,可以将数据存储在多个节点上,从而提高读取速度并减轻数据库的压力。 2. 分布式Map:Hazelcast的核心组件之一是分布式Map,它允许在集群中的各个节点之间共享和...

    hazelcast-3.8.9.zip

    Hazelcast的核心功能包括分布式缓存、分布式Map、Queue、Topic、Executor Service以及分布式事件系统。这些组件使得Hazelcast成为一个强大的中间件,能够在多节点的环境中无缝地共享数据和处理任务。 1. 分布式缓存...

    hazelcast-3.9.1

    分布式缓存是Hazelcast的核心特性之一,它允许在多节点的集群中分散并缓存数据,提高了应用程序的数据访问速度和整体性能。在3.9.1版本中,可能包括了优化的缓存机制,比如更智能的缓存替换策略,以提高空间利用率和...

    hazelcast-management-center-3.12.9.zip

    1. **分布式缓存**:Hazelcast 提供了一个高可用、高性能的分布式缓存解决方案。它支持多种缓存模式,如完全复制、分区复制等,可以根据业务需求选择合适的策略。 2. **分布式 Map**:Hazelcast 的分布式 Map 是其...

    springmvc+mybatis+Hazelcast试验

    总结来说,"springmvc+mybatis+Hazelcast试验"项目旨在演示如何将这三个组件集成到一个Web应用中,实现高效的数据处理和分布式缓存,这对于构建大型、高并发的互联网应用具有很高的参考价值。通过下载提供的jar包,...

    hazelcast-hibernate3-3.1.5.zip

    这个版本3.1.5的Hazelcast-Hibernate3适配器使得开发者可以利用Hazelcast的分布式缓存功能来优化Hibernate的数据访问。 【描述】提及的"myt-predicates.zip"是一个基于Java的简单谓词API实现,它实现了...

    hazelcast-spring-3.2.1.zip

    Hazelcast 是一款流行的开源内存数据网格解决方案,它提供分布式缓存、分布式Map、队列、 topic 和其他并发数据结构。Spring 框架是Java开发中的常用企业级应用框架,提供了依赖注入、AOP(面向切面编程)等功能。...

    hazelcast-management-center-3.11.1

    在描述中提到的“客户端代码”,指的是 Hazelcast 客户端,它是连接到 Hazelcast 集群的组件,负责与集群进行通信,执行数据读写和其他操作。3.11.1 版本可能包含了对性能、稳定性和功能的改进,以及可能的bug修复。...

    hazelcast-code-samples:Hazelcast代码示例

    3. **Cache**: Hazelcast还实现了JCache (JSR-107) API,提供了一种高效的分布式缓存解决方案。通过这些示例,你可以学习如何配置和使用缓存来提升应用性能。 4. **Executor Service**: Hazelcast的Executor ...

    分布式Java应用

    分布式缓存,如Hazelcast或Gemfire,是提升性能和响应速度的关键。它们能够在内存中存储数据,减少数据库的访问压力,同时通过集群化实现数据的共享和复制。 在微服务架构中,服务发现和治理也是重要一环。Netflix...

    j2cache:java实现的缓存策略组件,支持多种缓存产品,开发人员可以像Map一样使用,简单方便。支持的存储方案:jvm\redis\ignite\hazelcast\guava

    对于一些早期产品使用haspmap作为缓存,随着发展需要分布式部署,那么就会遇到分布式缓存的问题,自然就要使用redis/memcached之类的产品,但每一种产品都有自己一套的接口或者SDK,开发人员使用的时候需要专门改写...

    分布式java应用

    10. **分布式缓存**:如Hazelcast或Apache Ignite,用于加速数据访问并减轻数据库压力。 11. **分布式协调服务**:如ZooKeeper和Etcd,用于管理分布式系统中的配置、命名和协调任务。 12. **分布式数据库**:如...

    hazelcast-all-3.3-EA.zip

    Hazelcast 是一个开源的内存数据网格解决方案,它提供分布式内存计算、缓存和消息队列功能,用于提高应用程序的性能和可伸缩性。这个 ZIP 文件很可能是包含了 Hazelcast 框架的所有组件,包括核心库、客户端、示例和...

    codechallange:Hazelcast代码Challange

    Hazelcast是一个开源的内存数据网格平台,它提供了分布式缓存、分布式Map、分布式队列、分布式事件、分布式计算等功能,广泛应用于大数据、微服务和云环境。 在进行Hazelcast代码挑战时,首先需要对Hazelcast的核心...

    Java分布式应用学习笔记

    此外,分布式缓存系统如Redis和Hazelcast可提高系统的响应速度。 5. 分布式事务处理 在分布式环境中,保证事务的一致性和完整性至关重要。Java Transaction API (JTA) 和Java Transaction Service (JTS) 提供了...

    Java分布式开发与集群技术

    Hazelcast作为一种流行的分布式缓存解决方案,提供了内存中数据处理和分布式数据管理的能力。它支持集群节点之间的数据共享,使得数据可以快速地在节点之间同步,从而实现高可用性和高性能。 此外,Java虚拟机(JVM...

    Java 分布式应用程序设计

    如Redis、Hazelcast或Infinispan等分布式缓存系统,可以在Java分布式应用程序中提供高速的数据访问和共享,缓解数据库压力,提升系统性能。 以上就是Java在分布式应用程序设计中涉及的一些关键技术,这些技术相互...

Global site tag (gtag.js) - Google Analytics