数据库负责文件元信息的增删改查, minio 负责存储.

最好有现成的案例或者框架, 我想吃个现成的.

真诚感谢!
举报· 53 次点击
登录 注册 站外分享
4 条回复  
yangtianming 小成 2024-9-6 10:57:37
对文件唯一路径加锁,修改期间不允许其他线程修改
AEnjoyable 小成 2024-9-6 12:38:30
我们是把整个函数视为事务,先更新数据库 如果 minio 失败了就往 mysql txn 报错,这样就自动回滚事务了
伪代码:
txn=dbClient.Begin()
defer HandleErrorCh(errorChan).
ErrorWillDo(
txn.Rollback()
}).
SuccessWillDo(
_ = txn.Commit()
}).Do()

err=txn.update(xxxx)
if err!=nil{
txn.report(err)
}
err=minio.uploadfile(xxx,yyy)
if err!=nil{
txn.report(err)
}
timethinker 小成 2024-9-6 12:48:17
理论上无法保证强一致性。不过最终一致性本身就是靠异步重试+幂等补偿来实现的,这意味着每个业务都可能不一样,通用的方案也只是为你做了一些比较底层的事情。
ampedee 小成 2024-9-6 13:06:40

同时操作数据库和 minio,如何保证最终一致性

看看 juicefs?
返回顶部