首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将事务相关代码转换为非事务相关代码?

如何将事务相关代码转换为非事务相关代码?
EN

Stack Overflow用户
提问于 2010-07-20 22:02:58
回答 2查看 84关注 0票数 1

几个月前,我听说亚马逊倾向于将其所有的事务性发货代码(这也有另一个问题,它们是分布式的,也就是“分片”)改为非事务性代码。

代码语言:javascript
运行
复制
some_buy_method()

  check_item_stock()

  remove_item_from_stock()

  add_to_order()

end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-20 22:25:38

我听说eBay也是无事务运行的,也许亚马逊也会采用类似的方法。

来自The eBay Architecture (幻灯片18,23):

绝对没有客户端事务

我们该怎么做呢?

-仔细排序数据库操作

-通过以下方式恢复

·异步恢复事件

·对帐批处理·故障转移到异步流

基本原理

-避免死锁

-避免耦合可用性

-更新并发-无缝处理拆分eBay

(抱歉,格式错误)

在我看来,如果没有ACID事务,您需要手动检查、恢复或补偿。但确切的业务逻辑是已知的,因此可以设计出适当的错误处理或冲突策略。这也使我在BPEL中处理错误,在BPEL中,事情是异步的,我们编写补偿处理程序。

票数 1
EN

Stack Overflow用户

发布于 2010-07-20 22:13:15

第一个答案是:有困难。

第二个答案:潜在的灾难性后果。

我怀疑亚马逊是否想要消除所有交易。他们可能想要做的是放松ACID条件以提高可伸缩性和availability:他们仍然想要原子性和持久性,但必须为commutativity and idempotence重构操作并添加compensating transactions来处理降低的一致性和隔离性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3290736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档