Hazelcast介绍与使用

Hazelcast 是一个开源的可嵌入式数据网格(社区版免费,企业版收费)。你可以把它看做是内存数据库,不过它与 Redis 等内存数据库又有些不同。项目地址:http://hazelcast.org/

Hazelcast 使得 Java 程序员更容易开发分布式计算系统,提供了很多 Java 接口的分布式实现,如:Map, Queue, ExecutorService, Lock, 以及 JCache。它以一个 JAR 包的形式提供服务,只依赖于 Java,并且提供 Java, C/C++, .NET 以及 REST 客户端,因此十分容易使用。

  1 import com.hazelcast.config.Config;
  2 import com.hazelcast.core.Hazelcast;
  3 import com.hazelcast.core.HazelcastInstance;
  4
  5 import java.util.concurrent.ConcurrentMap;
  6
  7 public class DistributedMap {
  8     public static void main(String[] args) {
  9         Config config = new Config();
 10         HazelcastInstance h = Hazelcast.newHazelcastInstance(config);
 11         ConcurrentMap<String, String> map = h.getMap("my-distributed-map");
 12         map.put("key", "value");
 13         map.get("key");
 14
 15         //Concurrent Map methods
 16         map.putIfAbsent("somekey", "somevalue");
 17         map.replace("key", "value", "newvalue");
 18     }
 19 }
 20 

如何存储数据

Hazelcast 服务之间是端对端的,没有主从之分,因此也不存在单点故障。集群中所有的节点都存储等量的数据以及进行等量的计算。

Hazelcast 缺省情况下把数据分为 271 个区。这个值可配置于系统属性 hazelcast.partition.count。 对于一个给定的键,在经过序列号、哈希并对分区总数取模之后能得到此键对应的分区号。所有的分区等量的分布与集群中所有的节点中,每个分区对应的备份也同样分布在集群中。

下例是拥有2个节点的 Hazelcast 集群:

黑色字体表示分区,蓝色字体表示备份。节点1存储了1到135分区,这些分区同时备份在节点2中。节点2存储了136到271分区,并备份在节点1中。

此时如果添加2个节点到集群中,Hazelcast 一个一个的移动分区和备份到新的节点,使得集群数据分布平衡。

注意实际中分区并不是有顺序的分布,而是随机分布,上面的示例只是为了方便理解。重要的是理解 Hazelcast 平均分布分区以及备份。

Hazelcast 使用哈希算法进行数据分区。对于一个给定的键(如Map)或者对象名称(如topic和list):

  • 序列化此键或对象名称,得到一个byte数组。
  • 对byte数组进行哈希。
  • 取模后的值即为分区号。

每个节点维护一个分区表,存储着分区号与节点之间的对应关系。这样每个节点都知道如何获取数据。

重分区

集群中最老的节点(或者说最先启动)负责定时发送分区表到其他节点。这样如果有节点加入或者离开集群,所有的节点也能更新分区表。

 注意: 如果最老的节点挂了,次老节点会接手这个任务。

这个定时任务时间间隔可配置系统属性 hazelcast.partition.table.send.interval。 缺省值为15秒。

重分区发生在:

  • 节点加入集群。
  • 节点离开集群。

此时最老节点会更新分区表,分发,接着集群开始移动分区,或者从备份恢复分区。

使用方式

有两种方式:嵌入式和客户端服务器。

  • 嵌入式,Hazelcast 服务器的 jar 包被导入宿主应用程序,服务器启动并存在于各个宿主应用中。优点是可以更低延迟的数据访问。

  • 客户端服务器,Hazelcast 客户端的 jar 包被导入宿主应用程序,服务器 jar 包独立运行于 JVM 中。优点是更容易调试以及更可靠的性能,最重要的是更好的扩展性。

时间: 2024-10-23 23:58:18

Hazelcast介绍与使用的相关文章

Hazelcast集群服务(1)——Hazelcast介绍

Hazelcast是什么 "分布式"."集群服务"."网格式内存数据"."分布式缓存"."弹性可伸缩服务"--这些牛逼闪闪的名词拿到哪都是ITer装逼的不二之选.在Javaer的世界,有这样一个开源项目,只需要引入一个jar包.只需简单的配置和编码即可实现以上高端技能,他就是 Hazelcast. Hazelcast 是由Hazelcast公司(没错,这公司也叫Hazelcast!)开发和维护的开源产品,可

内存数据网格IMDG简单介绍

1 简单介绍 将内存作为首要存储介质不是什么新奇事儿,我们身边有非常多主存数据库(IMDB或MMDB)的样例.在对主存的使用上.内存数据网格(In Memory Data Grid,IMDG)与IMDB相似,但二者在架构上全然不同. IMDG特性能够总结为下面几点: ?  数据是分布式存储在多台server上的. ?  每台server都是active模式. ?  数据模型一般是面向对象和非关系型的. ?  依据须要.常常会增减server. 此外,IMDG与普通缓存系统也是不同的. 相同地,在

Hazelcast源码剖析之Eviction

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colb

Hazelcast集群服务(2)——Hazelcast基本配置

摘要: 介绍Hazelcast的配置方法.配置参数. XML基本配置 如果用户没有指定或提供任何配置文件,Hazelcast默认会使用jar包中自带的配置文件--"hazelcast-default.xml"来配置Hazelcast的运行环境.Hazelcast默认采用XML格式作为配置文件,当然也支持其他配置方法,后文会详细说明.我们先看看下面这个简单的配置文件例子. <hazelcast xsi:schemaLocation="//" xmlns=&quo

分布式系统开发之技术介绍

此文仍在更新中 分布式系统技术概要 现在互联网应用,尤其是大型互联网公司的应用已经发展为大规模或超大规模的分布式的,集群化的应用.而中小规模的分布式应用也已广泛出现在各个领域.未来,随着云计算向社会生活的方方面面去渗透,分布式应用将更加地普及.所以,任何一个要从事服务器端应用开发的人员,都有具备对分布式应用的基本认识. 本文将简要介绍分布式应用的各基本领域的相关技术.这些技术在一个分布式应用中都会有或多或少的设计,即便暂时没有涉及到,设计人员也要有所考虑,保证系统有进一步发展的空间. 1. 集群

Particle-Common-Framework代码介绍

第一部分: 针对于普通服务的基础框架封装(entity.dao.service.controller.api)等 第二部分: spring cloud通用微服务项目,可以监控左右微服务,当然,本身自己也是微服务. 第三部分: 针对于框架内所有组件的封装,可以植入任何的模块项目中. 第四部分: 自身项目的微服务业务,比如:会员模块.消息模块.资金模块.订单模块等. 我们针对于以上四个模块分别做详细讲解: 第一部分: 针对于particle-framework模块: 1.  包括阿里巴巴Druid的

Spring Session 介绍及使用

spring Session的简易使用步骤 生成 step 1:后台业务模块使用Spring-Session生成一个session step 2:后台业务模块往session里设置信息 step 3:将session存到redis缓存中(支持持久化) step 4:将session id 返回给浏览器 step 5:浏览器根据cookie方式保存session id 使用 step 6:浏览器取出session id通过HTTP报文带给后台 step 7:后台根据session id从redis

Hazelcast是什么

Hazelcast是什么 ???"分布式"."集群服务"."网格式内存数据"."分布式缓存"."弹性可伸缩服务"--这些牛逼闪闪的名词拿到哪都是ITer装逼的不二之选.在Javaer的世界,有这样一个开源项目,只需要引入一个jar包.只需简单的配置和编码即可实现以上高端技能,他就是 Hazelcast. ????Hazelcast 是由Hazelcast公司(没错,这公司也叫Hazelcast!)开发和维护

分布式缓存Hazelcast案例一

分布式缓存Hazelcast案例一 Hazelcast IMDG Architecture 今天先到这儿,希望对您技术领导力, 企业管理,物联网,  系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 2017-2018年Scrum状态调查报告2016年测试状态调查2017年IT行业测试调查报告项目管理-习惯发生范围变更前端性能核对表Checklist-2018大型电商互联网性能优化案例国际化环境下系统架构演化微服务架构设计视频直播平台的系统架构