Как перевести код, зависящий от транзакции, в код, не зависящий от транзакции? - PullRequest
1 голос
/ 20 июля 2010

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

some_buy_method()

  check_item_stock()

  remove_item_from_stock()

  add_to_order()

end

Ответы [ 2 ]

2 голосов
/ 20 июля 2010

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

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

Я сомневаюсь, что Amazon хочет исключить все транзакции.Вероятно, они хотят ослабить условия ACID, чтобы улучшить масштабируемость и доступность : им по-прежнему будет нужна атомарность и долговечность, но им придется реорганизовать свои операции для коммутативности и идемпотентности и добавьте компенсирующих транзакций , чтобы уменьшить согласованность и изоляцию.

1 голос
/ 20 июля 2010

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

С Архитектура eBay (слайд 18, 23):

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

Как мы осуществим это?

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

Обоснование

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...