1.6 KiB
1.6 KiB
Постоянный server-to-server WS и DM sync
Зачем
Сейчас синхронизация между серверами работает в основном как periodic sync и one-shot push. Для нормальной репликации ещё нужен постоянный межсерверный канал:
- живое подключение к партнёру;
- push новых блоков;
- push DM;
- ACK на доставку;
- backoff/reconnect;
- стартовый backfill.
Что сделать
- Поднять постоянное WebSocket-соединение между партнёрскими серверами.
- Сделать push новых блоков сразу после
AddBlock. - Сделать push DM-блоков между серверами.
- Добавить ACK и повторную отправку при сбое.
- Ввести стартовый обмен курсорами и добор хвоста.
Что уже есть
ListBlockchainHeads;GetBlockchainBlock;GetSyncUserProfile;- базовый periodic sync;
- базовый backfill хвоста;
- базовый full resync при divergence.
Откуда продолжать
- от текущего
sync_serversbootstrap иPeriodicBlockchainSyncService; - дальше выделить отдельный межсерверный transport layer.
Какие документы потом обновить
Dev_Docs/Blockchain/sync-between-servers.md;Dev_Docs/Personal_Messages/README.md;Dev_Docs/API/.