第二章 起步

本章就相当简单粗暴了,用一个个例子说明hazelcast怎么用.

1.map,set,list这些集合类都是开箱即用的,只要从Hazelcast的实例中获取一份就行.

2.增加了MultiMap(google的guava也有),允许一个key可以有多个value.

3.增加了Predicate做数据筛选,可以用默认的sqlpredicates也可自定义,甚至可以自定义分页查询.

client单独出一个jar包了.书里的法子不行.只能自己写.

首先在pom里面加入依赖

<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast-client</artifactId>
</dependency>

新建一个client程序来执行:

import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.client.HazelcastClient;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;

public class SimpleClient {
public static void main(String[] args) {
ClientConfig clientConfig = new ClientConfig();
clientConfig.addAddress("127.0.0.1:5701");
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
IMap map = client.getMap("manualCities");
System.out.println("Map Size:" + map.size());
}
}

或者使用ConsoleApp,这个好像更接近原来的例子..

吐槽一下,才100多页的书还贴代码,印刷体看的很不舒服,建议还是下载到IDE里面看吧..

第三章 并发

除了提供分布式的集合类,Hazelcast也提供了更为底层的并发控制能力,以确保我们的应用程序可以并发执行.

一.先搞了两个例子,map,queue的多个副本都是公用的,就是说一边改了,到处都变化.这就有可能造成使用上的问题.所以需要引入锁机制

1.Hazelcast可以调用getLock获取到一个同步锁,在这个基础上就可以避免被多个修改造成问题.

2.可以对某一个数据项目进行Lock.例如调用map.tryLock()

二.Hazelcast还支持并发事务回滚

事务机制为,先锁住相关的数据,在事务中仅仅修改缓存的本地数据,当事务提交时候,一起进行修改.并释放锁.如果事务失败,只要释放锁,并清除本地修改缓存即可.

三.生成唯一ID

可以获取getIdGenerator来生成,这个是有缓存的,第二个就从10000开始的,而不是书里面的1百万.

四.事件分发(MessageListener)--of就是用这个

Hazelcast也实现了分布式的消息事件(订阅.广播),做消息分发.

注意:监听Listener是单线程的,这样能确保消息收到的顺序和接收到的顺序是一致的.所以我们必须保证处理消息的进程不能干太多事,否则有可能造成消息堵塞

例如在TopicListener的onMessage中加上

Thread.sleep(5000);

这样就会变成消息处理的时间越来越晚于生成时间,无法及时处理(堵住了)...

Received message: Tue Dec 01 17:26:16 GMT+08:00 2015 - Member [40.192.191.140]:5701 this says hello:INT: 1548Process Date:Tue Dec 01 17:26:22 GMT+08:00 2015

Received message: Tue Dec 01 17:26:18 GMT+08:00 2015 - Member [40.192.191.140]:5701 this says hello:INT: 1840Process Date:Tue Dec 01 17:26:27 GMT+08:00 2015

Received message: Tue Dec 01 17:26:20 GMT+08:00 2015 - Member [40.192.191.140]:5701 this says hello:INT: 225Process Date:Tue Dec 01 17:26:32 GMT+08:00 2015

Received message: Tue Dec 01 17:26:21 GMT+08:00 2015 - Member [40.192.191.140]:5702 this says hello:INT: 261Process Date:Tue Dec 01 17:26:37 GMT+08:00 2015

Received message: Tue Dec 01 17:26:22 GMT+08:00 2015 - Member [40.192.191.140]:5701 this says hello:INT: 1876Process Date:Tue Dec 01 17:26:42 GMT+08:00 2015

Received message: Tue Dec 01 17:26:23 GMT+08:00 2015 - Member [40.192.191.140]:5702 this says hello:INT: 1308Process Date:Tue Dec 01 17:26:47 GMT+08:00 2015

解决办法也很简单,在listener里面使用ExecutorService对消息另外起一个线程处理.

Getting Started With Hazelcast 读书笔记(第二章、第三章)的更多相关文章

  1. 【读书笔记】C++Primer---第三章

    1.由于为了与C语言兼容,字符串字面值与标准库string类型不是同一种类型: 2.以下代码中,cin有几点需要注意:a.读取并忽略开头所有的空白字符(如空格.换行符.制表符):b.读取字符直至再次遇 ...

  2. 《javascript权威指南》读书笔记——第二篇

    <javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...

  3. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  4. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  5. The Art of Multiprocessor Programming读书笔记 (更新至第3章)

    这份笔记是我2013年下半年以来读“The Art of Multiprocessor Programming”这本书的读书笔记.目前有关共享内存并发同步相关的书籍并不多,但是学术文献却不少,跨越的时 ...

  6. 《Maven实战》(许晓斌)导读(读书笔记&第二次读后感)

    第一章 Maven简介 Maven是构建工具,但同时还是jar包管理工具.项目信息管理工具 与Make.Ant比较,更为先进 第二章 Maven的安装和配置 Windows和Unix上安装都很简单,下 ...

  7. CSS3秘笈复习:第一章&第二章&第三章

    第一章: 1.<cite>标签不仅可以将网页设置为斜体,还能给标题做上标记,使它便于被搜索引擎搜索到. 第二章: 1.import指令链接样式表: CSS本身有一种添加外部样式的方法:@i ...

  8. jQuery复习:第二章&第三章

    第二章 一.选择器 1.层次选择器 $(“ancestor descendant”)选取ancestor元素里的所有后代元素 $(“parent > child”)选取parent元素下的chi ...

  9. CSAPP深入理解计算机系统(第二版)第三章家庭作业答案

    <深入理解计算机系统(第二版)>CSAPP 第三章 家庭作业 这一章介绍了AT&T的汇编指令 比较重要 本人完成了<深入理解计算机系统(第二版)>(以下简称CSAPP) ...

随机推荐

  1. NHibernate系列文章二十四:NHibernate查询之Linq查询(附程序下载)

    摘要 NHibernate从3.0开始支持Linq查询.写Linq to NHibernate查询就跟写.net linq代码一样,非常灵活,可以很容易实现复杂的查询.这篇文章使用Linq to NH ...

  2. CoreData总结

    Core Data,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象.在此数据操作期间,我们不需要编写任何 ...

  3. 使用Spring Data JPA查询时,报result returns more than one elements异常

    public static <T> T get(String hql, Class<T> t) { EntityManager em = getFactory().create ...

  4. dev_set_draw的fill和margin模式

    注意:分别观察两张填充模式,一种是内部填充,一种是边缘填充.还有一种缺省的填充. Name dev_set_draw — Define the region fill mode. Signature ...

  5. delphi 开发者 linux 实务(转)

    Linux Essentials for Delphi Developers   There is currently no way using Delphi to target Linux. Lon ...

  6. 创建 Web 前端开发环境

    Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础. 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Grunt. ...

  7. jsp与数据库的连接

    经过一段时间的学习与上网查资料,我已经成功的用java语言连接上了数据库, 本以为同理jsp跟数据库的连接肯定水到渠成的,但是在经过尝试很多次后我发现现实永远是骨感的,最终结果是花了一个下午的时间去建 ...

  8. DGV表头双行

    try { if (e.RowIndex < 0) { RectangleF _rect = e.CellBounds; Pen _pen = new Pen(Color.Black); Pen ...

  9. EntityFramework Reverse POCO Generator工具

    https://visualstudiogallery.msdn.microsoft.com/ee4fcff9-0c4c-4179-afd9-7a2fb90f5838

  10. sublime中侧边栏字体大小的设置

    sublime这个编辑器相当强大,但是它的侧边栏字体实在是太小了,实在是反人类的设计,幸好它给了我们修改的机会 第一步:下载PackageResourceViewer插件,通过PackageContr ...