本章介绍如何安装Hazelcast并启动Hazelcast成员和客户端。它描述了下载包中的可执行文件,还提供了配置Hazelcast及其部署选项的基础知识。

2.1。安装

以下部分介绍了Hazelcast IMDG和Hazelcast IMDG Enterprise的安装。它还包括升级Hazelcast时要考虑的注释和更改。

2.1.1。安装Hazelcast IMDG

您可以在标准Maven存储库中找到Hazelcast。如果您的项目使用Maven,则无需向您的类路径添加额外的存储库pom.xml或将hazelcast-<version>.jar文件添加到您的类路径中(Maven会为您执行此操作)。只需将以下行添加到您的pom.xml:

<dependencies>

<dependency>

<groupId>com.hazelcast</groupId>

<artifactId>hazelcast</artifactId>

<version>Hazelcast IMDG Version To Be Installed</version>

</dependency>

</dependencies>

作为替代方案,您可以自己下载并安装Hazelcast IMDG。你只需要:

  • 下载软件包hazelcast-<version>.zip或hazelcast-<version>.tar.gz从hazelcast.org下载。
  • 提取下载的hazelcast-<version>.zip或hazelcast-<version>.tar.gz。
  • 将文件添加hazelcast-<version>.jar到类路径中。

2.1.2。安装Hazelcast IMDG Enterprise

为Hazelcast IMDG Enterprise定义了两个Maven存储库:

<repository>

<id>Hazelcast Private Snapshot Repository</id>

<url>https://repository-hazelcast-l337.forge.cloudbees.com/snapshot/</url>

</repository>

<repository>

<id>Hazelcast Private Release Repository</id>

<url>https://repository-hazelcast-l337.forge.cloudbees.com/release/</url>

</repository>

Hazelcast IMDG Enterprise客户还可以定义依赖关系,其示例如下所示。

<dependency>

<groupId>com.hazelcast</groupId>

<artifactId>hazelcast-enterprise</artifactId>

<version>Hazelcast IMDG Enterprise Version To Be Installed</version>

</dependency>

<dependency>

<groupId>com.hazelcast</groupId>

<artifactId>hazelcast-enterprise-all</artifactId>

<version>Hazelcast IMDG Enterprise Version To Be Installed</version>

</dependency>

2.2。设置许可证密钥

Hazelcast IMDG Enterprise为您提供两种类型的许可证:企业级企业级HD。根据您拥有的许可证类型,支持的功能在Hazelcast设置中有所不同。

  • 企业许可证:除了Hazelcast的开源版本,企业功能如下:

    • 安全
    • WAN复制
    • 集群REST
    • 集群JMX
    • Striim Hot Cache
    • 滚动升级
  • Enterprise HD许可证:除Enterprise功能外,Enterprise HD功能如下:
    • 高密度存储器
    • 热重启持久性

要使用Hazelcast IMDG Enterprise,您需要使用下面显示的配置方法之一设置提供的许可证密钥。

 

仅限会员使用Hazelcast IMDG Enterprise许可证密钥。您无需为要使用IMDG Enterprise功能的Java客户端设置许可证密钥。

声明性配置:

将以下行添加到文件中您喜欢的任何位置hazelcast.xml。此XML文件为您提供了一种配置Hazelcast的声明方式。它包含在Hazelcast下载包中。解压缩下载的包时,您将hazelcast.xml在该/bin目录下看到该文件。

<hazelcast>

...

<license-key>Your Enterprise License Key</license-key>

...

</hazelcast>

程序化配置:

或者,您可以以编程方式设置许可证密钥,如下所示。

Config config = new Config();

config.setLicenseKey( "Your Enterprise License Key" );

Spring XML配置:

如果您将Spring与Hazelcast一起使用,则可以使用Spring XML架构设置许可证密钥,如下所示。

<hz:config>

...

<hz:license-key>Your Enterprise License Key</hz:license-key>

...

</hz:config>

JVM系统属性:

作为另一种选择,您可以使用以下命令(“-D”命令行选项)设置许可证密钥。

-Dhazelcast.enterprise.license.key=Your Enterprise License Key

2.2.1。许可证密钥格式

许可证密钥具有以下格式:

<Name of the Hazelcast edition>#<Count of the Members>#<License key>

之前的字符串<License key>是人类可读的部分。您可以使用许可证密钥,有或没有此可读部分。因此,以下示例许可证密钥均有效:

HazelcastEnterpriseHD#2Nodes#1q2w3e4r5t

1q2w3e4r5t

2.3。从3.x升级

  • 使用时从3.6.x升级到3.7.x JCache Hazelcast 3.7引入了JCache实现的变化,破坏了3.6.x客户端与3.7-3.7.2集群成员的兼容性,反之亦然,因此3.7-3.7.2客户端也与3.6不兼容.x集群成员。此问题仅影响使用JCache功能的Java客户端。

从Hazelcast 3.7.3开始,提供了兼容性选项,可用于确保向后兼容3.6.x客户端。

为了将3.6.x群集和客户端升级到3.7.3(或更高版本),您需要在成员或客户端使用此兼容性选项,具体取决于首先升级哪个:

  • 首先将集群成员升级到3.7.3,hazelcast.compatibility.3.6.client=true为配置添加属性; 当使用此属性启动时,集群成员与3.6.x和3.7.3+客户端兼容,但与3.7-3.7.2客户端不兼容。升级群集后,可以升级应用程序以使用客户端版本3.7.3+。
  • 将客户端从3.6.x升级到3.7.3,hazelcast.compatibility.3.6.server=true为Hazelcast客户端配置添加属性。使用此兼容性选项启动的3.7.3客户端与3.6.x和3.7.3+集群成员兼容,但与3.7-3.7.2集群成员不兼容。升级客户端后,可以继续将集群成员升级到3.7.3或更高版本。

您可以使用“ 系统属性”附录中所述的任何受支持的方法来配置兼容性选项。完成群集和客户端升级后,可以从Hazelcast成员配置中删除兼容性属性。

  • 使用时从3.6.x升级到3.8.x EE JCache由于兼容性问题,如果您的成员是3.8.x,其中x <5,则CacheConfig序列化可能无效。因此,您需要使用3.8.5或更高版本问题正在解决。
  • 介绍spring-aware元素:在3.5版之前,Hazelcast 默认使用SpringManagedContext扫描SpringAware注释。这可能会导致不使用的用户产生一些性能开销SpringAware。随着Hazelcast 3.5的发布,这种行为已经改变。SpringAware默认情况下禁用注释。通过引入spring-aware元素,现在可以通过将<hz:spring-aware />标记添加到配置来启用它。请参阅Spring Integration部分。
  • WAN复制引入新的配置选项:从Hazelcast 3.6开始,现在可以为每个目标群集配置基于每个成员配置的WAN复制相关系统属性。以下4个系统属性不再有效。
    • hazelcast.enterprise.wanrep.batch.size,请参阅WAN复制批量大小。
    • hazelcast.enterprise.wanrep.batchfrequency.seconds,请参阅WAN复制批量最大延迟。
    • hazelcast.enterprise.wanrep.optimeout.millis,请参阅WAN复制响应超时。
    • hazelcast.enterprise.wanrep.queue.capacity,请参阅WAN复制队列容量。
  • 删除不推荐使用的getId()方法:已删除getId()界面中的方法DistributedObject。请改用该方法getName()。
  • C ++客户端分发中更改自定义序列化:之前,该方法getTypeId()用于检索要序列化的对象的ID。现在,使用该方法getHazelcastTypeId(),并将对象作为此新方法的参数。此外,getTypeId()在您的自定义序列化程序类中使用,现在它也已重命名getHazelcastTypeId()。请注意,当您想要从Hazelcast 3.6.1切换到3.6.2时,这些更改也适用。
  • 关于Hazelcast系统属性的重要说明:即使Hazelcast没有推荐使用GroupProperties.java类同时受益于系统属性,也有一个更改通知已使用此类的用户。从Hazelcast 3.7开始,该课程GroupProperties.java已被替换为GroupProperty.java。在这个新类中,系统属性是新引入的HazelcastProperty对象的实例。您可以通过调用getName()方法来访问这些属性的名称HazelcastProperty。
  • 删除WanNoDelayReplication:WanNoDelayReplication从Hazelcast 3.7开始,删除了Hazelcast的WAN复制的实施。通过1在配置WanBatchReplication时将批量大小设置为,您仍可以实现此行为。有关更多信息,请参阅“ 定义WAN复制”部分。
  • 介绍<wan-publisher>元素:从Hazelcast 3.8开始,配置元素<target-cluster>将替换为<wan-publisher>WAN复制配置中的元素。
  • WaitNotifyService接口已重命名为OperationParker
  • 同步WAN目标群集:从Hazelcast 3.8版本开始,REST调用的URL已从更改http://member_ip:port/hazelcast/rest/wan/sync/map为http://member_ip:port/hazelcast/rest/mancenter/wan/sync/map。

2.4。从2.x升级

  • 删除不推荐使用的静态方法:删除了 Hazelcast类到达Hazelcast数据组件的静态方法。可以从HazelcastInstance界面访问这些方法的功能。您应该替换以下内容:

Map<Integer, String> customers = Hazelcast.getMap( "customers" );

HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();

// or if you already started an instance named "instance1"

// HazelcastInstance hazelcastInstance = Hazelcast.getHazelcastInstanceByName( "instance1" );

Map<Integer, String> customers = hazelcastInstance.getMap( "customers" );

  • 实例重命名为分布式对象在3.0之前,术语“实例”存在混淆:它用于集群成员和分布式对象(映射,队列,主题等实例)。从Hazelcast 3.0开始,术语实例将仅用于Hazelcast实例,即集群成员。我们将对映射,队列等实例使用术语“分布式对象”。您应该使用新重命名的方法替换相关方法。3.0客户端是智能客户端,因为他们知道数据所在的集群成员,因此您可以用本机客户端替换您的lite成员。
  • public static void main( String[] args ) throws InterruptedException {
  • HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
  • IMap map = hazelcastInstance.getMap( "test" );
  • Collection<Instance> instances = hazelcastInstance.getInstances();
  • for ( Instance instance : instances ) {
  • if ( instance.getInstanceType() == Instance.InstanceType.MAP ) {
  • System.out.println( "There is a map with name: " + instance.getId() );
  • }
  • }

}

public static void main( String[] args ) throws InterruptedException {

HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();

IMap map = hz.getMap( "test" );

Collection<DistributedObject> objects = hazelcastInstance.getDistributedObjects();

for ( DistributedObject distributedObject : objects ) {

if ( distributedObject instanceof IMap ) {

System.out.println( "There is a map with name: " + distributedObject.getName() );

}

}

}

  • 包装结构的变化: PartitionService已被转移到包装com.hazelcast.core的com.hazelcast.partition。
  • 监听器API更改:在3.0之前,removeListener方法将Listener对象作为参数。但是这引起了混淆,因为相同的侦听器对象可以用作不同侦听器注册的参数。所以我们改变了监听器API。addListenermethods返回唯一ID,您可以使用此ID删除侦听器。因此,如果需要,您应该进行以下更换:
  • IMap map = hazelcastInstance.getMap( "map" );
  • map.addEntryListener( listener, true );

map.removeEntryListener( listener );

IMap map = hazelcastInstance.getMap( "map" );

String listenerId = map.addEntryListener( listener, true );

map.removeEntryListener( listenerId );

  • IMap更改:

    • tryRemove(K key, long timeout, TimeUnit timeunit) 返回boolean,指示操作是否成功。
    • tryLockAndGet(K key, long time, TimeUnit timeunit) 已移除。
    • putAndUnlock(K key, V value) 已移除。
    • lockMap(long time, TimeUnit timeunit)并被unlockMap()删除。
    • getMapEntry(K key)被重命名为getEntryView(K key)。返回的对象的类型,MapEntry类重命名为EntryView。
    • 合并策略没有预定义的名称。您只需提供合并策略实现的完整类名:

<merge-policy>com.hazelcast.map.merge.PassThroughMergePolicy</merge-policy>

此外,MergePolicy接口已重命名为MapMergePolicy,并且还从已实现的merge()方法返回null,从而导致删除现有条目。

  • IQueue更改: IQueue API没有变化,但是如何IQueue配置更改。使用Hazelcast 3.0,队列不会有后备映射配置。备份计数等设置将直接在队列配置上配置。有关队列配置的详细信息,请参阅“ 队列”部分。
  • 事务API更改:在Hazelcast 3.0中,事务API完全不同。请参阅交易章节。
  • ExecutorService API更改:已删除类MultiTask和DistributedTask。新呈现的接口IExecutorService支持所有功能。请参阅执行者服务部分。
  • LifeCycleService API简化了生命周期。pause(),resume(),restart()方法已被删除。
  • AtomicNumber AtomicNumber类已重命名为IAtomicLong。
  • ICountDownLatch await()已删除操作。我们希望用户使用await()带超时参数的方法。
  • ISemaphore API将ISemaphore已被大大改变。attach(),detach()方法已被删除。
    • 在2.x版本中,max-size驱逐策略的默认值为cluster_wide_map_size。在3.x版本中,默认为PER_NODE。升级后max-size,如果未更改,则应根据此新默认值进行设置。否则,可能会抛出OutOfMemory异常。

2.5。启动会员和客户

安装Hazelcast后,您就可以开始使用了。

在这个简短的教程中,您将执行以下活动。

  1. 使用Hazelcast分布式映射和队列创建一个简单的Java应用程序。
  2. 运行我们的应用程序两次,以拥有一个包含两个成员(JVM)的集群。
  3. 使用Hazelcast Native Java Client API从另一个Java应用程序连接到我们的集群。

让我们开始。

  • 以下代码启动第一个Hazelcast成员并创建并使用customers映射和队列。
  • public class GettingStarted {
  • public static void main(String[] args) {
  • Config cfg = new Config();
  • HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
  • Map<Integer, String> mapCustomers = instance.getMap("customers");
  • mapCustomers.put(1, "Joe");
  • mapCustomers.put(2, "Ali");
  • mapCustomers.put(3, "Avi");
  • System.out.println("Customer with key 1: "+ mapCustomers.get(1));
  • System.out.println("Map Size:" + mapCustomers.size());
  • Queue<String> queueCustomers = instance.getQueue("customers");
  • queueCustomers.offer("Tom");
  • queueCustomers.offer("Mary");
  • queueCustomers.offer("Jane");
  • System.out.println("First customer: " + queueCustomers.poll());
  • System.out.println("Second customer: "+ queueCustomers.peek());
  • System.out.println("Queue size: " + queueCustomers.size());
  • }

}

  • GettingStarted第二次运行此类以启动第二个成员。成员组成一个集群,输出类似于以下内容。
  • Members {size:2, ver:2} [
  • Member [127.0.0.1]:5701 - e40081de-056a-4ae5-8ffe-632caf8a6cf1 this
  • Member [127.0.0.1]:5702 - 93e82109-16bf-4b16-9c87-f4a6d0873080

]

在这里,您可以看到cluster(size)和成员列表version(ver)的大小。当集群发生变化时,成员列表版本将增加,例如,成员离开或加入集群。

Hazelcast 3.9引入了上述成员列表格式。您可以使用系统属性启用旧版成员列表格式,该格式用于Hazelcast 3.9之前的版本hazelcast.legacy.memberlist.format.enabled。请参阅“ 系统属性”一章。以下是旧成员列表格式的示例:

Members [2] {

Member [127.0.0.1]:5701 - c1ccc8d4-a549-4bff-bf46-9213e14a9fd2 this

Member [127.0.0.1]:5702 - 33a82dbf-85d6-4780-b9cf-e47d42fb89d4

}

  • 现在,将库添加到类路径中。这是使用Hazelcast客户端所必需的。hazelcast-client-<version>.jar
  • 以下代码启动Hazelcast Client,连接到我们的群集,并打印customers地图的大小。
  • public class GettingStartedClient {
  • public static void main( String[] args ) {
  • ClientConfig clientConfig = new ClientConfig();
  • HazelcastInstance client = HazelcastClient.newHazelcastClient( clientConfig );
  • IMap map = client.getMap( "customers" );
  • System.out.println( "Map Size:" + map.size() );
  • }

}

  • 运行它时,您会看到客户端正确连接到群集并将地图大小打印为3

Hazelcast还提供了一个管理中心工具,使您可以监控群集。要使用它,mancenter-<version>.war请将ZIP文件中包含的内容部署到Web服务器。您可以使用它来监视您的地图,队列和其他分布式数据结构和成员。有关使用说明,请参阅Hazelcast管理中心参考手册。

默认情况下,Hazelcast使用多播来发现可以组成群集的其他成员。如果您在同一网络上与其他Hazelcast开发人员合作,您可能会发现自己在默认设置下加入他们的群集。Hazelcast提供了一种在使用多播时隔离同一网络中的群集的方法。 有关更多信息,请参阅创建群集组。或者,如果您不希望使用默认多播机制,则可以提供允许加入的固定IP地址列表。有关更多信息,请参阅加入配置部分。

 

不建议将生成多播机制用于生产,因为UDP通常在生产环境中被阻止,而其他发现机制更明确。请参阅发现机制部分。

 

您还可以在此处查看视频教程。

2.6。在包中使用脚本

下载并解压缩Hazelcast ZIP或TAR.GZ软件包时,您将在该/bin文件夹下看到三个脚本,这些脚本为成员和集群管理提供基本功能。

以下是每个脚本的名称和说明:

  • start.sh/ start.bat:在工作目录*中启动默认配置的Hazelcast成员。
  • stop.sh/ stop.bat:停止在当前工作目录中启动的Hazelcast成员。
  • cluster.sh:提供群集管理的基本功能,例如获取和更改群集状态,关闭群集或强制群集清除其持久数据并重新启动。请参阅使用脚本cluster.sh部分以了解此脚本的用法。
 

start.sh/ start.batscripts允许您为每个文件夹启动一个Hazelcast实例。要启动新实例,请将Hazelcast ZIP或TAR.GZ包解压缩到新文件夹中。

2.7。在Amazon EC2上部署

您可以使用第三方工具(如Vagrant和Chef)将Hazelcast项目部署到Amazon EC2环境中。

您可以在hazelcast-code-samples包amazon-ec2-vagrant-chef的hazelcast-integration文件夹中找到一个示例部署项目(),其中包含逐步说明,您可以在hazelcast.org下载该文件夹。有关更多信息,请参阅此示例项目。

2.8。在Microsoft Azure上部署

您可以将Hazelcast群集部署到Microsoft Azure环境中。为此,您的群集应该使用适用于Microsoft Azure的Hazelcast Discovery插件。您可以在Hazelcast Azure的 GitHub存储库中找到有关此插件的信息。

有关如何将群集自动部署到Azure的信息,请参阅Hazelcast Azure插件存储库的“ 部署”部分。

2.9。部署在Pivotal Cloud Foundry上

从Hazelcast 3.7开始,您可以将Hazelcast群集部署到Pivotal Cloud Foundry上。它可作为Pivotal Cloud Foundry Tile提供,您可以在此处下载。您可以在https://docs.pivotal.io/partners/hazelcast/index.html上找到安装和使用说明以及发行说明文档。

2.10。使用Docker进行部署

您可以使用Docker容器部署Hazelcast项目。Hazelcast在Docker上有以下图像:

  • Hazelcast IMDG
  • Hazelcast IMDG Enterprise
  • Hazelcast管理中心
  • Hazelcast OpenShift

从Docker注册表中提取图像后,您可以运行映像以使用Hazelcast的默认配置启动管理中心或Hazelcast实例。所有存储库都提供最新的稳定版本,但您也可以提取特定版本。您还可以在运行映像时指定环境变量。

如果要启动自定义Hazelcast实例,可以通过提供自己的配置文件来扩展Hazelcast图像。

此功能以Hazelcast插件的形式提供。有关配置和用法的详细信息,请参阅Hazelcast Docker上自己的GitHub回购。

Hazelcast IMDG参考中文版手册-第二章-入门相关推荐

  1. Hazelcast IMDG参考中文版手册-第一章-前言

    版本3.10.4 前言 欢迎使用Hazelcast IMDG(内存数据网格)参考手册.本手册包含概念,说明和示例,可指导您如何使用Hazelcast和构建Hazelcast IMDG应用程序. 作为本 ...

  2. Hazelcast IMDG参考中文版手册-第七章-分布式数据结构

    如概述部分所述,Hazelcast提供Java接口的分布式实现.以下是这些实现的列表,其中包含指向本手册中相应部分的链接. 标准实用程序集合 Map是分布式实现的java.util.Map.它可以让你 ...

  3. Hazelcast IMDG参考中文版手册-第五章-集群设置

    本章介绍Hazelcast集群以及集群成员和本机客户端用于构成Hazelcast集群的方法. 5.1.发现机制 Hazelcast集群是运行Hazelcast的集群成员网络.集群成员(也称为节点)自动 ...

  4. Hazelcast IMDG参考中文版手册-第十一章-分布式查询

    分布式查询访问存储在相同或不同成员上的多个数据源的数据. Hazelcast对您的数据进行分区,并将其分布到成员集群中.您可以迭代映射条目并查找您感兴趣的某些条目(由谓词指定).但是,这不是非常有效, ...

  5. Hazelcast IMDG参考中文版手册-第三章-概述

    Hazelcast是一个开源的内存数据网格(IMDG).它提供弹性可扩展的分布式内存计算,被广泛认为是应用程序性能最快,最具扩展性的方法.Hazelcast在开源中做到这一点.更重要的是,Hazelc ...

  6. Hazelcast IMDG参考中文版手册-第四章-配置

    本章介绍配置Hazelcast应用程序的选项,并说明配置时可以使用的实用程序.您可以使用以下选项之一或混合配置Hazelcast: 陈述性的方式 程序化方式 使用Hazelcast系统属性 在Spri ...

  7. .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core.既 ...

  8. Android 渗透测试学习手册 第二章 准备实验环境

    第二章 准备实验环境 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 在上一章中,我们了解了 Android 安全性及其体系结构的基础知识. 在本章中,我们将了解如何 ...

  9. R700指令集架构参考手册——第二章:程序组织和状态

    R700程序由控制流(CF).ALU(译者注:算术逻辑单元).取纹理和取顶点指令组成.ALU可以具有多达三个源操作数和一个目的操作数.指令对32位或64位IEEE浮点值以及带符号或无符号整型进行操作. ...

最新文章

  1. java class isassignablefrom_Java之——Class的isAssignableFrom方法
  2. 进阶篇:6)样机制作与验证
  3. JSK-25 两数之和【暴力】
  4. 小程序发布,你方了么?
  5. 388.文件的最长绝对路径
  6. 数据库试题及答案 两套
  7. 计算机毕业设计Java在线小说系统(源码+系统+mysql数据库+Lw文档)
  8. 计算机如何把应用储存进u盘,怎样把word中的内容保存进u盘 怎样把word文档放到u盘里?...
  9. sort排序不区分大小写C语言,使用sort进行不区分大小写的排序(list,key = str.lower)...
  10. 【邻接表】77 邻接表:顶点u的下一个邻接点
  11. 低客单价的商品怎样做运营、怎么样做优化、以及怎样做推广
  12. 【springboot项目添加ico方法】
  13. UPS知识全集,值得收藏!
  14. 对我的学科方向软件工程开发技术方向的认识
  15. 开发过程中的算法小技巧:
  16. 机器人快跑!伯克利和CMU联合开发两足机器人,两条细腿,一马平川
  17. 【新炬网络名师大讲堂】关于IMSI/MSISDN/IMEI的介绍
  18. FreeRTOS之freeconfig.c(S32k144)
  19. kill 掉服务器某个进程
  20. 【平面设计基础】07:版式——排版原则

热门文章

  1. Spring Cloud 工具集
  2. 2015年12月学习计划
  3. 2016大学计算机陈春丽,2016级计算机类专业分流结果公示.PDF
  4. 2017,那些引发关注的新建展馆
  5. ubuntu 浏览器flash插件安装
  6. 慧数纵览:日产在华三大工厂将减产30,000辆
  7. un1que成员介绍
  8. art-illumina模拟测序
  9. 3D炫酷赛车游戏【附源码】设计实现
  10. 拓宽你的认知,优秀的人都掌握的40个经典思维模型「附全部模型PPT」