依赖Zookeeper生成全局唯一序列号
? 下面2張圖來自:http://www.open-open.com/doc/view/2e0a82e0081d489dace301a2c512053c
??
? 關(guān)于Zookeeper服務(wù)安裝,配置,啟動(dòng), 客戶端操作參見:
??http://aiilive.blog.51cto.com/1925756/1684451
??http://aiilive.blog.51cto.com/1925756/1684145
1.利用Zookeeper的znode數(shù)據(jù)版本生成序列號(hào)
?利用zkClient封裝包操作實(shí)現(xiàn):
//提前創(chuàng)建好存儲(chǔ)Seq的"/createSeq"結(jié)點(diǎn)?CreateMode.PERSISTENT public?static?final?String?SEQ_ZNODE?=?"/seq"//通過znode數(shù)據(jù)版本實(shí)現(xiàn)分布式seq生成 public?static?class?Task1?implements?Runnable?{private?final?String?taskName;public?Task1(String?taskName)?{this.taskName?=?taskName;}@Overridepublic?void?run()?{ZkClient?zkClient?=?new?ZkClient("192.168.88.153:2181",?3000,?1000);Stat?stat?=?zkClient.writeData(SEQ_ZNODE,?new?byte[0],?-1);int?versionAsSeq?=?stat.getVersion();System.out.println(taskName?+?"?obtain?seq="?+?versionAsSeq);zkClient.close();} }//main final?ExecutorService?service?=?Executors.newFixedThreadPool(20);for?(int?i?=?0;?i?<?20;?i++)?{service.execute(new?Task1("[Concurrent-"?+?i?+?"]")); }2.利用臨時(shí)帶序列號(hào)的znode實(shí)現(xiàn)和分布式鎖持久化znode實(shí)現(xiàn)
2.1 下圖是利用分布式鎖持久化znode實(shí)現(xiàn)
客戶端采用apache curator 框架,代碼:https://code.csdn.net/snippets/929300
?2.2利用臨時(shí)帶序列號(hào)的znode實(shí)現(xiàn)
?客戶端采用:zkClient (https://github.com/adyliu/zkclient)
?完整代碼參見:https://code.csdn.net/snippets/929320
總結(jié)
以上是生活随笔為你收集整理的依赖Zookeeper生成全局唯一序列号的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)前置++和后置++的区别
- 下一篇: 快捷键整理