hazelcast入门教程_Hazelcast入门指南第1部分

hazelcast入门教程

介绍

我将在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入门教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java演出厅选票_高仿猫眼电影选座(选票)模块-b

上图看效果先&#xff1a;1)画座位图其实不是很难一般数据都会给坐标&#xff0c;将坐标对应座位画出来就可以了&#xff0c;主要是开场动画要设置默认大小&#xff0c;还有座位图的数量也不是固定的&#xff0c;所以在初始化座位图的时侯就默认算出了整个座位图的大小-(instan…

input发送a.jax_Java EE 7 / JAX-RS 2.0 – REST上的CORS

input发送a.jaxJava EE REST应用程序在开箱即用的开发机器上通常可以很好地运行&#xff0c;在该机器上&#xff0c;所有服务器端资源和客户端UI都指向“ localhost”或127.0.0.1。 但是&#xff0c;当涉及跨域部署时&#xff08;当REST客户端不再与托管REST API的服务器位于同…

用C/C++开发《Photoshop》图像处理软件

今晚课题【长按识别图中二维码】

javaone_代理的JavaOne 2014观察

javaone我今年无法参加JavaOne&#xff0c;但很高兴看到一些在线资源涵盖了JavaOne 2014的活动。在本文中&#xff0c;我总结了JavaOne 2014的一些观察结果&#xff0c;并提供了指向提供这些观察结果的参考的链接。提供有关这些观察的更多背景细节。 列出的观察结果没有特别的顺…

java怎么兼容switch_java – Switch语句给出了不兼容类型错误

我正在尝试编译,我收到此错误&#xff1a;enigma/Rotor.java:30: incompatible types found : java.lang.String required: int switch(name){1 error为什么我收到此错误&#xff1f;我如何解决它&#xff1f;它在包中,我似乎无法弄明白.这是代码&#xff1a;String label;Roto…

基于java的心理健康_基于SSM的JAVA心理健康网

今天记录的项目是心理健康网的规划与设计&#xff0c;这个项目是这么回事&#xff1a;心理健康是关系到人才质量的重要问题。随着网络时代的发展,传统的大学生心理健康教育教学方式和课程资源远不能解决当代大学生的心理问题。本文通过对学生心理健康网的规划与设计进行研究。首…

C/C++打造《百万级人脸识别系统》

今晚课题【长按识别图中二维码】

rhq监控软件_RHQ指标的WildFly子系统

rhq监控软件对于RHQ-Metrics&#xff0c;我已经开始为WildFly 8编写一个子系统&#xff0c;该子系统能够在WildFly内收集度量&#xff0c;然后以固定的时间间隔&#xff08;当前为每分钟&#xff09;将其发送到RHQ-Metrics服务器。 下一张图是该发件人连续运行1.5天时结果的可…

java中content啥意思_JSTL标签中的body-content标签体内容输出格式的介绍

我们在JSTL标签中看到“JSP”这种类型的定义&#xff0c;但是不知道它是什么意思&#xff0c;其实它的意思就是定义了一个JSTL标签内部是否允许使用JSP表达式&#xff0c;先来了解什么是JSTL标签体&#xff0c;请看代码&#xff1a;//中间即为JSTL标签体再来看看什么是jsp表达式…

打造最强加密工具之《绝密信息传递》

今晚课题【长按识别图中二维码】

jooq sql_用jOOQ用Java编写SQL

jooq sqljOOQ是“数据库优先”类型的安全SQL API&#xff0c;使您可以直观地用Java编写SQL&#xff0c;就像Java编译器本身支持SQL语言一样。 所有数据库模式&#xff0c;表&#xff0c;列&#xff0c;过程和其他对象均作为Java对象提供&#xff0c;可以直接在jOOQ SQL API中使…

C/C++打造经典推箱子小游戏

今晚课题【长按识别图中二维码】

php mysql crud demo_基于php和mysql的简单的dao类实现crud操作功能_PHP教程

代码如下:public function SimpleDao() {if ($this->_con null) {$this->_con mysql_connect("localhost", "root", "123456");if ($this->_con FALSE) {echo("connect to db server failed.");$this->_con null;retu…

di容器_DI容器是代码污染者

di容器尽管依赖项注入 &#xff08;aka&#xff0c;“ DI”&#xff09;是一种在OOP中组成对象的自然技术&#xff08;在Martin Fowler引入该术语之前就已知道&#xff09;&#xff0c;但Spring IoC &#xff0c; Google Guice &#xff0c; Java EE6 CDI &#xff0c; Dagger和…

C/C++高级算法之绘制曼德布洛特集

今晚课题【长按识别图中二维码】

python mysql 连接6_寒假学习进度-6(Python连接MySQL数据库)

Python连接mysql和操作软件&#xff1a;pycharm开始在pycharm下面的Terminal中安装mysql时提醒pip版本不够&#xff0c;所以需要先升级一下pippython -m pip install --upgrade pip升级完pip之后就可以下载mysqlpip install mysql下载完成后在setting中查看进行代码测试#!/usr/…

intellij 快捷键_IntelliJ中的键盘快捷键

intellij 快捷键我上周参加了Hadi Hariri在JavaOne上的演讲。 他介绍了很多我不知道的IntelliJ键盘快捷键。 非常有用的谈话。 我在下面列出了一些最有用的。 Cmd-1&#xff1a;将焦点移到“项目”窗口 在此输入任何类名&#xff08;包括使用Camel Case&#xff0c;例如HW来查…

C/C++中*和的用法详解

C中&和*的用法一直是非常让人头疼的难点&#xff0c;课本博客上讲这些知识点一般都是分开讲其用法的&#xff0c;没有详细的总结&#xff0c;导致我在这方面的知识结构格外混乱&#xff0c;在网上找到了一篇英文文章简单总结了这两个符号的一些用法&#xff0c;都是一些比较…

java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...

java基础(2)--运算符详解自增自减规则自增自减就是常用的 a a 或者 a a;前者是后缀式&#xff0c;先把a赋值给a,再加一&#xff1b;后者是后缀式&#xff0c;先加一&#xff0c;在赋值给a;而且a,a并不是原子操作&#xff0c;在当线程环境下并不会出错&#xff0c;当放在多线程…