distributed-tool 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
distributed-tool 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开发厂商
地区 国产
提 交 者 徐安是个好人
适用人群 未知
收录时间 2018-08-16

软件简介

项目介绍

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

软件架构

目前项目分两个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

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (2)

加载中
能对标:Redisson 吗?
2018/09/01 09:46
回复
举报
打分: 力荐
看着不错,抽空看看代码
2018/08/16 12:27
回复
举报
更多评论
发表于运维专区
2018/09/05 11:19

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

分布式常用工具组件 distributed-tool V1.4 发布了,之前版本,只支持redis的单点连接,1.4之后,新增支持了哨兵模式部署的redis连接方式。初始化方式: //哨兵地址端口集合 Set<String> sentinelSet = new HashSet<>(); sentinelSet.add("ip:port"); sentinelSet.add("ip:port"); //其中mymaster是redis的maste...

1
12
2018/08/31 09:39

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

本次更新 这次更新改动还是有点大的,稍微重构了底层实现架构,不过对上次API改动不多。主要还优化了用户使用体验。主要更新说明如下: 重构底层实现,使用户使用更加的方便 新增分布式锁(使用Lua实现) 新增分布式信号量(使用Lua实现) 项目介绍 这是一个分布式常用工具组件。其中包括但不限于: 分布式List、分布式S...

7
16
2018/08/28 09:29

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

本次升级内容 新增queue模块(分布式队列) 重构底层DtClient模块,该模块线程不安全,如果多线程操作,需要自己同步锁,或者新建不同实例 新增全局单例Dt类,初始化一次后,后面使用各组件不用在设置DtClient的工厂类 WIKI访问地址:https://gitee.com/xuan698400/distributed-tool/wikis/5%E3%80%81%E5%88%86%E5%B8%8...

8
12
2018/08/24 11:47

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

项目介绍 一个分布式常用工具组件。例如:分布式缓存、分布式序列号生成器、分布式锁、分布式订阅发布等等。 目前微服务开发的系统很多,这个就涉及到分布式集群问题。像以前如果是单机,那么一些解决方案都可以使用JVM的API来实现 例如:锁、缓存、订阅发布等操作。但是如果你是分布式系统,那么这些API就没用了,需要分...

0
16
2018/08/16 09:30

distributed-tool,一个分布式常用工具组件 V1.0 发布

distributed-tool 项目介绍 一个分布式常用工具组件。例如:分布式缓存、分布式序列号生成器、分布式锁、分布式订阅发布等等。后续会持续加入一些常用的分布式(微服务)需要用到的策略和工具代码。 软件架构 目前项目分两个module,distributed-tool和distributed-tool-test。前者是核心源码。后者是测试代码。 distri...

5
23
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2018/09/05 16:27

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

分布式常用工具组件 distributed-tool V1.4 发布了,之前版本,只支持redis的单点连接,1.4之后,新增支持了哨兵模式部署的redis连接方式。初始化方式: //哨兵地址端口集合 Set<String> sentinelSet = new...

0
0
发表了博客
2019/02/23 17:12

How to do distributed locking

How to do distributed locking 怎样做可靠的分布式锁,Redlock 真的可行么? 本文是对 Martin Kleppmann 的文章 How to do distributed locking 部分内容的翻译和总结,上次写 Redlock 的原因就是看到了 Martin 的这篇文章,写得很好,特此翻译和总结。感兴趣的同学可以翻看原文,相信会收获良多。 开篇作者认为现在 Re...

0
0
发表了博客
2019/08/06 22:43

go tool: no such tool "compile"

go tool: no such tool "compile" 产生的问题可能是在配置GOPATH 与 GOROOT 出现了问题 GOPATH :用来安装 外部包的路径 GOROOT :指定 Go 的安装路径...

0
0
发表了博客
03/19 20:26

Distributed tracing for dummies

https://plumbr.io/blog/monitoring/distributed-tracing-for-dummies Tracing provides visibility into a system allowing the developers and operations to observe the application during runtime. Tracing becomes extremely valuable when the systems are growing and interact with more microservices. In su...

0
0
发表了博客
03/19 20:05

Distributed tracing for dummies

https://plumbr.io/blog/monitoring/distributed-tracing-for-dummies Tracing provides visibility into a system allowing the developers and operations to observe the application during runtime. Tracing becomes extremely valuable when the systems are growing and interact with more microservices. In su...

0
0
发表了博客
2013/12/21 14:17

Distributed Ehcache

Ehcache Terracotta是一款由美国Terracotta公司开发的著名开源Java集群平台。它在JVM与Java应用之间实现了一个专门处理集群功能的抽象层,以其特有的增量检测、智能定向传送、 分布式协作、服务器镜像、分片等技术,允许用户在不改变现有系统代码的情况下实现单机Java应用向集群话应用的无缝迁移。使得用户可以专注于商业...

0
3
发表了博客
03/19 20:03

Distributed tracing in practice

https://plumbr.io/blog/tracing/distributed-tracing-in-practice This post is following up our in-depth review of the distributed tracing concept. In this post we will look into how distributed tracing can help you to respond to incidents. Incident management: an example Let us start with a hypothe...

0
0
发表了博客
03/19 20:24

Distributed tracing in practice

https://plumbr.io/blog/tracing/distributed-tracing-in-practice This post is following up our in-depth review of the distributed tracing concept. In this post we will look into how distributed tracing can help you to respond to incidents. Incident management: an example Let us start with a hypothe...

0
0
发表了博客
2015/12/23 13:26

Distributed hash table

1. 概念 A distributed hash table (DHT) is a class of a decentralized distributed system that provides a lookup service similar to a hash table。 ( key, value) pairs are stored in a DHT, and any participating node can efficiently retrieve the value associated with a given key. 二个point: 1)分布式...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
2 评论
36 收藏
分享
返回顶部
顶部