Corvus es un proxy de clúster Redis rápido y ligero para Redis 3.0 con modo de clúster habilitado.
La mayoría de las implementaciones de clientes de Redis no admiten Redis Cluster. Tenemos muchos servicios que dependen de Redis, que están escritos en Python, Java, GO, NodeJs, etc. Es difícil proporcionar bibliotecas de clientes de Redis para múltiples idiomas sin romper las compatibilidades. Utilizamos TwemProxy antes, pero se basa en Sentinel para una alta disponibilidad, también requiere reiniciar para agregar o eliminar las instancias de Backend Redis, lo que causa la interrupción del servicio. Y Twemproxy es un solo enhebrado, tenemos que implementar múltiples instancias de tweMproxy para un gran número de clientes, lo que causa los dolores de cabeza de SA.
Por lo tanto, hicimos Corvus.
Vea los detalles en los resultados de nuestra prueba.
Si usa las versiones descargadas de la página de lanzamientos, solo haga:
$ make
Con el modo de depuración habilitado:
make debug
Si se construye desde la última fuente:
git clone https://github.com/eleme/corvus.git
cd corvus
git submodule update --init
make deps # need autoconf
make El binario se puede encontrar en ./src/corvus .
El archivo de configuración de ejemplo es en Corvus.Conf.
$ ./src/corvus path/to/corvus.confSET , GET , INCR ..).MGET : divide a múltiples GET .MSET : dividido en SET múltiple.DEL : dividido en múltiples clave única DEL .EXISTS : EXISTS dividir a múltiples clave única.PING : ignorado y no se reenviará.INFO , TIME : no se reenviará para backend redis, se devolverá la información recopilada en proxy.SLOWLOG : Devuelve los Logs SlowLog guardados por el propio Corvus. Tenga en cuenta que, a diferencia de Redis, en la entrada de SlowLog hay un campo remote latency adicional antes del campo total latency . El SlowLog también registrará el comando Sub más lento para comandos de clave múltiple: MGET , MSET , DEL , EXISTS . La latencia total de la entrada Sub CMD será la misma que su CMD principal.AUTH : hacer autenticación en proxy.CONFIG : admite get , set y rewrite el subcomcomando para recuperar y manipular la configuración de Corvus.SELECT : ignorado si el índice es 0 , no se reenviará. EVAL : se debe administrar al menos una clave. Si hay múltiples claves, todas deben pertenecer al mismo nodo.Los siguientes comandos requieren que todas las teclas de argumento pertenezcan al mismo nodo Redis:
SORT .RPOP , LPUSH .SDIFF , SDIFFSTORE , SINTER , SINTERSTORE , SMOVE , SUNION , SUNIONSTORE .ZINTERSTORE , ZUNIONSTORE .PFCOUNTE , PFMERGE . Los siguientes comandos no están disponibles, como KEYS , no podemos buscar claves en todas las instancias de Backend Redis.
KEYS , MIGRATE , MOVE , OBJECT , RANDOMKEY , RENAME , RENAMENX , SCAN , WAIT .BITOP , MSETNXBLPOP , BRPOP , BRPOPLPUSH .PSUBSCRIBE , PUBLISH , PUBSUB , PUNSUBSCRIBE , SUBSCRIBE , UNSUBSCRIBE suscripción.EVALSHA , SCRIPT .DISCARD , EXEC , MULTI , UNWATCH , WATCH .CLUSTER .ECHO , QUIT .BGREWRITEAOF , BGSAVE , CLIENT , COMMAND , CONFIG , DBSIZE , DEBUG , FLUSHALL , FLUSHDB , LASTSAVE , MONITOR , ROLE , Save SAVE SHUTDOWN , SlaveOf, SLAVEOF SYNC Mit. Copyright (c) 2016 Eleme Inc.
Vea la licencia para más detalles.