第二章 起步

本章就相当简单粗暴了,用一个个例子说明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. 关于NK3C使用富文本编辑器(CKEditor)发送HTML邮件的使用说明

     目前NK3C发送HTML邮件使用的的编辑器是CKEditor4.6版本,关于CKEditor的使用说明如下:   1.依赖JQuery1.7版本以上,在xxx.vm中<head>< ...

  2. C语言指针变量作为函数参数

    0x01 指针变量作为函数参数的作用是:将一个变量的地址传送到另一个函数中. 0x02 简单的例子:虽然都能实现功能,但意义不同. 正确的写法: #include <stdio.h> vo ...

  3. 【转】Java集合类

    http://blog.csdn.net/zhangerqing/article/details/8122075 http://android.blog.51cto.com/268543/400557 ...

  4. 自定义UICollectinviewFlowLayout,即实现瀑布流

    如图所示,通过实现不规则的网格分布,来显示出不同的效果.因为集合视图必须要指定布局还可以显示,所以自定义布局就可以实现瀑布流的效果. //创建布局对象 WaterFlowLayout *flowLay ...

  5. Openwebrtc

    https://github.com/EricssonResearch ============================= webrtc系列不错的博客 http://blog.csdn.net ...

  6. Python描述符(descriptor)解密(转)

    原文:http://www.geekfan.net/7862/ Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装 ...

  7. ubuntu软件推荐

    本文推荐的ubuntu工具均为笔者亲用.原则:在精不在多. 0.万能类 笔者崇尚[极简主义],常用的工具如果有网页版的就尽量不用单独的client.如网页版微信. 1.系统类 截图:Deepin-sc ...

  8. Support Vector Machine (2) : Sequential Minimal Optimization

    目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...

  9. 使用noConflict重命名jQuery对象

    大多数JavaScript框架都使用$符号作为缩写,当在同一个页面使用多个JS框架时,页面很容易发生冲突.幸运的是有一个简单的方法.noConflict()函数交回$的控制权并允许你设置成自己的变量名 ...

  10. 安装Nexus