Мне сказали, что я должен отказаться от транзакционных гарантий в больших распределенных системах, потому что теорема CAP говорит, что я не могу этого сделать.
Я думаю, что это неправильно по следующим причинам:
- Интернет-маршрутизация удивительно надежна.
- Теорема CAP применима только к сетевым разделам, в которых две группы живых машин не могут общаться.
- Почти все реальные сетевые разделы состоят из катастрофических сбоев или случаев, когда один из разделов очень мал, а другой очень большой, а маленький может просто закрыться.
- Ошибки машины сами по себе не являются сетевым разделом.
Поэтому я могу предположить, что для практических целей я могу иметь транзакционное поведение при попытке гарантировать, что мелкие разделы обнаруживают, что они отключены и выключены или работают в каком-то деградированном режиме до тех пор, пока соединение не будет восстановлено.
Исправления? Комментарии? Flames?
Литература: