-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Поправить API set_block_applied_callback. #92
Comments
Вообще я туту за ночь хорошо подумал и есть такое предложение. |
Я хз есть ли параметр в конфиге, но не плохо бы добавить в конфиг возможность отключать подписку на события. Например запросы можно закешировать для http и снять нагрузку с ноды, а вот если по вебсокетам на ноду подпишется слишком много слушателей это может ее убить, один из вариантов для абуза. было бы неплохо иметь возможность отключать подписку по вебсокетам. (хотя можно с плеча вообще порт вебсокетов закрыть конечно) |
Ну ладно если ноду не жалко и денег много давайте параметр на отключение подписок еще введем. А вот убрать в websocket вообще супер идея. Хороший арбуз по нагрузке на ноду сделаем. |
Человек из леса, почитайте про кэширование запросов или кэширующие прокси, например varnish. Да что угодно, по на эту тему море) Вообще снижать нагрузку на серваки вводя кэширующие слои общемировая практика |
Нда как обычно/ Ничего кроме конкретики написать кроме оскорблений. Что такое кешированние и для чего оно нужно я знаю. Но вот скажите мне пожалуйста как Ваше хваленое кеширование спасет от массового запроса на broadcast операции? |
Причем тут запись в бч? И да, сам метод уменьшает число запросов к серверу, но серверу приходится поддерживать соединение, и при том у соединения не настраивается время жизни, т.е. после реконекта соединение все равно живет в памяти ноды и обрабатывается время Х. Это лучше чем запрос/ответ без кеша, но хуже чем с кешем. Все данные поподаемые в ноду после ласт иверсибл блок статичны ( до тоже статичны но могут быть переписаны, подписка через вебсокеты тоже не решает этой проблемы), и самое логичное их хранить в кэше, а не каждый раз нодам переваривать и достовать данные из блоклога. Зы |
Ну и насколько я помню стату от коре, нода не держала больше 400 запросов. В идеале конечно вообще graphql еще бы, кто-то даже делал, но это уже другая история |
В том-то и решение этой операции. |
Еще раз, как ты сам сказал, что нода занимается рассылкой данных, это тоже нагрузка на ноду. Имея кеширующий слой, нагрузки на ноду не будет почти вообще - слой кеша только сделает 1 запрос к ноде, сохранит ответ и каждый раз будет отдавать сохраненый ответ не обращаясь к ноде. Да, мб это уже не так удобно как с подписками, когда тебе все в рот кладут, зато тоже масштабирование с кеширующим слоем делается в лет, куда проще поднять дешевый уеширующий слой, нежели лишнюю ноду. Пока блок лог у голоса небошой и это не так критично как для стима, но вопрос времени когда и мы откажемся от вебсокетов и перейдем на кешь и хттп |
В данном issue разговор не поро сравнение http и websocket. И уж тем-более не про какой из этих протоколов оставить, а какой убрать. Я не говорил про отключение websocket. Это ты сюда влез с этим. Так что поро поумничать это к тебе. |
В данном ишью я попросил сделать параметр для отключения подписок через конфиг, с аргументами, я понял что тебе это не нужно, но нужно мне. |
При чем операция все равно есть но работает криво. По идее должна присылать блок без виртуальных операций по умолчанию, а присылает как раз только виртуальные операции. При чем параметр который отвечает на тип данных задан жестко. |
Ну возможно ты и прав и стоит сделать такой параметр для ноды. Но думаю стоит разделить это. Т.е. сделать еще issue для данного параметра. Не стоит усложнять. Как раз легче разбить на мелкие и что будет легче то реализуют быстрее. |
Так вот же берется из аргумента ниже: |
Если не затруднит можете показать как передать данный параметр. Просто я понимаю так что я передаю id который потом используется как опознавательный знак для прослушивателя. |
@asuleymanov правильный пример вызова есть тут: GolosChain#945 |
К сожалению не удаллось даже запустить тот пример что прислали. В нем ошибки |
Предлагаю исправить данну API функцию, а именно:
Предлагаю убрать все варианты кроме full. Чтобы в ответе были все операции.
Возвращать структуру :
block_num - номер блока
op_count - колличество операций в блоке
vop_count - колличество виртуальных операций в блоке
[]Array Operations - непосредственно сам масив со всеми операциями как обычными так и виртуальными.
В этом случае при использовании данного API очень сильно можно снизить нагрузгу на API ноду. Клиентам просто не прийдеться посылать зарос каждые 3 секунды для получения данных.
The text was updated successfully, but these errors were encountered: