一个分布式常用工具组件。例如:分布式缓存、分布式序列号生成器、分布式锁、分布式订阅发布等等。
目前项目分两个module,distributed-tool和distributed-tool-test。前者是核心源码。后者是测试代码。
distributed-tool主要分如下组件:
client 所有的核心组件依赖模块,主要提供了最简单的分布式set、get、del、incre等操作。(V1.0支持)
cache 简单的分布式缓存模块。(V1.0支持)
sequence 分布式序列号生成组件。(V1.0支持)
V1.0 支持分布式缓存、分布式序列号生成组件
<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();
分布式订阅发布(通知功能)
分布式锁
姓名:徐安
QQ:349309307
个人博客:xuanner.com
CAP理论 一致性(Consistency)、可用性(Availability)、分区容错(Partition-tolerance)这三个特性不可兼得。 涉及到分布式系统取舍的权衡。 BASE 与ACID不同,分布式系统满足BASE原则: - Basically Available: - Soft state: - Evenually consistent: 正向代理:客户端通过代理服务器请求服务
1.1 Svcutil Generate Proxy class. Step: 1) You can find svcutil.exe @ C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools 2) run svcutil.exe <assembly name> (e.g. SvcUtil.exe D:\
What is a distributed system? No completely satisfactory definition has been given for a distributed system, but the following can be used as a loose guide: * A distributed system is a collection
我的实验室有五台双核Pentium D 925计算机,这正适合用来做分布式或并行式计算。我打算只调用那些计算机中的一个核参与计算,留下一个核可以让其他人正常地使用该计算机。我们在这里将会介绍Matlab中Distributed Computing Toolbox的基本使用方法,目标是实现简单的分布式计算。 Distributed Computing Toolbox就是分布式计算工具箱,简称DCT,
(转自saucer) 在企业开发里,经常遇到的一个问题是需要做Distributed Transactions。一般推荐的做法是做成ServicedComponent,参考 Transaction Control Writing Serviced Components 这种做法有几个问题,该组件以及所依赖组件必须是Strong-Named的,在通常的情形下(譬如Web Application里),
font Table of Contents 1 在ubuntu10.04下安装中文字体 2 Ubuntu 10.04安装完全指南 李顺亮 2010年4月30日 3 Ubuntu 10.04-Gedit or Vim 中文乱码问题 4 Ubuntu 10.04-Gedit or Vim 中文乱码问题 5 Ubuntu 10.04 安装配置指南 6 Emacs 下处理中文,PDF 乱码 Xelate
一、定义 1、背景。微处理器,高速网络。 2、定义。集合,单个。 二、目标 1、资源可访问。可控,高效。 2、透明性。类型(location、access、migration...),透明度(degree of transparency,需要trade-off)。 3、开放性。An open distributed system is a system that offers services a
参考 Pytorch Distributed 初始化 - 云+社区 - 腾讯云 Pytorch Distributed 初始化方法 参考文献 Distributed communication package - torch.distributed — PyTorch master documentation 初始化 torch.distributed.init_process_group(b
Chrome Extensions 参考资料:Chrome Extensions Proxy SwitchyOmega 配合Shadowsocks使用,功能非常强大,提供多种代理模式 Awesome Screenshot 截图工具 crxMouse鼠标手势 彩云小译 翻译工具 Json Editorjson 格式化分析 Octotree github目录浏览插件 Git 参考文档:廖雪峰Git教程
https://github.com/CJ-Chen/TBtools
分布式程序是那些旨在在计算机网络上运行并且只能通过消息传递协调其活动的程序。 我们可能想要编写分布式应用程序的原因有很多。 这里是其中的一些。 Performance - 我们可以通过安排程序的不同部分在不同的机器上并行运行来使程序更快。 Reliability - 我们可以通过将系统结构化以在多台机器上运行来制造容错系统。 如果一台机器出现故障,我们可以继续使用另一台机器 Scalability
(要求Workerman版本>=3.3.0) 源码地址:https://github.com/walkor/Channel Channel是一个分布式通讯组件,用于完成进程间通讯或者服务器间通讯。 特点 1、基于订阅发布模型 2、非阻塞式IO 原理 Channel包含Channel/Server服务端和Channel/Client客户端 Channel/Client通过connect接口连接Cha
你现在拥有了一个远程 Git 版本库,能为所有开发者共享代码提供服务,在一个本地工作流程下,你也已经熟悉了基本 Git 命令。你现在可以学习如何利用 Git 提供的一些分布式工作流程了。 这一章中,你将会学习如何作为贡献者或整合者,在一个分布式协作的环境中使用 Git。 你会学习为一个项目成功地贡献代码,并接触一些最佳实践方式,让你和项目的维护者能轻松地完成这个过程。另外,你也会学到如何管理有很多
One of the many advantages of dynamic languages such as Ruby is the ability tointrospect---to examine aspects of the program from within the program itself. Java, for one, calls this featurereflection
下面是几种常见的Spring工具的类型 : – 静态工具方法类 通常以作为类名后缀 类的成员函数定义为 一般不通过创建类实例方式使用,而是通过直接被使用 一般完全无状态,(即使有状态,也一般是维护类静态成员属性static member field ) 工具方法命名通常可以"望文知意",可以知道其目的 – "某某"配置器 – "某某"增强器 – "某某"加载器 – "某某"后置处理器 – "某某"
同传统的集中式版本控制系统(CVCS)不同,Git 的分布式特性使得开发者间的协作变得更加灵活多样。 在集中式系统中,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相像。 而在 Git 中,每个开发者同时扮演着节点和集线器的角色——也就是说,每个开发者既可以将自己的代码贡献到其他的仓库中,同时也能维护自己的公开仓库,让其他人可以在其基础上工作并贡献代码。 由此,Git 的分布式协作可以为