Java 通用事务管理

标签 java amazon-web-services amazon-s3 transactions

我正在开发一个在 Amazon S3 上存储文件的 Java 服务器。我需要使用 S3 进行事务管理,这样如果对外部服务器的操作失败,则必须回滚保存到 S3 的每个文件。

它基本上就像对数据库的事务管理,只是在这种情况下数据源是 AWS S3,它也可能是文件系统。

我无法找到现有技术,想知道我是否只需要实现它,或者已经存在相关的库/技术。

提前致谢。

最佳答案

没有任何开箱即用的方法来实现事务管理;因此您可以自己手动编写逻辑和实现代码。

与 S3 相比,您拥有的一个优势是,您永远不会遇到脏读或脏写。 S3 将始终为您提供完全处理的文件 ( blob ),即使它当前正在写入。这种减少了在关键部分、锁定等方面的努力的负担。它直接由 AWS 支持。

所以我建议的Transaction流程的实现方式是

  • 执行初始流程并调用服务器/服务(如您所述)
  • 如果一切正常,则将数据推送到 S3
  • 如果数据调用/处理失败,您将什么都不做

另一种选择是将数据推送到S3,如果在回滚交易需求的情况下,您可以删除S3 key

这听起来可能很微妙,但事实并非如此,问题范围很广。

关于Java 通用事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24403633/

相关文章:

java - 如何从其他 openshift 帐户访问 openshift 上托管的 mysql 数据库

java - 排除在休息响应中发送的java bean中的一些字段 - Spring Boot

java - 无法从自定义 JSP 标记文件中的方法内访问隐式对象

hadoop - 从 Internet 直接下载文件到我的 S3 存储桶

amazon-web-services - Next.js:托管在 AWS Cloudfront 上时,如何使链接与导出的站点一起使用?

java - 在 invokeAll 之后执行程序任务的所有副作用是否可见?

amazon-web-services - 如何向 API Gateway 授予通过 CloudFormation 调用 lambda 函数的权限?

amazon-web-services - AWS ECS 任务定义自动缩放

ios - 为什么不支持在 iOS 上执行分段上传到 S3?

amazon-web-services - 使用 Iam 角色从 Autoscaling 组启动 EC2 节点