Stellen Sie sich vor, wir haben 2 Knoten, die Geldtransfer durchführen. Knoten A initiiert eine Geldüberweisung von einem Konto zu einem anderen, und Knoten B ist dafür verantwortlich, diese Transaktion abzuschließen. Um diese Transaktion abzuschließen, muss der Knoten A daher eine Übertragungsanforderung an den Knoten B senden, und bei Erfolg muss der Knoten B mit der Bestätigung der Übertragungsanforderung antworten. Das mögliche Problem, das ich sehe, ist folgendes: Nach dem Empfang der TRANSFER-Anfrage hat der Knoten B die Transaktion ausgeführt, aber keine Antwort gesendet. Daher denkt Knoten A, dass die Anforderung fehlgeschlagen ist, und meldet ein Problem, aber Transaktion actully wurde abgeschlossen.Verteilte Transaktionsaggression
Auch 2-Phasen-Commit-Protokoll, wenn man bedenkt (wo der Knoten B auf dem Empfang von Übertragungsanforderung nicht Transaktion nicht begehen, sondern nur ausführen und für einige warten begehen Bestätigung vom Knoten A) dort ähnliches Problem sein kann: wenn Knoten A Senden einer TRANSFER-Commit-Anforderung, es kann nicht sicher sein, dass Knoten B diese Anforderung empfangen hat und die Transaktion tatsächlich abgeschlossen wurde (selbst wenn diese Anforderung an den Zielhost übermittelt wurde, können wir nicht sicher sein, dass sie von einem Prozess ausgeführt wurde).
Wie wird dieses Problem gelöst oder ist es wirklich ein Problem?