SHiNE-server/TODO/2026-06-26_1805_межсерверный_ws_и_dm_sync.md
2026-06-28 09:30:59 +04:00

1.6 KiB
Raw Permalink Blame History

Постоянный server-to-server WS и DM sync

Зачем

Сейчас синхронизация между серверами работает в основном как periodic sync и one-shot push. Для нормальной репликации ещё нужен постоянный межсерверный канал:

  • живое подключение к партнёру;
  • push новых блоков;
  • push DM;
  • ACK на доставку;
  • backoff/reconnect;
  • стартовый backfill.

Что сделать

  1. Поднять постоянное WebSocket-соединение между партнёрскими серверами.
  2. Сделать push новых блоков сразу после AddBlock.
  3. Сделать push DM-блоков между серверами.
  4. Добавить ACK и повторную отправку при сбое.
  5. Ввести стартовый обмен курсорами и добор хвоста.

Что уже есть

  • ListBlockchainHeads;
  • GetBlockchainBlock;
  • GetSyncUserProfile;
  • базовый periodic sync;
  • базовый backfill хвоста;
  • базовый full resync при divergence.

Откуда продолжать

  • от текущего sync_servers bootstrap и PeriodicBlockchainSyncService;
  • дальше выделить отдельный межсерверный transport layer.

Какие документы потом обновить

  • Dev_Docs/Blockchain/sync-between-servers.md;
  • Dev_Docs/Personal_Messages/README.md;
  • Dev_Docs/API/.