Hazelcast入门指南第1部分
介紹
我將在Hazelcast上做一個(gè)系列。 我從Twitter了解了該產(chǎn)品。 他們決定跟隨我,經(jīng)過對(duì)他們所做工作的研究后,我決定跟隨他們。 我在推特上說,Hazelcast將是分布式密碼破解者的重要Struts。 這引起了一些興趣,我決定加入一個(gè)。 Hazelcast的副總裁開始與我聯(lián)系,我們認(rèn)為雖然餅干是一個(gè)好項(xiàng)目,但社區(qū)(和我)將從為初學(xué)者準(zhǔn)備的一系列職位中受益。 在www.hazelcast.com上找到的《 哈茲卡斯特之書》預(yù)覽中,我得到了很多很好的信息。
什么是淡褐色?
Hazelcast是一個(gè)分布式的內(nèi)存數(shù)據(jù)庫。 使用Hazelcast的世界各地都有項(xiàng)目。 該代碼在Apache License 2.0下是開源的。
特征
Hazelcast中已經(jīng)內(nèi)置了許多功能。 這里是其中的一些:
- 自動(dòng)發(fā)現(xiàn)網(wǎng)絡(luò)上的節(jié)點(diǎn)
- 高可用性
- 內(nèi)存?zhèn)浞?
- 緩存數(shù)據(jù)的能力
- 分布式線程池
- 分布式執(zhí)行器服務(wù)
- 在不同分區(qū)中具有數(shù)據(jù)的能力。
- 異步或同步保留數(shù)據(jù)的能力。
- 交易次數(shù)
- SSL支持
- 存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu):
- 清單
- 不同流程之間的通信結(jié)構(gòu)
- 隊(duì)列
- 原子操作
- 長(zhǎng)壽
- ID生成
- IdGenerator
- 鎖定
- 等量線
使用Hazelcast
只是和Hazelcast一起玩耍和閱讀就教會(huì)了我去做這些事情。
讓我解釋這些假設(shè):
數(shù)據(jù)將存儲(chǔ)為字節(jié)數(shù)組
我從《榛子之書》中獲得了這些信息,因此這并不是一個(gè)假設(shè)。 這很重要,因?yàn)椴粌H數(shù)據(jù)以這種方式存儲(chǔ), 密鑰也是如此。 如果使用除基元或字符串以外的其他鍵作為鍵,這會(huì)使生活變得非常有趣。 hash()和equals()的開發(fā)人員必須以鍵的形式考慮它,將其視為字節(jié)數(shù)組而不是類。
數(shù)據(jù)將通過網(wǎng)絡(luò)
這是一個(gè)分布式數(shù)據(jù)庫,因此部分?jǐn)?shù)據(jù)將存儲(chǔ)在其他節(jié)點(diǎn)中。 也有備份和緩存。 有一些技術(shù)和設(shè)置可以減少通過網(wǎng)絡(luò)傳輸數(shù)據(jù)的速度,但如果要獲得高可用性,則必須進(jìn)行備份。
數(shù)據(jù)是遠(yuǎn)程的
這是一個(gè)分布式數(shù)據(jù)庫,因此數(shù)據(jù)庫的一部分將存儲(chǔ)在其他節(jié)點(diǎn)上。 我提出這個(gè)假設(shè)并不是要屈服于數(shù)據(jù)是遠(yuǎn)程的事實(shí),而是要激勵(lì)設(shè)計(jì)以確保在大多數(shù)數(shù)據(jù)所在的位置執(zhí)行操作。 如果開發(fā)人員足夠熟練,則可以將其降至最低。
如果數(shù)據(jù)不在內(nèi)存中,則不存在
不要忘記這是一個(gè)內(nèi)存數(shù)據(jù)庫。 如果未將其加載到內(nèi)存中,則數(shù)據(jù)庫將不知道數(shù)據(jù)存儲(chǔ)在其他位置。 該數(shù)據(jù)庫不會(huì)保留數(shù)據(jù)以備以后使用。 之所以持續(xù)存在,是因?yàn)閿?shù)據(jù)很重要。 一旦它內(nèi)存不足,就無法像傳統(tǒng)數(shù)據(jù)庫( MySQL)那樣將其從磁盤中帶回。
數(shù)據(jù)存儲(chǔ)
Java開發(fā)人員將很高興知道Hazelcast的數(shù)據(jù)存儲(chǔ)容器(其中一個(gè)是java.util.Collections接口的擴(kuò)展)除外。 例如,一個(gè)IList遵循與java.util.List相同的方法協(xié)定。 以下是不同數(shù)據(jù)存儲(chǔ)類型的列表:
- IList –這使許多對(duì)象按其放入順序排列
- IQueue –在BlockingQueue之后,可以用作JMS中的Message Queue的替代。 這可以通過QueueStore保留
- IMap –這擴(kuò)展了ConcurrentMap。 它也可以由MapStore保留。 它還具有許多其他功能,我將在另一篇文章中討論。
- ISet –保留一組唯一的元素,這些元素不能保證順序。
- MultiMap –它不遵循典型的地圖,因?yàn)槊總€(gè)鍵可以有多個(gè)值。
例
設(shè)定
對(duì)于Hazelcast包含的所有功能,初始設(shè)置步驟非常簡(jiǎn)單。
Hazelcast在一些地方查找配置文件:
- 由hazelcast.config屬性定義的路徑
- 如果類路徑包含在hazelcast.config中,則類路徑中的hazelcast.xml
- 工作目錄
- 如果其他所有方法均失敗,則將hazelcast-default.xml加載到hazelcast.jar中。
- 如果根本不想處理配置文件,則可以以編程方式完成配置。
此處的配置示例定義了用于加入的多播。 它還定義了IMap“ a”。
關(guān)于配置的警告
Hazelcast不會(huì)將配置復(fù)制到每個(gè)節(jié)點(diǎn)。 因此,如果希望能夠共享一種數(shù)據(jù)結(jié)構(gòu),則需要在每個(gè)節(jié)點(diǎn)中完全相同地定義它。
碼
這段代碼調(diào)出了兩個(gè)節(jié)點(diǎn),并使用IdGenerator將值放在實(shí)例的IMap中,以生成鍵并從instance2讀取數(shù)據(jù)。
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);}}非常簡(jiǎn)單,不是嗎! 請(qǐng)注意,檢索地圖實(shí)例時(shí),我什至沒有使用IMap接口。 我只是使用java.util.Map接口。 這不利于使用Hazelcast的分布式功能,但在此示例中,它工作正常。
在這里可以觀察到工作中的假設(shè)。 第一個(gè)假設(shè)是將信息存儲(chǔ)為字節(jié)數(shù)組。 注意數(shù)據(jù)和密鑰是可序列化的。 這很重要,因?yàn)檫@是存儲(chǔ)數(shù)據(jù)所必需的。 第二個(gè)和第三個(gè)假設(shè)適用于instance2節(jié)點(diǎn)正在訪問的數(shù)據(jù)。 第四個(gè)假設(shè)成立是因?yàn)樽x取時(shí)會(huì)顯示放入“ a”映射中的每個(gè)值。 使用subversion可以在http://darylmathisonblog.googlecode.com/svn/trunk/HazelcastSimpleApp中找到所有這些示例。 該項(xiàng)目是使用Netbeans 8.0進(jìn)行的。
結(jié)論
通過顯示IMap和IdGenerator的簡(jiǎn)單示例回顧了Hazelcast眾多功能的快速概述。 討論了在分布式內(nèi)存數(shù)據(jù)庫環(huán)境中開發(fā)時(shí)適用的一系列假設(shè)。
資源資源
榛子之書。 從http://www.hazelcast.com下載
翻譯自: https://www.javacodegeeks.com/2014/10/beginners-guide-to-hazelcast-part-1.html
總結(jié)
以上是生活随笔為你收集整理的Hazelcast入门指南第1部分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 菜籽油质量等级一二三哪个好(菜籽油质量等
- 下一篇: JAXB –新手的观点,第2部分