Преимущества и оптимизация multi-region инфраструктуры для Solana

Преимущества и оптимизация multi-region инфраструктуры для Solana

2025.08.10
Мы подчеркивали, насколько важно оставаться физически рядом с текущим лидером-валидатором. Тем не менее, Solana распределена по всему миру, и лидеры постоянно меняются. Парковка всего в одном городе не соответствует этой реальности, поэтому имеет смысл использовать мультирегиональный подход. В этой статье мы начнем с эпох и расписания лидеров, а затем покажем, как определить, «близки» ли вы на практике, и как реализовать это решение на практике.

Захват эпох и график лидера

Solana опережает время в слотах. Примерно 400 мс составляют один слот, и слоты группируются в эпоху. Эпоха представляет собой набор слотов (всего 432 000) и ощущается примерно как два дня. Вы можете отслеживать прогресс с помощью метода RPC getEpochInfo. Чтобы понять текущий темп обработки сети и скорость развития слотов, полезно использовать getRecentPerformanceSamples. В начале каждой эпохи расписание лидеров фиксировано, и в любой момент блок производит ровно один лидер. Такая быстрая смена кадров является причиной того, что вам нужен подход, учитывающий дистанцию ​​при смене лидеров.

Почему расстояние влияет на результаты

В истории торговой инфраструктуры физическая близость к основным серверам биржи всегда была преимуществом. Люди даже говорят, что цена сервера меняется в зависимости от длины кабеля. Свет быстр, но не бесконечен. Меньшее расстояние означает более быстрый прием и более быструю отправку. Тот же принцип применяется к блокчейну, с одним отличием: точка производства блоков Solana перемещается по всему миру. Если лидер сейчас находится в Нью-Йорке, то пребывание рядом с Нью-Йорком помогает. Если следующий лидер будет во Франкфурте, то близость к Франкфурту поможет. Вот почему вы готовите несколько локаций вместо одного хаба.

Основная межрегиональная стратегия

Карта валидаторов Solana Сохраняйте несколько небольших точек опоры в крупных городах-валидаторах и обменных пунктах и ​​автоматически используйте точку опоры, которая в любой момент находится ближе всего к текущему лидеру. Когда слот лидера находится в Нью-Йорке, получайте и отправляйте сообщения из Нью-Йорка. Когда следующий лидер перейдет во Франкфурт, немедленно переключитесь во Франкфурт и передавайте оттуда по кратчайшему пути. Цель не в том, чтобы улучшить средний показатель, а в том, чтобы не упустить возможности, которые продолжают появляться.

Выберите выделенный, а не общий

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

Как измерить «близость»

Близость — это решение на основе данных, а не интуитивное чувство. Сначала найдите, где вы находитесь в текущую эпоху. Используйте getEpochInfo для получения данных эпохи и чтения прошедших и оставшихся слотов. Затем используйте getRecentPerformanceSamples, чтобы оценить недавнее среднее время слота. Оставшиеся слоты, умноженные на среднее время слота, дают примерное количество секунд до переключения. Это облегчает планирование подготовки и передачи локаций. По мере приближения смены выберите лидеров для вашего целевого диапазона с помощью getSlotLeaders и сузьте список ближайших кандидатов. Вы можете перечислить узлы кластера с помощью getClusterNodes. Сопоставьте личность лидера с данными узла, а затем используйте общедоступный IP-адрес или адрес сплетен для оценки географических кандидатов. Будьте осторожны здесь. Геолокация IP может быть неправильной или устаревшей, поэтому, как только у вас будет приблизительная карта, на самом деле пропингуйте каждую точку опоры и напрямую измерьте базовую линию туда и обратно. Сеть ведет себя как автомобильное путешествие: расстояние имеет значение, но выбор маршрута меняет время прибытия. Пинг — это компактный индикатор того, насколько загружены сегодняшние «дороги». Не полагайтесь на одно измерение. Запустите несколько облегченных пингов в течение короткого окна и на основе медианы примите решение об уменьшении шума. Не выбрасывайте результаты. Храните измерения и сопоставления для каждой точки опоры в своей собственной базе данных и используйте легкий рабочий процесс, обновляющий дельты при каждом изменении эпохи. Повседневные операции становятся более стабильными, а ваши решения — быстрее.

Превратим его в систему с базой данных и воркёрами

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

Настройка на микроуровне и дизайн на макроуровне

В каждом случае используйте CPU с высокой тактовой частотой, память DDR5 и новейшую версию NVMe и сохраняйте типичный уровень использования на низком уровне. Настройка на микроуровне — это основа, благодаря которой многорегиональный дизайн окупается. На макроуровне разместите выделенные эндпоинты и серверы внутри одной сети, чтобы максимизировать «соединение zero-distance», которая не пересекает публичный интернет. Для ретрансляции между точками опоры собственные выделенные маршруты часто сокращают время ожидания переключения по сравнению с обычными маршрутами через общедоступный RPC.

Внедрение и поддержка

Получайте рядом с лидером, отправляйте рядом с лидером. Поскольку понятие «рядом» постоянно меняется, распределите свое присутствие по нескольким регионам. Что вам нужно, так это небольшой механизм для отслеживания последнего расписания и разумный способ занять точку опоры. Мы не предоставляем торговые или финансовые консультации. Однако мы, как разработчики, можем помочь конкретными шагами по сокращению передачи данных туда и обратно. Это включает в себя проектирование вашей базы данных и исполнителей, размещение точек опоры, подготовку выделенных эндпоинтов и передачу управления между городами. Для получения обновлений и вопросов присоединяйтесь к Validators DAO Discord. Доступны бесплатные пробные версии и тестовые среды. https://discord.gg/C7ZQSrCkYR Спасибо, как всегда. Мы продолжаем тестировать в полевых условиях и честно совершенствоваться, чтобы ваш проект увенчался успехом.