Closed 81xx closed 2 years ago
В плане удобства, Redis мне очень нравится. По умолчанию он не требует авторизации / создания пользователей / конфигурирования и т.д.
После установки его сразу можно использовать
В плане удобства, Redis мне очень нравится. По умолчанию он не требует авторизации / создания пользователей / конфигурирования и т.д.
После установки его сразу можно использовать
если установка будет простой, то, тогда можно использовать.
В Redis, кстати, можно будет перенести хранение соответствий event_id => order_id
и order_id => id
У нас уже есть memcache в стеке, Максим его активно использует. Предлагаю использовать что-то одно, если memcache не устраивает, давайте обсудим на митинге.
У нас уже есть memcache в стеке, Максим его активно использует. Предлагаю использовать что-то одно, если memcache не устраивает, предлагаю обсудить на митинге.
мы уже мельком обсудили, и дело в том, что memcache для php, а radis более облюблен питонистами.
@idvlab но если что можно обсудить это отдельно.
В мире Python люди больше любят Redis :)
Это не принципиально. Можно использовать и Memcached, для него есть библиотеки на Python.
Каких-то проблем от совместного использования обоих хранилищ на одном сервере нет
nomnoms12
я memcache не работал, если не будет проблем использовать на одном сервере, то лучше тогда что-то одно использоватью.
@idvlab но если что можно обсудить это отдельно.
Насколько я понимаю, есть pymemcache, который хорошо работает и глобально ничем от редиса не отличается (в редисе чуть больше функционала типа pub, sub, но нам это не нужно). Более того, мы делали замеры, memcache чуть-чуть быстрее. В общем, лучше всем вместе обсудить.
Хорошее сравнение от Amazon: https://aws.amazon.com/ru/elasticache/redis-vs-memcached/
Из интересного: Redis в отличие от Memcached, поддерживает сохранение данных на диск:
With Redis you can keep your data on disk with a point in time snapshot which can be used for archiving or recovery.
То есть после перезагрузки сервера информация о всех ордерах будет сохранена
То есть после перезагрузки сервера информация о всех ордерах будет сохранена
Ну для нас это важно.
Memcached в ядро мы выбрали, потому что он чуть быстрее redis. Если сервер перезагрузится, то ничего страшного для ядра нет, ядро отменит все ордера и получит балансы (на данный момент, если сервер перезапустится, ядро по умолчанию не будет запущено). Перезагрузка сервера очень редко происходит и в таком случае нужно устранять ошибки, чтобы не перезапускался. Глобально, сильных отличий нет.
Так как, в ядро мы взяли memcached, предлагаю в гейте брать тоже memcached.
Перешёл на использование Memcached в гейте
По поводу самой задачи. Сейчас в гейте с помощью нескольких IP-адресов есть возможность получить только ордербуки. Для авторизованных запросов ограничение делится между токеном, а не адресом.
Любые запросы ядра выполняются в приоритете и без задержек.
Соответственно, нет практического смысла в том, чтобы указывать один IP-адрес в нескольких пулах и глобально контролировать его ограничение. У нас не будет нескольких пулов
Задача по уменьшению задержек сейчас решается добавлением списка токенов: https://github.com/RoboTradeCode/flash-gate/issues/74
В текущей версии гейта не предусмотрена ситуация, что гейт контролирует ограничения если во всех пулах указан один и тот же IP адрес. Пользователь может сам указать какие-то ограничения, но может быть ситуация при которой, например, ядро отправит 100 адресов и использует весь лимит адреса.
Необходимо продумать как контролировать лимиты при использовании одного адреса. Насчет, radis, идея хорошая, но надо очень осторожно относится к введению дополнительных сущностей. Сейчас гейт это просто скприт, который легко запустить, но если вводить другие сущности это может затруднить его развертывание и использование.