Corvus - это быстрый и легкий прокси -сервер Redis Cluster для Redis 3.0 с включенным режимом кластера.
Большинство реализаций клиентов Redis не поддерживают Redis Cluster. У нас есть много услуг, полагающихся на Redis, которые написаны в Python, Java, Go, Nodejs и т. Д. Трудно предоставить клиентские библиотеки Redis для нескольких языков, не нарушая совместимости. Мы использовали TwemProxy раньше, но он полагается на Sentinel для высокой доступности, также требуется перезапуск для добавления или удаления экземпляров Backend Redis, что вызывает прерывание обслуживания. И TwemProxy - однооборот, мы должны развернуть несколько экземпляров TwemProxy для большого количества клиентов, что вызывает головные боли SA.
Поэтому мы сделали Corvus.
Смотрите детали в наших результатах теста.
Если используйте выпуски, загруженные со страницы релизов, просто сделайте:
$ make
С включенным режимом отладки:
make debug
Если построить из последнего источника:
git clone https://github.com/eleme/corvus.git
cd corvus
git submodule update --init
make deps # need autoconf
make Бинарный файл можно найти в ./src/corvus .
Пример файла конфигурации на corvus.conf.
$ ./src/corvus path/to/corvus.confSET , GET , INCR ..) поддерживаются.MGET : разделить на несколько GET .MSET : разделить на несколько SET .DEL : разделить на несколько единичных ключей DEL .EXISTS : Split на несколько единичных ключей EXISTS .PING : игнорируется и не будет пересылана.INFO , TIME : не будет отправлен в бэкэнд Redis, информация, собранная в прокси, будет возвращена.SLOWLOG : верните медленные слои, сохраненные самими Corvus. Обратите внимание, что в отличие от Redis, в записи Slowlog есть дополнительное поле remote latency перед total latency . Slowlog также будет регистрировать самую медленную под командование для команд с несколькими ключами: MGET , MSET , DEL , EXISTS . Общая задержка в записи Sub CMD будет такой же, как и его родительский cmd.AUTH : сделать аутентификацию в прокси.CONFIG : поддержка get , set и rewrite подкоманду для получения и манипулирования Corvus config.SELECT : Игнорируется, если индекс равен 0 , не будет пересыл. EVAL : по крайней мере один ключ должен быть предоставлен. Если есть несколько ключей, все они должны принадлежать одному узел.Следующие команды требуют, чтобы все клавиши аргументов принадлежали одному и тому же узел Redis:
SORTRPOP , LPUSH .SDIFF , SDIFFSTORE , SINTER , SINTERSTORE , SMOVE , SUNION , SUNIONSTORE .ZINTERSTORE , ZUNIONSTORE .PFCOUNTE , PFMERGE . Следующие команды недоступны, например, KEYS , мы не можем искать ключи во всех бэкэнд -экземплярах Redis.
KEYS , MIGRATE , MOVE , OBJECT , RANDOMKEY , RENAME , RENAMENX , SCAN , WAIT .BITOP , MSETNXBLPOP , BRPOP , BRPOPLPUSH .PSUBSCRIBE , PUBLISH , PUBSUB , PUNSUBSCRIBE , SUBSCRIBE , UNSUBSCRIBE .EVALSHA , SCRIPT .DISCARD , EXEC , MULTI , UNWATCH , WATCH .CLUSTERECHO , QUIT .BGREWRITEAOF , BGSAVE , CLIENT , COMMAND , CONFIG , DBSIZE , DEBUG , FLUSHALL , FLUSHDB , LASTSAVE , SYNC , Role, Save SHUTDOWN SAVE ROLE MONITOR SLAVEOF . Грань Copyright (C) 2016 Eleme Inc.
Смотрите лицензию для деталей.