Corvus ist ein schneller und leichter Redis -Cluster -Proxy für Redis 3.0 mit aktiviertem Clustermodus.
Die meisten Redis -Client -Implementierungen unterstützen REDIS -Cluster nicht. Wir haben viele Dienste, die auf Redis beruhen, die in Python, Java, Go, NodeJs usw. geschrieben sind. Es ist schwierig, Redis -Client -Bibliotheken für mehrere Sprachen bereitzustellen, ohne Kompatibilitäten zu brechen. Wir haben Twemproxy schon einmal verwendet, aber es stützt sich auf Sentinel für eine hohe Verfügbarkeit und erfordert auch das Neustart, um Backend -Redis -Instanzen hinzuzufügen oder zu entfernen, was zu einer Unterbrechung des Service führt. Und Twemproxy ist ein einzelner Thread, wir müssen mehrere Twemproxy -Instanzen für eine große Anzahl von Kunden bereitstellen, was die SA -Kopfschmerzen verursacht.
Deshalb haben wir Corvus gemacht.
Siehe Details in unseren Testergebnissen.
Wenn Sie die Releases verwenden, die von der Releases -Seite heruntergeladen wurden, machen Sie einfach:
$ make
Mit aktiviertem Debug -Modus:
make debug
Wenn Sie aus der neuesten Quelle erstellen:
git clone https://github.com/eleme/corvus.git
cd corvus
git submodule update --init
make deps # need autoconf
make Binär kann unter ./src/corvus gefunden werden.
Beispielkonfigurationsdatei finden Sie bei corvus.conf.
$ ./src/corvus path/to/corvus.confSET , GET , INCR ) werden unterstützt.MGET : geteilt zu mehreren GET .MSET : Split in mehrere SET .DEL : Split in mehrere Einzelschlüssel DEL .EXISTS : Aufgeteilt auf mehrere Einzelschlüssel EXISTS .PING : Ignoriert und wird nicht weitergeleitet.INFO , TIME : Wird nicht an Backend Redis weitergeleitet, werden Informationen, die in Proxy gesammelt wurden, zurückgegeben.SLOWLOG : Return die SlowLogs, die Corvus selbst gerettet haben. Beachten Sie, dass im Gegensatz zu Redis im Slowlog -Eintrag vor dem Feld total latency ein zusätzliches remote latency vorliegt. Der SlowLog lastet auch den langsamsten Sub-Befehl für mehrere Key-Befehle an: MGET , MSET , DEL , EXISTS . Die Gesamtlatenz des Sub -CMD -Eintrags ist genau das gleiche wie die übergeordnete CMD.AUTH : Authentifizierung in Proxy.CONFIG : Support get , set und rewrite Sub-Command, um die Corvus-Konfiguration abzurufen und zu manipulieren.SELECT : Ignoriert, wenn der Index 0 ist, wird nicht weitergeleitet. EVAL : Mindestens ein Schlüssel sollte angegeben werden. Wenn es mehrere Schlüssel gibt, sollten alle zu demselben Knoten gehören.Die folgenden Befehle erfordern, dass alle Argumentmarke zu demselben Redis -Knoten gehören:
SORT .RPOP , LPUSH .SDIFF , SDIFFSTORE , SINTER , SINTERSTORE , SMOVE , SUNION , SUNIONSTORE .ZINTERSTORE , ZUNIONSTORE .PFCOUNTE , PFMERGE . Die folgenden Befehle sind nicht verfügbar, wie z. KEYS , wir können keine Schlüssel in allen Backend -Redis -Instanzen durchsuchen.
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.
Weitere Informationen finden Sie in Lizenz.