第二章 起步

本章就相当简单粗暴了,用一个个例子说明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. .NET (四)委托第四讲:内置委托Comparison

    // 摘要: // 表示比较同一类型的两个对象的方法. // // 参数: // x: // 要比较的第一个对象. // // y: // 要比较的第二个对象. // // 类型参数: // T: / ...

  2. Word设置首页不同

    Sub 批量格式设置()  '此代码为指定文件夹中所有选取的WORD文件的进行格式设置 Dim MyDialog As FileDialog, vrtSelectedItem As Variant, ...

  3. 让ztree树默认是关闭的

    只需要在ztree的回调函数中加 var treeObj = $.fn.zTree.getZTreeObj("zTreeContent");treeObj.expandAll(tr ...

  4. Winform 窗体单例

    有窗体Form1和窗体Form2,单击Form1上按钮,只弹出一个Form2. Form2里自定义一个方法,里面判断是否弹出Form2,没有时弹出Form2. public static Form2 ...

  5. SQL SELECT SET

      SELECT SET 同时对多个变量同时赋值时 支持 不支持 表达式返回多个值时 将返回的最后一个值赋给变量 出错 表达式未返回值时 变量保持原值 变量被赋null值

  6. NET Core1.0之CentOS平台开发控制台程序DEMO

    微软发布NET Core1.0正式版本,并支持了red hat linux平台,所以在CentOS平台,通过编辑器玩下控制器程序. 一.安装.NET Core SDK 先下载SDK并放在指定目录. s ...

  7. PadLeft 和 PadRight

    1 PadLeft 即:向已知字符串左边补充字符,使整个字符串到达指定长度 CREATE FUNCTION PadLeft ( ),/*原始字符*/ @TotalLength int,/*总长度*/ ...

  8. sql一个表中两个字段合并求和

    sql一个表中两个字段,合并求和 SELECT SUM(字段a+'.'+字段b) as total  from TABLE

  9. const用法小结

    const与指针 char *const p --> char *(const p) --> 指针常量 char const *p --> char (const *p) --> ...

  10. Libcurl多线程crash问题(cento)

    cento :http://blog.csdn.net/delphiwcdj/article/details/18284429 1 问题背景 后台系统有一个单线程的http接口,为了提高并发处理能力, ...