Исторически сложилось так, что веб-клиенты (в том числе тот, на котором мы находимся) получают данные непосредственно из блокчейна, что часто не является эффективным способом обработки большого количества запросов.
Проблемы могут возникнуть как при росте посещаемости веб-клиентов, так и росте их числа (например с запуском разных форумов/сервисов, для которых не напасешься API-нод, если для каждого делать отдельные). Кроме того, всегда найдутся любители "дергать запросами" публичные API-ноды для чего-то своего, а того хуже без оптимизации скриптов для сглаживания нагрузки на ноды (или из злого умысла).
С целью улучшить устойчивость нагрузок между нодами команда Steemit разработала сервис под названием Jussi, который создает слой между веб-клиентами и блокчейном, позволяя кэшировать данные в Redis и обрабатывать запросы c Nginx более эффективным способом.
Как вы помните, недавно была заявка на портирование Jussi для работы с блокчейном Голос, теперь точки доступа через http/jsonrpc на основных нодах настроены для работы с кеш-слоем.
Jussi уже несколько недель тестируется и на веб-клиенте golos.today (который первым получает обновления для предварительной обкатки, но может содержать ошибки). Наблюдения "под капотом" показывают что мы на правильном пути и кеш-слой весьма полезный инструмент :)
В ближайшее время воркером будут внесены правки в веб-клиенты блогов и форумов, чтобы мы имели возможность не использовать веб-сокеты на основных нодах сообщества. При этом для частных API-нод ничего не изменится (если их владельцы сами того не захотят), или не примут решение сделать публичный доступ только через кеш-слой.
Отказ от веб-сокетов на нодах сообщества в перспективе позволит лучше балансировать нагрузку и эффективнее наращивать/сокращать серверные мощности при росте/спадах нагрузки на API-ноды блокчейна с развитием числа веб-клиентов и иных внешних подключений.
Репозитарий Jussi доступен на https://github.com/golos-blockchain/jussi
Для запуска c Docker (образ golosblockchain/jussi:latest
)
https://github.com/golos-blockchain/jussi/blob/master/docker-compose.yml
Пример настроек - https://github.com/golos-blockchain/jussi/blob/master/DEV_config.json
Подробности по настройке можно прочитать здесь
@lex Не совсем понял: это для Нод или сервисов, использующих их?
@denis-skripnik ну по факту для всех, владельцам нод впервую очередь это снижение нагрузки и куда более эффективная балансировка при нескольких серверах (+ защита от перегруза "любителями пошалить" через веб-сокеты).
Плюс в конфиге можно задать какие запросы будут идти на одну ноду, какие на другую (например с полной историей).
Владельцам сервисов тоже выгода, что публичные точки ровно распределят поступающую нагрузку. Да и они сами могут поставить кеш-слой перед своими API-нодами и отрегулировать сколько секунд хранить в кеше инфу буквально по каждому методу. Примеры в конфиге https://github.com/golos-blockchain/jussi/blob/master/DEV_config.json
Понятно. Благодарю.