# distributed-tool-parent **Repository Path**: obing/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-16 - **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. client 所有的核心组件依赖模块,主要提供了最简单的分布式set、get、del、incre等操作。(V1.0支持)
2. cache 简单的分布式缓存模块。(V1.0支持)
3. sequence 分布式序列号生成组件。(V1.0支持)
#### 版本更新 1. V1.0 支持分布式缓存、分布式序列号生成组件
#### Maven引用

<dependency>
    <groupId>com.xuanner</groupId>
    <artifactId>distributed-tool</artifactId>
    <version>1.0</version>
</dependency>
#### 使用说明 (1)核心Client使用(一般不建议直接使用,但是后面的所有分布式组件都基于他来开发的,目前使用了Redis来做实现方案)
+ 构建DtClient

protected DtClient buildClient() {
    RedisClient redisClinet = new RedisClient();
    redisClinet.setHost("localhost");
    redisClinet.setPort(1234);
    redisClinet.setAuth("1234");
    redisClinet.init();
    return redisClinet;
}
+ 代码使用

protected DtClient buildClient() {
    DtClient client = buildClient();
    client.set("key", "value", 10);
    client.get("key");
    client.del("key");
    client.exists("key");
}
(2)分布式缓存工具使用 + 构建CacheClient

protected CacheClient buildCacheClient() {
    DefaultCacheClient defaultCacheClient = new DefaultCacheClient();
    defaultCacheClient.setClient(buildClient());
    return defaultCacheClient;
}
+ 代码使用

CacheClient cacheClient = buildCacheClient();
cacheClient.set("key", "value", 60);
cacheClient.get("key");
cacheClient.del("key");
cacheClient.setBulk(map, 60);
cacheClient.getBulk(list);
cacheClient.del(list);
(3)分布式序列号使用 + 构建Sequence

protected Sequence buildSequence() {
    DefaultSequence defaultSequence = new DefaultSequence();
    defaultSequence.setClient(buildClient());
    defaultSequence.setStep(1000);//步长,如果需要严格连续序号可以设置:1
    defaultSequence.setStepStart(0);//序列号开始位置
    return defaultSequence;
}
+ 代码使用

Sequence sequence = buildSequence();
sequence.nextId();
#### 后续支持功能 1. 分布式订阅发布(通知功能) 2. 分布式锁 #### 联系方式 1. 姓名:徐安 2. 邮箱:javaandswing@163.com 3. QQ:349309307 4. 个人博客:xuanner.com