关于DynamoDB实现Shedlock的表结构与跨库使用的咨询
关于Shedlock多实例Cron重复执行问题的解答
一、DynamoDB锁表的表名与列信息
Shedlock的DynamoDB锁表默认表名为shedlock,也可通过配置自定义表名。表的核心结构如下:
- 分区键:
_id(字符串类型),对应锁的名称(即@SchedulerLock注解中指定的name值) - 必选属性列:
lock_until:数字类型(存储毫秒级时间戳,表示锁失效时间)locked_at:数字类型(存储毫秒级时间戳,表示锁被获取的时间)locked_by:字符串类型(标识持有锁的实例ID或名称)
如果手动创建表,需确保分区键设置为_id;用代码创建可调用DynamoDBUtils.createLockTable方法,示例代码如下:
AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.defaultClient(); DynamoDBUtils.createLockTable(amazonDynamoDB, "shedlock", 10L);
第三个参数为表的读写容量单位,可根据实际场景调整。
二、主数据库为Oracle时,能否将Shedlock部署在DynamoDB中
完全可以。Shedlock的锁存储与业务主数据库相互独立,支持多种锁存储实现(关系型数据库、NoSQL、Redis等)。只要在项目中配置DynamoDBLockProvider并正确连接到DynamoDB实例,就能实现多实例Cron任务的分布式锁控制,与主库Oracle无冲突。
内容的提问来源于stack exchange,提问作者CodeFreak
相关产品推荐
相关产品推荐

