`
qq405371160
  • 浏览: 32431 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

集群环境流水号设计

 
阅读更多

思路:利用数据库的排他锁机制,来达到集群流水号生成的唯一性

 

流水号表:

 

表名: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;
	}

 

 

 

 

 

分享到:
评论

相关推荐

    Ambari用Ansible自动化部署大数据集群文档

    - **持续集成/持续部署(CI/CD)**:将Ansible集成到CI/CD流水线中,实现自动化测试和部署,进一步提升效率。 综上所述,利用Ansible自动化工具结合Ambari进行大数据集群的部署,不仅能够极大地提高工作效率,还能...

    windows下kafka_2.12-2.9.0.rar(含单机伪分布式配置)

    在分布式环境中,通常需要多台服务器来运行Kafka集群,但为了测试或学习目的,可以使用单机上的伪分布式设置,这使得开发者能够在本地环境中快速搭建Kafka实例,而无需复杂的网络配置。 标签中的“kafka”、...

    PyPI 官网下载 | assemblyline-4.0.0.dev189.tar.gz

    因此,“assemblyline”可能是一个为云环境设计的分布式工具,旨在简化和优化在大规模集群中的工作流程。 至于“Python库”,这意味着“assemblyline”是用Python编程语言编写的一个软件包,可以被其他Python程序...

    PyPI 官网下载 | streamcorpus_pipeline-0.6.4.dev5.tar.gz

    "分布式"和"云原生(cloud native)"这两个标签表明streamcorpus_pipeline是为云环境设计的,能够处理大规模分布式数据流。在云计算环境中,分布式处理可以有效地利用多台服务器的计算资源,提高处理速度和效率。而...

    PyPI 官网下载 | skale.py-4.0.dev7.tar.gz

    skale库的核心特性在于其分布式计算框架,它允许用户在多核CPU或者集群环境中并行处理数据,从而极大地提高了数据处理效率。这个库特别适合大数据分析任务,比如预处理、清洗、转换以及模型训练等。skale库还支持...

    PyPI 官网下载 | assemblyline-4.0.1.dev110.tar.gz

    assemblyline-4.0.1.dev110库可能设计成云原生友好,意味着它能很好地适应云环境,支持动态扩展、弹性部署和高可用性。 至于“Python库”,这意味着assemblyline是用Python编程语言编写的,它可以被其他Python程序...

    构建基于Linux系统的软件管理平台

    RPM包包含了软件的元数据(如名称、版本号、依赖关系等)以及实际的软件文件。当一个RPM包被安装时,RPM工具会检查并解决所有的依赖关系,从而确保软件能够正常运行。 RPM包的结构复杂而精细,包括: - **Lead**:...

    PyPI 官网下载 | dask-cuda-0.16.0a200810.tar.gz

    在这个案例中,我们关注的是名为“dask-cuda”的Python库,其版本号为0.16.0a200810,文件格式为tar.gz。这个压缩包包含了该库的所有源代码和其他相关文件,方便用户在本地环境中安装和使用。 **dask-cuda 库** ...

    Python库 | skale-py-0.3.10.tar.gz

    这个库的设计灵感来源于Scikit-Learn,但它的目标是将计算扩展到分布式环境,如集群或云计算平台。通过使用`skale-py`,开发者可以利用多核处理器或分布式系统来并行处理数据,显著提升计算速度。 在`skale-py-...

    Python库 | toil-3.6.0a1.dev339-py2.7.egg

    toil支持在多台机器上进行分布式计算,无论是在本地集群、Amazon Web Services (AWS) 或其他云环境。它使用Mesos或 Kubernetes作为底层资源调度器,可以充分利用硬件资源,实现高效的任务调度。 **3. 持久化状态** ...

    Python库 | polyaxon_client-0.5.6-py2.py3-none-any.whl

    今天我们要深入探讨的是`polyaxon_client`,一个专为实验管理和部署设计的Python库,版本号为0.5.6。这个库的安装文件为`polyaxon_client-0.5.6-py2.py3-none-any.whl`,它兼容Python 2和Python 3环境,确保了广泛的...

    Python库 | dagster-ge-0.10.3rc0.tar.gz

    Dagster是数据基础设施的核心框架,它提供了一种声明式的方式来定义数据管道(data pipelines),这些管道可以跨多种执行环境(如本地、分布式集群或云)运行。Dagster的核心理念是将数据操作视为可重用的单元,这些...

    PyPI 官网下载 | dbnd-aws-0.25.15.tar.gz

    这个库是专门为与Amazon Web Services (AWS)集成而设计的,版本号为0.25.15。 **dbnd-aws 库** `dbnd-aws`是Data and Business Logic (dbnd)框架的一个扩展,旨在简化和自动化与AWS服务的交互。dbnd是一个开源项目...

Global site tag (gtag.js) - Google Analytics