h2数据库用于实例的重试模块

H2说明(参考http://www.importnew.com/17924.html)

H2有3种运行方式

(1)嵌入式,数据库为单个文件。

启动实例的的时候,自动开启数据库,数据存储到单个文件中(连接加上;AUTO_SERVER=TRUE允许多个连接同时存在)。

conntionUrl = jdbc:h2:./TradeLocalDB;AUTO_SERVER=TRUE

(2)内存运行,数据只运行在内存中

1.嵌入式内存模式,实例关闭,数据就丢失了,与map类似。

conntionUrl = jdbc:h2:mem:TradeLocalDB

2. 服务器内存模式,存储为内存。服务关闭的时候,数据才会丢失,与实例无关。需要对数据库服务端进行维护

conntionUrl = jdbc:h2:tcp://localhost/mem:TradeLocalDB;DB_CLOSE_DELAY=-1

(3)服务器模式,数据保存在文件中,与普通数据库类型,服务器关闭,数据不会丢失,不可连接。需要对数据库服务端进行维护

conntionUrl = jdbc:h2:tcp://localhost/./TradeLocalDB(服务器目录下)

2.重试模块选择H2的运行模式:

(1)服务器模式:

需要额外的开服务器。并且如果不是每个实例对应一个数据库的话,需要处理多实例重复处理的问题(

    获取的时候带锁,然后更新个中间状态,避免被多个实例同时处理),这种与普通数据库无区别,额外带来h2数据库服务端的维护

(2)内存模式:

1.如果是服务端内存模式,也需要同 (1)一样的处理

2.如果是嵌入式内存模式。实例关闭,数据就消失了,与map类似。重试数据容易丢失。

(3)嵌入式模式

数据库的开启关闭由程序实例控制,不需要额外维护。

实例开闭,数据不会丢失。再次开启的时候,读取即可(PS:实例搬家的时候,需要连带数据文件一起)。

3.重试模块方案

  (1)为啥不用redis/MQ

    重试需要间隔,redis,MQ没法根据时间去选择已经需要发起重试的请求。如果按顺序插入获取,

    可能导致取出的请求还未到期,被重新插入最末端。

(2)使用H2的两种模式  

    1.需要重试的数据都存储到h2

    2.定时去h2获取已经过期的数据(可以处理的),如获取前1000条,如果本次获取数据量较大,按id取模分到N个线程处理。

  处理成功后,删除H2数据库的数据。

缺点:1.依赖h2的稳定与可靠,如果H2出问题,因为是嵌入式,将导致该实例重试模块异常。

2.H2没有相关的监控,需要的话,需要自己去开发。

优点:1.基本没有并发问题,控制简单。

2.可以通过SQL直接获取过期的重试。

       3.没个实例都有自己的H2本地数据,不需要考虑多实例并发重复请求并发问题。

欢迎大家对上面提出不足和建议,谢谢。

时间: 2024-08-10 09:10:29

h2数据库用于实例的重试模块的相关文章

使用“忽略授权表”参数登录多实例数据库——用于多实例数据库忘记密码时登录

昨天上午,在视频"L10-008-lamp环境之MySQL多实例安装配置指南"马上就要结束的时候,再次遇到问题. 前天晚上,根据视频讲解在清理多余MySQL数据库账号后,就直接退出数据库并关机了(没有在清理账号后,退出数据库并重新登录数据库--其实,也没有必要做这样的测试).昨天早上打开虚拟机,想着完成视频的最后一小部分.没想到,在使用密码登录3306实例的时候,无论如何也登录不进去了. [[email protected] 3306]# mysql -uroot -p -S /dat

Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库

H2作为一个嵌入型的数据库,它最大的好处就是可以嵌入到我们的Web应用中,和我们的Web应用绑定在一起,成为我们Web应用的一部分.下面来演示一下如何将H2数据库嵌入到我们的Web应用中. 一.搭建测试环境和项目 1.1.搭建JavaWeb测试项目 创建一个[H2DBTest]JavaWeb项目,找到H2数据库的jar文件,如下图所示: H2数据库就一个jar文件,这个Jar文件里面包含了使用JDBC方式连接H2数据库时使用的驱动类,将"h2-1.4.183.jar"加入到[H2DBT

【转】Oracle - 数据库的实例、表空间、用户、表之间关系

[转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区. 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘

H2数据库使用 详解

H2最完整的资料下载地址: http://download.csdn.net/detail/yixiaoping/5956595 H2数据库使用 H2数据库介绍 常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL.其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的客户端和服务器端.H2的优势:1.h2采用纯Java编写,因此不受平台的限制.2.h2只有一个jar文件,十分适合作为嵌入式数据库试用.3.性能和功能的优势 H2

Oracle - 数据库的实例、表空间、用户、表之间关系

完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区. 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件.Oracle有一个很大的内存快,成为全局区(SGA

H2数据库攻略

H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容.H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便. 一.引入Maven依赖 在maven中定义H2数据库的版本属性 <properties> <h2.version>1.3.172</h2.version></properties> 添加H2依赖 <dependency> &

mysql主从复制实践之单数据库多实例

1.主从复制数据库实战环境准备 MySQL主从复制实践对环境的要求比较简单,可以是单机单数据库多实例的环境,也可以是两台服务器之间,每台服务器都部署一个独立的数据库的环境.本文以单机数据库多实例的环境进行实践. 2.主从复制服务器角色定义 序号 数据库角色 数据库IP信息 数据库port信息 数据库配置路径 1 master 192.168.1.20 3306 /data/3306 2 slave1 192.168.1.20 3307 /data/3307 3 slave2 192.168.1.

DbUnit实践:Spring Test Dbunit,H2数据库

概述 Dbunit是一个基于JUnit的数据库集成测试框架.DBUnit 的设计理念就是在测试之前,给对象数据库植入我们需要的准备数据,最后,在测试完毕后,回溯到测试前的状态:它使数据库在测试过程之间处于一种已知状态,如果一个测试用例对数据库造成了破坏性影响,它可以帮助避免造成后面的测试失败或者给出错误结果. Spring Test DbUnit提供了Spring Test Framework与DBUnit之间的集成.使用Spring Test DbUnit提供了注解驱动的数据库集成测试方式.

分享:mysql异地数据库备份实例代码

分享:mysql异地数据库备份实例代码 mysql现在应用在操作系统中包括有linux系统与windows系统,下面是多备份分享常用的两种系统中实现mysql异地数据库备份,有需要了解的朋友可参考. windows的任务计划定时执行该文件. 文件内容如下: cd F:/MySQLBackup f: mysqldump -h ip -uusername -ppassworddbname>F:/MySQLBackup/PersonBackupMonday.sql username:数据库用户 pas