Преимущества и оптимизация мультирегиональной инфраструктуры Solana

Мы подчеркивали, насколько важно оставаться физически рядом с текущим лидером-валидатором. Тем не менее, Solana распределена по всему миру, и лидеры постоянно меняются. Размещение всей инфраструктуры в одном городе не соответствует этой реальности, поэтому имеет смысл использовать мультирегиональный подход. В этой статье мы начнем с эпох и расписания лидеров, а затем покажем, как на практике определить степень близости и превратить этот вывод в рабочий процесс.
Как устроены эпохи и расписание лидеров
В Solana время отсчитывается слотами. Один слот длится примерно 400 мс, а слоты объединяются в эпохи. Эпоха состоит из 432 000 слотов и длится около двух дней. Вы можете отслеживать прогресс с помощью метода RPC getEpochInfo. Чтобы понять текущий темп обработки сети и скорость продвижения слотов, полезно использовать getRecentPerformanceSamples. В начале каждой эпохи расписание лидеров фиксировано, и в любой момент блок производит ровно один лидер. Именно из-за такой быстрой смены лидеров инфраструктура должна учитывать меняющееся расстояние до них.
Почему расстояние влияет на результаты
В истории торговой инфраструктуры физическая близость к основным серверам биржи всегда была преимуществом. Люди даже говорят, что цена сервера меняется в зависимости от длины кабеля. Свет быстр, но не бесконечен. Меньшее расстояние означает более быстрый прием и более быструю отправку. Тот же принцип применяется к блокчейну, с одним отличием: точка производства блоков Solana перемещается по всему миру. Если лидер сейчас находится в Нью-Йорке, то пребывание рядом с Нью-Йорком помогает. Если следующий лидер будет во Франкфурте, то близость к Франкфурту поможет. Вот почему вы готовите несколько локаций вместо одного хаба.
Основная мультирегиональная стратегия
Данные сети Solana: Validators Solutions
Поддерживайте небольшие точки присутствия в крупных центрах размещения валидаторов и сетевого обмена и автоматически выбирайте ту, которая в данный момент ближе всего к текущему лидеру. Когда слот лидера приходится на Нью-Йорк, принимайте и отправляйте данные из Нью-Йорка. Когда следующий лидер перейдет во Франкфурт, немедленно переключитесь во Франкфурт и передавайте оттуда по кратчайшему пути. Цель не в том, чтобы улучшить средний показатель, а в том, чтобы не упустить возможности, которые продолжают появляться.
Выберите выделенный, а не общий
Общие сети и серверы зависят от нагрузки других пользователей, поэтому их производительность может колебаться в часы пик. Выделенные эндпоинты и выделенные серверы в разных регионах позволяют обходить перегрузки и передавать данные, как на частной скоростной автомагистрали. Прием потока особенно чувствителен к расстоянию, поэтому размещение выделенных ресурсов как можно ближе к источнику заметно влияет на повседневную производительность. Передача также ведет себя должным образом только тогда, когда она уходит из ближайшей точки опоры по выделенному маршруту (вы единственный пользователь, поэтому на вас меньше влияет общее регулирование и постановка в очередь).
Как измерить «близость»
Близость — это решение на основе данных, а не интуитивное чувство. Сначала определите, на каком этапе находится текущая эпоха. Используйте getEpochInfo, чтобы получить данные эпохи и определить число прошедших и оставшихся слотов. Затем используйте getRecentPerformanceSamples, чтобы оценить недавнее среднее время слота. Оставшиеся слоты, умноженные на среднее время слота, дают примерное количество секунд до переключения. Это облегчает планирование подготовки и переключений между локациями.
По мере приближения смены выберите лидеров для вашего целевого диапазона с помощью getSlotLeaders и сузьте список ближайших кандидатов. Вы можете перечислить узлы кластера с помощью getClusterNodes. Сопоставьте идентификатор лидера с данными узла, а затем используйте публичный IP-адрес или gossip-адрес, чтобы приблизительно определить его географическое положение.
Будьте осторожны здесь. Геолокация IP может быть неправильной или устаревшей, поэтому, как только у вас будет приблизительная карта, выполните ping из каждой точки присутствия и напрямую измерьте базовую задержку туда и обратно. Сеть ведет себя как автомобильное путешествие: расстояние имеет значение, но выбор маршрута меняет время прибытия. Пинг — это компактный индикатор того, насколько загружены сегодняшние «дороги». Не полагайтесь на одно измерение. Выполните несколько коротких измерений за небольшой интервал и ориентируйтесь на медиану, чтобы снизить влияние шума.
Не выбрасывайте результаты. Храните измерения и сопоставления для каждой точки опоры в своей собственной базе данных и используйте легковесный воркер, обновляющий изменения при каждой смене эпохи. Повседневные операции становятся более стабильными, а ваши решения — быстрее.
Превращение подхода в систему с базой данных и воркерами
Если вы пересчитываете все с нуля, ваша скорость тратится на само измерение. На практике сохраните сопоставление между лидерами и регионами, а также задержку для каждой точки опоры в своей базе данных. Обновляйте эти данные воркером на границе каждой эпохи. Рабочее приложение должно читать эту базу данных и мгновенно решить, какую точку опоры использовать. Разместите прием рядом с источником потока, а передачу в регионе следующего лидера подготовьте заранее. Разделение ролей снижает совокупную задержку.
Настройка на микроуровне и дизайн на макроуровне
В каждой точке присутствия используйте CPU с высокой тактовой частотой, память DDR5 и накопители NVMe последнего поколения и сохраняйте типичный уровень использования на низком уровне. Настройка на микроуровне — это основа, благодаря которой многорегиональный дизайн окупается. На макроуровне разместите выделенные эндпоинты и серверы внутри одной сети, чтобы максимизировать связь практически с нулевой дистанцией, которая не выходит в публичный интернет. Для ретрансляции между точками опоры собственные выделенные маршруты часто сокращают время ожидания переключения по сравнению с обычными маршрутами через общедоступный RPC.
Внедрение и поддержка
Получайте рядом с лидером, отправляйте рядом с лидером. Поскольку понятие «рядом» постоянно меняется, распределите свое присутствие по нескольким регионам. Что вам нужно, так это небольшой механизм для отслеживания последнего расписания и продуманная схема размещения точек присутствия. Мы, как разработчики, можем помочь конкретными шагами по сокращению передачи данных туда и обратно. Это включает в себя проектирование вашей базы данных и воркеров, размещение точек опоры, подготовку выделенных эндпоинтов и передачу управления между городами.
Для получения обновлений и вопросов присоединяйтесь к ERPC Web Dashboard. Доступны бесплатные пробные версии и тестовые среды.
ERPC Web Dashboard: https://dashboard.erpc.global/ru
Благодарим вас за постоянную поддержку. Мы продолжаем проверять решения в реальных условиях и последовательно улучшать их ради успеха ваших проектов.










