2010-07-20 3 views
1

Я слышал пару месяцев назад, что Amazon была склонна менять весь свой транзакционный код доставки (который также имеет другую проблему, они распределены так называемым «sharded») в не транзакционный код.Как перевести транзакционный код в код, не зависящий от транзакции?

some_buy_method() 

    check_item_stock() 

    remove_item_from_stock() 

    add_to_order() 

end 

ответ

1

Я слышал, что eBay также работал без транзакций, возможно, Amazon будет следовать аналогичному подходу.

С The eBay Architecture (слайд 18, 23):

Абсолютно никакой стороне клиента сделки

Как мы не тянуть его?

- Тщательное упорядочение операций БДА
- восстановление через
• Асинхронные события восстановления
• партии примирения • Failover для асинхронного потока

Обоснования

- Избегайте тупики
- Избегайте наличие сцепления
- Обновление параллелизма - Бесшовная обработка расколов eBay

(Извините за форматирование)

Для меня, это выглядит, как если бы не ACID транзакций, то нужно проверить, восстановить или компенсировать вещи вручную. Но точная бизнес-логика известна, поэтому можно разработать правильную обработку ошибок или стратегию конфликта. Это также делает меня делом обработки ошибок в BPEL, где все происходит асинхронно, и мы пишем обработчик компенсации.

2

Первый ответ: С трудом.

Второй ответ: с потенциально катастрофическими результатами.

Я сомневаюсь, что Amazon хочет устранить все транзакции. То, что они, вероятно, хотят сделать, - это расслабление условий ACID для улучшения масштабируемости и availability: они все еще хотят атомарности и долговечности, но им придется реорганизовать свои операции на commutativity and idempotence и добавить compensating transactions, чтобы справиться с уменьшенной согласованностью и изоляцией.

+0

+1 для интересной ссылки о новом определении ACID – ewernli

Смежные вопросы