O Corvus é um proxy de cluster Redis rápido e leve para Redis 3.0 com o modo de cluster ativado.
A maioria das implementações do cliente Redis não oferece suporte ao cluster Redis. Temos muitos serviços que contam com Redis, que são escritos em Python, Java, Go, NodeJs etc. É difícil fornecer bibliotecas de clientes Redis para vários idiomas sem quebrar compatibilidades. Utilizamos o TWEMProxy antes, mas ele depende do Sentinel para obter alta disponibilidade, também exige a reinicialização para adicionar ou remover instâncias de back -end Redis, o que causa interrupção de serviço. E o TwemProxy é um único rosqueado, temos que implantar várias instâncias TwemProxy para um grande número de clientes, o que causa as dores de cabeça da SA.
Portanto, fizemos Corvus.
Veja detalhes em nossos resultados de teste.
Se usar os lançamentos baixados da página de lançamentos, basta fazer:
$ make
Com o modo de depuração ativado:
make debug
Se construir a partir da última fonte:
git clone https://github.com/eleme/corvus.git
cd corvus
git submodule update --init
make deps # need autoconf
make O binário pode ser encontrado em ./src/corvus .
Exemplo de arquivo de configuração está em corvus.conf.
$ ./src/corvus path/to/corvus.confSET , GET , INCR ..) são suportados.MGET : divida em múltiplas GET .MSET : Divida no SET múltiplo.DEL : divida -se em múltiplas chaves únicas DEL .EXISTS : EXISTS divisão em múltiplas chave única.PING : ignorado e não será encaminhado.INFO , TIME : não será encaminhado para o back -end Redis, as informações coletadas no proxy serão devolvidas.SLOWLOG : retorne os llogs lentos salvos pelo próprio Corvus. Observe que, diferentemente do Redis, na entrada do SloDLog, há um campo remote latency adicional antes do campo total latency . O SlowLog também registrará o comando submarino mais lento para comandos de chave múltipla: MGET , MSET , DEL , EXISTS . A latência total da entrada sub -CMD será a mesma da CMD pai.AUTH : faça autenticação em proxy.CONFIG : Suporte get , set e rewrite Subcomando para recuperar e manipular a configuração do Corvus.SELECT : ignorado se o índice for 0 , não será encaminhado. EVAL : pelo menos uma chave deve ser fornecida. Se houver várias chaves, todas elas devem pertencer ao mesmo nó.Os seguintes comandos exigem que todas as chaves de argumento pertencem ao mesmo nó Redis:
SORT .RPOP , LPUSH .SDIFF , SDIFFSTORE , SINTER , SINTERSTORE , SMOVE , SUNION , SUNIONSTORE .ZINTERSTORE , ZUNIONSTORE .PFCOUNTE , PFMERGE . Os seguintes comandos não estão disponíveis, como KEYS , não podemos pesquisar teclas em todas as instâncias de back -end 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 .CLUSTER .ECHO , QUIT .BGREWRITEAOF , BGSAVE , CLIENT , COMMAND , CONFIG , DBSIZE , DEBUG , FLUSHALL , FLUSHDB , LASTSAVE , SYNC , MONITOR , ROLE , SAVE , SHUTDOWN , SLAVEOF . Mit. Copyright (c) 2016 Eleme Inc.
Consulte a licença para obter detalhes.