分布式常用工具组件 distributed-tool V1.2 发布

徐安是个好人
 徐安是个好人
发布于 2018年08月28日
收藏 12

本次升级内容

  • 新增queue模块(分布式队列)

  • 重构底层DtClient模块,该模块线程不安全,如果多线程操作,需要自己同步锁,或者新建不同实例

  • 新增全局单例Dt类,初始化一次后,后面使用各组件不用在设置DtClient的工厂类

WIKI访问地址:https://gitee.com/xuan698400/distributed-tool/wikis/5%E3%80%81%E5%88%86%E5%B8%83%E5%BC%8F%E9%98%9F%E5%88%97?sort_id=697364

项目介绍

一个分布式常用工具组件。例如:分布式缓存、分布式序列号生成器、分布式锁、分布式订阅发布等等。

目前微服务开发的系统很多,这个就涉及到分布式集群问题。像以前如果是单机,那么一些解决方案都可以使用JVM的API来实现
例如:锁、缓存、订阅发布等操作。但是如果你是分布式系统,那么这些API就没用了,需要分布式的方式来重新实现这些操作工具或者策略。

软件架构

目前项目分两个module,distributed-tool和distributed-tool-test。前者是核心源码。后者是测试代码。
distributed-tool主要分如下组件:

  1. com.xuanner.dt.client 所有的核心组件依赖模块,主要提供了最简单的分布式set、get、del、incre等操作。(V1.0支持)

  2. com.xuanner.dt.cache 简单的分布式缓存模块。(V1.0支持)

  3. com.xuanner.dt.sequence 分布式序列号生成组件。(V1.0支持)

  4. com.xuanner.dt.pubsub 分布式订阅发布组件。(V1.1支持)

  5. com.xuanner.dt.queue 分布式队列。(V1.2支持)

版本更新

V1.0版本

  • 新增client模块(所有工具组件的核心)

  • 新增cache模块(分布式缓存工具)

  • 新增sequence模块(分布式序列号生成工具)

V1.1版本

  • 新增pubsub模块(订阅发布模块)

V1.2版本

  • 新增pubsub模块(分布式队列)

  • 重构底层DtClient模块,该模块线程不安全,如果多线程操作,需要自己同步锁,或者新建不同实例

  • 新增全局单例Dt类,初始化一次后,后面使用各组件不用在设置DtClient的工厂类

Maven引用

<dependency>
    <groupId>com.xuanner</groupId>
    <artifactId>distributed-tool</artifactId>
    <version>1.2</version>
</dependency>

使用教程

初始化一个Config(一般全局一个实例就行)

RedisDtClientConfig config = new RedisDtClientConfig();
config.setHost("xxx");
config.setPort(8380);
config.setAuth("xxx");

初始化Client的工厂类(一般全局一个实例就行,后面所有组件都需要这个实例)

RedisDtClientFactory clientFactory = new RedisDtClientFactory();
clientFactory.setConfig(config);
clientFactory.init();
Dt.getInstance().setDefaultDtClientFactory(redisDtClientFactory);

使用完毕后,请销毁这个工厂

Dt.getInstance().getDefaultDtClientFactory().destroy();

一个简单的缓存使用例子

CacheClient cacheClient = new DefaultCacheClient();
cacheClient.set("key", "value", 5);

更多使用教程: https://gitee.com/xuan698400/distributed-tool/wikis/

后续支持功能

  1. 分布式信号量

  2. 分布式锁

联系方式

  1. 姓名:徐安

  2. 邮箱:javaandswing@163.com

  3. QQ:349309307

  4. 个人博客:xuanner.com

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:分布式常用工具组件 distributed-tool V1.2 发布
加载中

最新评论(8

徐安是个好人
徐安是个好人

引用来自“田心双木”的评论

分布式锁是redis单点的吗?

引用来自“徐安是个好人”的评论

首先redis3.0之后才加入官方支持的cluster部署。在这之前,可以以主备方式部署,即一个master多个slave模式。然后再配合哨兵。这种模式下用来做分布式锁还是很靠谱的。我不知道你说的redis单点是什么意思,是指只部署一个节点么,一般生产环境不会这样部署的。

引用来自“徐安是个好人”的评论

不过你的提示非常好,让我再去深刻的了解下各种实现方式。如果有更好的实现方式,后面会持续优化下去。

引用来自“徐安是个好人”的评论

目前我的写法貌似还不支持集群,后面考虑优化支持

引用来自“田心双木”的评论

这篇文章让我彻底的放弃了redis的实现,从而转向了zookeeper:http://www.sohu.com/a/128396689_487514。目前我测了一把,安全性毋庸置疑,只是效率稍微低一点
:thumbsup:有空研究下
田心双木
田心双木

引用来自“田心双木”的评论

分布式锁是redis单点的吗?

引用来自“徐安是个好人”的评论

首先redis3.0之后才加入官方支持的cluster部署。在这之前,可以以主备方式部署,即一个master多个slave模式。然后再配合哨兵。这种模式下用来做分布式锁还是很靠谱的。我不知道你说的redis单点是什么意思,是指只部署一个节点么,一般生产环境不会这样部署的。

引用来自“徐安是个好人”的评论

不过你的提示非常好,让我再去深刻的了解下各种实现方式。如果有更好的实现方式,后面会持续优化下去。

引用来自“徐安是个好人”的评论

目前我的写法貌似还不支持集群,后面考虑优化支持
这篇文章让我彻底的放弃了redis的实现,从而转向了zookeeper:http://www.sohu.com/a/128396689_487514。目前我测了一把,安全性毋庸置疑,只是效率稍微低一点
徐安是个好人
徐安是个好人

引用来自“田心双木”的评论

分布式锁是redis单点的吗?

引用来自“徐安是个好人”的评论

首先redis3.0之后才加入官方支持的cluster部署。在这之前,可以以主备方式部署,即一个master多个slave模式。然后再配合哨兵。这种模式下用来做分布式锁还是很靠谱的。我不知道你说的redis单点是什么意思,是指只部署一个节点么,一般生产环境不会这样部署的。

引用来自“徐安是个好人”的评论

不过你的提示非常好,让我再去深刻的了解下各种实现方式。如果有更好的实现方式,后面会持续优化下去。
目前我的写法貌似还不支持集群,后面考虑优化支持
徐安是个好人
徐安是个好人

引用来自“田心双木”的评论

分布式锁是redis单点的吗?

引用来自“徐安是个好人”的评论

首先redis3.0之后才加入官方支持的cluster部署。在这之前,可以以主备方式部署,即一个master多个slave模式。然后再配合哨兵。这种模式下用来做分布式锁还是很靠谱的。我不知道你说的redis单点是什么意思,是指只部署一个节点么,一般生产环境不会这样部署的。
不过你的提示非常好,让我再去深刻的了解下各种实现方式。如果有更好的实现方式,后面会持续优化下去。
徐安是个好人
徐安是个好人

引用来自“田心双木”的评论

分布式锁是redis单点的吗?
首先redis3.0之后才加入官方支持的cluster部署。在这之前,可以以主备方式部署,即一个master多个slave模式。然后再配合哨兵。这种模式下用来做分布式锁还是很靠谱的。我不知道你说的redis单点是什么意思,是指只部署一个节点么,一般生产环境不会这样部署的。
田心双木
田心双木

引用来自“田心双木”的评论

分布式锁是redis单点的吗?

引用来自“徐安是个好人”的评论

应该可以支持 master/slave
到底是应该还是肯定?其实cluster不适合分布式锁,请参考redlok 和redison 算法。而单点又不能保证不挂,所以redis不适合分布式锁
徐安是个好人
徐安是个好人

引用来自“田心双木”的评论

分布式锁是redis单点的吗?
应该可以支持 master/slave
田心双木
田心双木
分布式锁是redis单点的吗?
返回顶部
顶部