0

У меня есть вопрос об активной репликации и заказе. Я знаю, что традиционно активная репликация в распределенной системе требует полного упорядочения для распространения запросов на реплики, однако я подумал о примере, где это может быть необязательно.Задача: Активная репликация для банка?

Изображение системы банковского счета с использованием активной репликации. Но вместо того, чтобы дебетовать свою учетную запись, вы можете только кредитовать свою учетную запись (так что только добавляйте положительные суммы на свой баланс). Нужно ли банковской системе заказывать гарантии? Учитывая, если бы я добавил 5 фунтов стерлингов, а затем 10 фунтов стерлингов на мой счет, если реплики не получили этого по порядку, это все равно составляло бы 15 фунтов стерлингов, независимо от того, в каком порядке они получили запрос. Нет реальных конфликтов, которые могли бы возникнуть для заказа, часть из того, что пользователь может быть немного раздражен, чтобы увидеть, что их учетная запись имеет только 5 фунтов стерлингов, когда они кредитуют 10 фунтов стерлингов в первую очередь. Но более технически, где проблема?

Я полагаю, что я неправ, но не могу понять почему. Кто-нибудь сможет объяснить мне более подробно?

ответ

0

Да, дополнение ассоциативно. Это означает, что любое упорядочение дополнений приведет к тому же значению. Общее задание обычно требуется для установки значений, но не для приращений. Тем не менее, приращения требуют ровно один раз доставки. Если этот прирост прибывает дважды, потому что отправитель не понял, что получатель получил его, вы просто дали кому-то 10 фунтов за свои деньги. Установка баланса счета на точное значение чувствительна к заказу, но не для повторной попытки.

Проблема для банков заключается в том, что у вас обычно есть некоторые другие гарантии правильности, которые необходимо удержать, например, баланс счета для любой учетной записи, никогда не являющейся отрицательной. Если вы храните деньги и деньги из учетной записи в двух полях рядом друг с другом, просто работая, как вы описали, а другая, только сохраняя вычитания, вы сможете обрабатывать как вкладывание денег, так и оплату с Счет. Однако упорядочение имеет значение, поскольку вы можете сначала получить все вычитания, а затем дополнения. Или все дополнения, тогда вы платите, используя эти деньги, прежде чем вычесть вычеты, и теперь вы переустановили свою учетную запись.

У меня есть три рекомендации: во-первых, не создавайте программное обеспечение для обработки денег, если вы можете его избежать. Ошибки очень дороги. Во-вторых, не разрабатывайте распределенные системы, если вам это действительно нужно. В-третьих, если вам нужно, сохраните транзакции вместо учетных записей и используйте UUID. Alice sent £8 to Bob (roughly on January 22). Это нечто, называемое CRDT, которое обрабатывает дубликаты и часто обрабатывает произвольный порядок.

+0

Большое спасибо – user3421420

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