Corvus adalah proxy redis cluster yang cepat dan ringan untuk Redis 3.0 dengan mode cluster diaktifkan.
Sebagian besar implementasi klien Redis tidak mendukung redis cluster. Kami memiliki banyak layanan yang mengandalkan Redis, yang ditulis dalam Python, Java, GO, NodeJs dll. Sulit untuk menyediakan perpustakaan klien Redis untuk berbagai bahasa tanpa melanggar kompatibilitas. Kami menggunakan twemproxy sebelumnya, tetapi bergantung pada Sentinel untuk ketersediaan tinggi, itu juga perlu memulai kembali untuk menambah atau menghapus instance Redis backend, yang menyebabkan gangguan layanan. Dan Twemproxy berulir tunggal, kami harus menggunakan beberapa instance twemproxy untuk sejumlah besar klien, yang menyebabkan sakit kepala SA.
Karena itu, kami membuat Corvus.
Lihat detail dalam hasil tes kami.
Jika menggunakan rilis yang diunduh dari halaman rilis, cukup buat:
$ make
Dengan mode debug diaktifkan:
make debug
Jika dibangun dari sumber terbaru:
git clone https://github.com/eleme/corvus.git
cd corvus
git submodule update --init
make deps # need autoconf
make Biner dapat ditemukan di ./src/corvus .
Contoh file konfigurasi ada di corvus.conf.
$ ./src/corvus path/to/corvus.confSET , GET , INCR ..) didukung.MGET : Berpisah untuk beberapa GET .MSET : Pisahkan ke beberapa SET .DEL : Berpisah untuk beberapa kunci tunggal DEL .EXISTS : Berpisah ke beberapa kunci tunggal EXISTSPING : Diabaikan dan tidak akan diteruskan.INFO , TIME : tidak akan diteruskan ke backend redis, informasi yang dikumpulkan di proxy akan dikembalikan.SLOWLOG : Kembalikan slowlog yang disimpan oleh Corvus sendiri. Perhatikan bahwa tidak seperti Redis, dalam entri SlowLog ada bidang remote latency tambahan sebelum bidang total latency . SlowLog juga akan mencatat sub-perintah sub yang paling lambat untuk perintah ganda: MGET , MSET , DEL , EXISTS . Latensi total entri sub CMD hanya akan sama dengan cmd induknya.AUTH : Lakukan otentikasi di proxy.CONFIG : Dukungan get , set , dan rewrite sub-perintah untuk mengambil dan memanipulasi Corvus Config.SELECT : Diabaikan jika indeks adalah 0 , tidak akan diteruskan. EVAL : Setidaknya satu kunci harus diberikan. Jika ada beberapa kunci, semuanya harus termasuk dalam simpul yang sama.Perintah berikut membutuhkan semua kunci argumen untuk menjadi bagian dari simpul Redis yang sama:
SORT .RPOP , LPUSH .SDIFF , SDIFFSTORE , SINTER , SINTERSTORE , SMOVE , SUNION , SUNIONSTORE .ZINTERSTORE , ZUNIONSTORE .PFCOUNTE , PFMERGE . Perintah -perintah berikut tidak tersedia, seperti KEYS , kami tidak dapat mencari kunci di semua instance 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 SAVE SHUTDOWN , SLAVEOF , SYNC . Mit. Hak Cipta (C) 2016 Eleme Inc.
Lihat lisensi untuk detailnya.