Corvus est un proxy de cluster Redis rapide et léger pour Redis 3.0 avec le mode de cluster activé.
La plupart des implémentations des clients Redis ne prennent pas en charge le cluster Redis. Nous avons beaucoup de services qui s'appuient sur Redis, qui sont écrits en Python, Java, Go, Nodejs, etc. Il est difficile de fournir des bibliothèques de clients Redis pour plusieurs langues sans casser les compatibilités. Nous avons utilisé Twemproxy auparavant, mais il s'appuie sur Sentinel pour la haute disponibilité, il faut également redémarrer pour ajouter ou supprimer les instances Redis backend, ce qui provoque une interruption de service. Et Twemproxy est unique, nous devons déployer plusieurs instances de twemproxy pour un grand nombre de clients, ce qui provoque les maux de tête SA.
Par conséquent, nous avons fait Corvus.
Voir les détails de nos résultats de test.
Si vous utilisez les versions téléchargées à partir de la page des versions, faites simplement:
$ make
Avec le mode de débogage activé:
make debug
Si construire à partir de la dernière source:
git clone https://github.com/eleme/corvus.git
cd corvus
git submodule update --init
make deps # need autoconf
make Le binaire peut être trouvé sur ./src/corvus .
Exemple de fichier de configuration est sur corvus.conf.
$ ./src/corvus path/to/corvus.confSET , GET , INCR ..) sont prises en charge.MGET : Split to multiple GET .MSET : Split en plusieurs SET .DEL : Split à plusieurs clés unique DEL .EXISTS : Split en plusieurs touches unique EXISTS .PING : ignoré et ne sera pas transmis.INFO , TIME : ne sera pas transmis pour backend redis, les informations collectées dans le proxy seront retournées.SLOWLOG : Retournez les slowlogs enregistrés par Corvus lui-même. Notez que, contrairement à Redis, dans l'entrée Slowlog, il y a un champ remote latency supplémentaire avant le champ total latency . Le slowlog enregistrera également la commande SUBS la plus lente pour les commandes à clé multiple: MGET , MSET , DEL , EXISTS . La latence totale de l'entrée sous-cmd sera simplement la même que son CMD parent.AUTH : Faites l'authentification dans Proxy.CONFIG : Prise en charge des sous-commandes get , set et rewrite pour récupérer et manipuler Corvus Config.SELECT : Ignoré si l'index est 0 , ne sera pas transmis. EVAL : Au moins une clé doit être donnée. S'il y a plusieurs clés, toutes doivent appartenir au même nœud.Les commandes suivantes nécessitent que toutes les touches d'argument appartiennent au même nœud redis:
SORT .RPOP , LPUSH .SDIFF , SDIFFSTORE , SINTER , SINTERSTORE , SMOVE , SUNION , SUNIONSTORE .ZINTERSTORE , ZUNIONSTORE .PFCOUNTE , PFMERGE . Les commandes suivantes ne sont pas disponibles, telles que KEYS , nous ne pouvons pas rechercher les clés sur toutes les instances de redis backend.
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 , MONITOR , ROLE , SAVE , SHUTDOWN , SLAVEOF , SYNC . Mit. Copyright (C) 2016 Eleme Inc.
Voir la licence pour plus de détails.