介绍

我将在Hazelcast上做一个系列。 我从Twitter了解了该产品。 他们决定跟随我,经过对他们所做工作的研究后,我决定跟随他们。 我在推特上说,Hazelcast将是分布式密码破解者的重要Struts。 这引起了一些兴趣,我决定加入一个。 Hazelcast的副总裁开始与我联系,我们认为虽然饼干是一个好项目,但社区(和我)将从为初学者准备的一系列职位中受益。 在www.hazelcast.com上找到的《 哈兹卡斯特之书》预览中我得到了很多很好的信息。

什么是淡褐色?

Hazelcast是一个分布式的内存数据库。 使用Hazelcast的世界各地都有项目。 该代码在Apache License 2.0下是开源的。

特征

Hazelcast中已经内置了许多功能。 这里是其中的一些:

  • 自动发现网络上的节点
  • 高可用性
  • 内存备份
  • 缓存数据的能力
  • 分布式线程池
    • 分布式执行器服务
  • 在不同分区中具有数据的能力。
  • 异步或同步保留数据的能力。
  • 交易次数
  • SSL支持
  • 存储数据的结构:
    • 清单
  • 不同流程之间的通信结构
    • 队列
  • 原子操作
    • 长寿
  • ID生成
    • IdGenerator
  • 锁定
    • 等量线

使用Hazelcast

只是和Hazelcast一起玩耍和阅读就教会了我去做这些事情。

  1. 数据将存储为字节数组。 (这不是一个假设,我是直接从书中得到的)
  2. 数据将通过网络传输。
  3. 数据是远程的。
  4. 如果数据不在内存中,则不存在。

让我解释这些假设:

数据将存储为字节数组

我从《榛子之书》中获得了这些信息,因此这并不是一个假设。 这很重要,因为不仅数据以这种方式存储, 密钥也是如此。 如果使用除基元或字符串以外的其他键作为键,这会使生活变得非常有趣。 hash()和equals()的开发人员必须以键的形式考虑它,将其视为字节数组而不是类。

数据将通过网络

这是一个分布式数据库,因此部分数据将存储在其他节点中。 也有备份和缓存。 有一些技术和设置可以减少通过网络传输数据的速度,但如果要获得高可用性,则必须进行备份。

数据是远程的

这是一个分布式数据库,因此数据库的一部分将存储在其他节点上。 我提出这个假设并不是要屈服于数据是远程的事实,而是要激励设计以确保在大多数数据所在的位置执行操作。 如果开发人员足够熟练,则可以将其降至最低。

如果数据不在内存中,则不存在

不要忘记这是一个内存数据库。 如果未将其加载到内存中,则数据库将不知道数据存储在其他位置。 该数据库不会保留数据以备以后使用。 之所以持续存在,是因为数据很重要。 一旦它内存不足,就无法像传统数据库( MySQL)那样将其从磁盘中带回。

数据存储

Java开发人员将很高兴知道Hazelcast的数据存储容器(其中一个是java.util.Collections接口的扩展)除外。 例如,一个IList遵循与java.util.List相同的方法协定。 以下是不同数据存储类型的列表:

  • IList –这使许多对象按其放入顺序排列
  • IQueue –在BlockingQueue之后,可以用作JMS中的Message Queue的替代。 这可以通过QueueStore保留
  • IMap –这扩展了ConcurrentMap。 它也可以由MapStore保留。 它还具有许多其他功能,我将在另一篇文章中讨论。
  • ISet –保留一组唯一的元素,这些元素不能保证顺序。
  • MultiMap –它不遵循典型的地图,因为每个键可以有多个值。

设定

对于Hazelcast包含的所有功能,初始设置步骤非常简单。

  1. 下载在Hazelcast zip文件www.hazelcast.org和提取内容。
  2. 将在lib目录中找到的jar文件添加到一个人的类路径中。
  3. 创建一个名为hazelcast.xml的文件,并将以下内容放入文件中
<?xml version="1.0" encoding="UTF-8"?>
<hazelcast
xsi:schemaLocation ="http://www.hazelcast.com/schema/config
http://www.hazelcast.com/schema/config/hazelcast-config-3.0.xsd "
xmlns ="http://www.hazelcast.com/schema/config "
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"><network><join><multicast enabled="true"/></join></network><map name="a"></map>
</hazelcast>

Hazelcast在一些地方查找配置文件:

  • 由hazelcast.config属性定义的路径
  • 如果类路径包含在hazelcast.config中,则类路径中的hazelcast.xml
  • 工作目录
  • 如果其他所有方法均失败,则将hazelcast-default.xml加载到hazelcast.jar中。
  • 如果根本不想处理配置文件,则可以以编程方式完成配置。

此处的配置示例定义了用于加入的多播。 它还定义了IMap“ a”。

关于配置的警告

Hazelcast不会将配置复制到每个节点。 因此,如果希望能够共享一种数据结构,则需要在每个节点中完全相同地定义它。

这段代码调出了两个节点,并使用IdGenerator将值放在实例的IMap中,以生成键并从instance2读取数据。

package hazelcastsimpleapp;import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IdGenerator;
import java.util.Map;/**** @author Daryl*/
public class HazelcastSimpleApp {/*** @param args the command line arguments*/public static void main(String[] args) {HazelcastInstance instance = Hazelcast.newHazelcastInstance();HazelcastInstance instance2 = Hazelcast.newHazelcastInstance();Map map = instance.getMap("a");IdGenerator gen = instance.getIdGenerator("gen");for(int i = 0; i < 10; i++) {map.put(gen.newId(), "stuff " + i);}Map map2 = instance2.getMap("a");for(Map.Entry entry: map2.entrySet()) {System.out.printf("entry: %d; %s\n", entry.getKey(), entry.getValue());}System.exit(0);}}

非常简单,不是吗! 请注意,检索地图实例时,我什至没有使用IMap接口。 我只是使用java.util.Map接口。 这不利于使用Hazelcast的分布式功能,但在此示例中,它工作正常。

在这里可以观察到工作中的假设。 第一个假设是将信息存储为字节数组。 注意数据和密钥是可序列化的。 这很重要,因为这是存储数据所必需的。 第二个和第三个假设适用于instance2节点正在访问的数据。 第四个假设成立是因为读取时会显示放入“ a”映射中的每个值。 使用subversion可以在http://darylmathisonblog.googlecode.com/svn/trunk/HazelcastSimpleApp中找到所有这些示例。 该项目是使用Netbeans 8.0进行的。

结论

通过显示IMap和IdGenerator的简单示例回顾了Hazelcast众多功能的快速概述。 讨论了在分布式内存数据库环境中开发时适用的一系列假设。

资源资源

榛子之书。 从http://www.hazelcast.com下载

翻译自: https://www.javacodegeeks.com/2014/10/beginners-guide-to-hazelcast-part-1.html

Hazelcast入门指南第1部分相关推荐

  1. Hazelcast入门指南第6部分

    这是有关Hazelcast的一系列文章中的第六篇. 如果一个人没有看过过去的五年,请到表中的内容后 ,我创建赶上. 本地客户 在上一篇文章之后,我决定要去本地化. 是的,我将演示Hazelcast自己 ...

  2. Hazelcast入门指南第3部分

    这是从初学者的角度来看一系列有关如何使用Hazelcast的文章的延续. 如果您还没有阅读最后两个,我鼓励您阅读它们: Hazelcast入门指南第1部分 Hazelcast入门指南第2部分 原始人来 ...

  3. Hazelcast入门指南第4部分

    这是我的Hazelcast系列的第四部分. 如果一个人没有看到其他三个人,我建议一个人去看第1 部分 , 第2 部分和第3部分 . 记录中 日志记录是任何应用程序的重要功能,我的示例也是如此. Sys ...

  4. Hazelcast入门指南第7部分

    这是解释如何使用Hazelcast的系列文章的续篇. 如果一个人没有阅读其他六个帖子,请转到目录并阅读其他帖子. 不同的地图种类 Hazelcast的MultiMap打破了以前使用java.util. ...

  5. Hazelcast入门指南第5部分

    这是我撰写的有关Hazelcast的一系列文章的延续. 我强烈建议您阅读其他内容: 第1 部分 , 第2 部分 , 第3 部分和第4部分 . 让人一见倾心的东西? 这篇文章中将没有Hazelcast专 ...

  6. Hazelcast入门指南第2部分

    本文是我开始以Hazelcast (分布式内存数据库)为特色的系列文章的继续. 如果尚未阅读第一篇文章,请单击此处 . 分布式馆藏 Hazelcast具有许多可用于存储数据的分布式集合. 以下是它们的 ...

  7. hazelcast入门教程_Hazelcast入门指南第6部分

    hazelcast入门教程 这是有关Hazelcast的一系列文章中的第六篇. 如果一个人没有看过过去的五年,请到表中的内容后 ,我创建赶上. 本地客户 在上一篇文章之后,我决定要去本地化. 是的,我 ...

  8. hazelcast入门教程_Hazelcast入门指南第3部分

    hazelcast入门教程 这是从初学者的角度来看一系列有关如何使用Hazelcast的文章的延续. 如果您还没有阅读最后两个,我鼓励阅读它们: Hazelcast入门指南第1部分 Hazelcast ...

  9. hazelcast入门教程_Hazelcast入门指南第4部分

    hazelcast入门教程 这是我的Hazelcast系列的第四部分. 如果一个人没有看到其他三个人,我建议一个人去看第1 部分 , 第2 部分和第3部分 . 记录中 日志记录是任何应用程序的重要功能 ...

最新文章

  1. 分区字段必须包含在主键字段_24 个必须掌握的数据库面试问题!
  2. SAP RETAIL 根据Merchandise Category Hierarchy Level查询物料清单
  3. php并发访问排队_php解决高并发问题
  4. android 联想,民间高手让联想Yoga变安卓平板_联想笔记本电脑_笔记本新闻-中关村在线...
  5. SAP UI5框架绘制footer区域的入口调试
  6. 关于在Visual Studio 2019预览版中的用户体验和界面的变化
  7. Robotframework中的日志级别
  8. linux 内核模块发送udp,在内核模块级缓冲UDP的问题(当然不是SOCKET编程了。)
  9. 手机桌面没有计算机图标,手机桌面图标不见了,更改桌面图标的大小-
  10. phalcon:model 事件与事件管理器
  11. bzoj4152 [AMPPZ2014]The Captain
  12. php简单混淆类加密文件如何解密?
  13. 计算机的超级终端程序无法使用,超级终端怎么用?
  14. Pr:视频效果( 2020 版)速览
  15. 研究生应如何合理管理时间
  16. 小米笔记本BIOS版本升级固件 小米笔记本Pro15.6【附下载地址】
  17. MYSQL Error:You must SET PASSWORD before execut...
  18. 基于 arduino 的两轮自行车
  19. 《如果……》拉迪亚德·吉卜林
  20. 构筑自有流量池,电商宝SCRM(微信公众号和个人号管家)助力企业打赢粉丝争夺战...

热门文章

  1. JS中的map函数(会改变不是基本类型的数组的值)
  2. 2018蓝桥杯省赛---java---C---3(字母阵列)
  3. 双向链表的(CRUD)
  4. kafak消费者从头开始消费(消费者组)
  5. 如何创建虚拟硬盘 + os 读取硬盘参数代码
  6. 会话技术Session
  7. 单列集合Set的实现类TreeSet
  8. java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务
  9. apache ignite_Apache Ignite,Hazelcast,Cassandra和Tarantool之间的主要区别
  10. apache lucene_Apache Lucene基础教程