思路:利用数据库的排他锁机制,来达到集群流水号生成的唯一性
流水号表:
表名:SYS_IDENTITY 解释:SYS_IDENTITY【流水号生成】
备注:流水号生成
SYS_IDENTITY(SYS_IDENTITY【流水号生成】) |
||||||||
是否主键 |
字段名 |
字段描述 |
数据类型 |
长度 |
可空 |
约束 |
缺省值 |
备注 |
是 |
ID |
主键 |
NUMBER(18) |
18 |
|
|
|
主键 |
|
NAME |
名称 |
VARCHAR2(50) |
50 |
是 |
|
|
名称 |
|
ALIAS |
别名 |
VARCHAR2(20) |
20 |
是 |
|
|
别名 |
|
REGULATION |
规则 |
VARCHAR2(100) |
100 |
是 |
|
|
规则 |
|
GENEVERYDAY |
每天生成 |
SMALLINT |
|
是 |
|
|
每天生成 |
|
NOLENGTH |
流水号长度 |
INTEGER |
|
是 |
|
|
流水号长度 |
|
CURDATE |
当前日期 |
VARCHAR2(10) |
10 |
是 |
|
|
|
|
INITVALUE |
初始值 |
INTEGER |
|
是 |
|
|
初始值 |
|
CURVALUE |
当前值 |
INTEGER |
|
是 |
|
|
当前值 |
|
STEP |
步长 |
SMALLINT |
|
是 |
|
|
步长 |
获取流水号方法:
/** * 根据流程规则别名获取得下一个流水号。 * @param alias 流水号规则别名。 * @return */ public synchronized String nextId(String alias){ //这里的查询语句为 SELECT <include refid="columns"/> FROM SYS_IDENTITY //WHERE alias=#{alias} FOR UPDATE Identity identity=this.dao.getByAlias(alias); if(BeanUtils.isEmpty(identity)) return ""; String rule=identity.getRule(); int step=identity.getStep(); int genEveryDay=identity.getGenEveryDay(); // Integer curValue=identity.getCurValue(); if(curValue==null) curValue=identity.getInitValue(); //每天都生成 if(genEveryDay==1){ String curDate=getCurDate(); String oldDate=identity.getCurDate(); if(!curDate.equals(oldDate)){ identity.setCurDate(curDate); curValue=identity.getInitValue(); } else{ curValue=curValue + step; } } else{ curValue=curValue + step; } identity.setCurValue(curValue); dao.update(identity); //获取流水号。 String rtn=getByRule(rule,identity.getNoLength(),curValue); return rtn; }
相关推荐
- **持续集成/持续部署(CI/CD)**:将Ansible集成到CI/CD流水线中,实现自动化测试和部署,进一步提升效率。 综上所述,利用Ansible自动化工具结合Ambari进行大数据集群的部署,不仅能够极大地提高工作效率,还能...
这个方案可以保证订单号的唯一性,并且能够满足高可用集群的需求。 方案四:使用 Java 的 UUID 最后,我们可以使用 Java 的 UUID 来生成唯一的订单号。这个方案可以保证订单号的唯一性,并且不需要考虑太多的逻辑...
在分布式环境中,通常需要多台服务器来运行Kafka集群,但为了测试或学习目的,可以使用单机上的伪分布式设置,这使得开发者能够在本地环境中快速搭建Kafka实例,而无需复杂的网络配置。 标签中的“kafka”、...
因此,“assemblyline”可能是一个为云环境设计的分布式工具,旨在简化和优化在大规模集群中的工作流程。 至于“Python库”,这意味着“assemblyline”是用Python编程语言编写的一个软件包,可以被其他Python程序...
- **软件优化**:为了充分利用硬件的并行处理能力,需要对软件进行优化,包括任务功能分解、流水线设计等。同时,内存访问模式如NORMA(非远程存储访问模型)的优化对于提升性能同样重要。 ### 并行编程技术 - **...
"分布式"和"云原生(cloud native)"这两个标签表明streamcorpus_pipeline是为云环境设计的,能够处理大规模分布式数据流。在云计算环境中,分布式处理可以有效地利用多台服务器的计算资源,提高处理速度和效率。而...
skale库的核心特性在于其分布式计算框架,它允许用户在多核CPU或者集群环境中并行处理数据,从而极大地提高了数据处理效率。这个库特别适合大数据分析任务,比如预处理、清洗、转换以及模型训练等。skale库还支持...
assemblyline-4.0.1.dev110库可能设计成云原生友好,意味着它能很好地适应云环境,支持动态扩展、弹性部署和高可用性。 至于“Python库”,这意味着assemblyline是用Python编程语言编写的,它可以被其他Python程序...
RPM包包含了软件的元数据(如名称、版本号、依赖关系等)以及实际的软件文件。当一个RPM包被安装时,RPM工具会检查并解决所有的依赖关系,从而确保软件能够正常运行。 RPM包的结构复杂而精细,包括: - **Lead**:...
在这个案例中,我们关注的是名为“dask-cuda”的Python库,其版本号为0.16.0a200810,文件格式为tar.gz。这个压缩包包含了该库的所有源代码和其他相关文件,方便用户在本地环境中安装和使用。 **dask-cuda 库** ...
这个库的设计灵感来源于Scikit-Learn,但它的目标是将计算扩展到分布式环境,如集群或云计算平台。通过使用`skale-py`,开发者可以利用多核处理器或分布式系统来并行处理数据,显著提升计算速度。 在`skale-py-...
toil支持在多台机器上进行分布式计算,无论是在本地集群、Amazon Web Services (AWS) 或其他云环境。它使用Mesos或 Kubernetes作为底层资源调度器,可以充分利用硬件资源,实现高效的任务调度。 **3. 持久化状态** ...
今天我们要深入探讨的是`polyaxon_client`,一个专为实验管理和部署设计的Python库,版本号为0.5.6。这个库的安装文件为`polyaxon_client-0.5.6-py2.py3-none-any.whl`,它兼容Python 2和Python 3环境,确保了广泛的...
Dagster是数据基础设施的核心框架,它提供了一种声明式的方式来定义数据管道(data pipelines),这些管道可以跨多种执行环境(如本地、分布式集群或云)运行。Dagster的核心理念是将数据操作视为可重用的单元,这些...
这个库是专门为与Amazon Web Services (AWS)集成而设计的,版本号为0.25.15。 **dbnd-aws 库** `dbnd-aws`是Data and Business Logic (dbnd)框架的一个扩展,旨在简化和自动化与AWS服务的交互。dbnd是一个开源项目...