# distributed-tool-parent
**Repository Path**: i-smart/distributed-tool
## Basic Information
- **Project Name**: distributed-tool-parent
- **Description**: 一个分布式常用工具组件。例如:分布式缓存、分布式序列号生成器、分布式锁、分布式订阅发布等等。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 78
- **Created**: 2018-08-27
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# distributed-tool
#### 项目介绍
一个分布式常用工具组件。例如:分布式缓存、分布式序列号生成器、分布式锁、分布式订阅发布等等。
目前微服务开发的系统很多,这个就涉及到分布式集群问题。像以前如果是单机,那么一些解决方案都可以使用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模块,该模块线程不安全,如果多线程操作,需要自己同步锁,或者新建不同实例
#### Maven引用
<dependency>
<groupId>com.xuanner</groupId>
<artifactId>distributed-tool</artifactId>
<version>1.1</version>
</dependency>
#### 使用教程
//初始化一个Config(一般全局一个实例就行)
RedisDtClientConfig config = new RedisDtClientConfig();
config.setHost("xxx");
config.setPort(8380);
config.setAuth("xxx");
//初始化Client的工厂类(一般全局一个实例就行,后面所有组件都需要这个实例)
RedisDtClientFactory redisDtClientFactory = new RedisDtClientFactory();
redisDtClientFactory.setConfig(config);
redisDtClientFactory.init();
clientFactory = redisDtClientFactory;
//销毁工厂类
clientFactory.destroy();
//简单缓存组件使用
protected CacheClient buildCacheClient() {
DefaultCacheClient defaultCacheClient = new DefaultCacheClient();
defaultCacheClient.setClientFactory(clientFactory);
return defaultCacheClient;
}
CacheClient cacheClient = buildCacheClient();
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