Redis ialah pangkalan data Nilai Kunci jenis log sumber terbuka yang ditulis dalam bahasa ANSI C, menyokong rangkaian, boleh berasaskan memori dan berterusan serta menyediakan API dalam berbilang bahasa.
Kini, data perniagaan Internet berkembang pada kadar yang lebih pantas, dan jenis data menjadi semakin banyak, yang mengemukakan keperluan yang lebih tinggi untuk kelajuan dan keupayaan pemprosesan data. Redis ialah pangkalan data bukan perkaitan dalam ingatan sumber terbuka yang membawa pengalaman yang mengganggu kepada pembangun. Direka dari awal hingga akhir dengan mengambil kira prestasi tinggi, Redis ialah pangkalan data NoSQL terpantas yang tersedia hari ini.
Sambil mempertimbangkan prestasi tinggi, ketersediaan tinggi juga merupakan pertimbangan penting. Internet menyediakan perkhidmatan tanpa gangguan 7×24 dan Failover pada kelajuan terpantas semasa kegagalan, yang boleh membawa kerugian minimum kepada perusahaan.
Jadi, apakah seni bina ketersediaan tinggi dalam aplikasi praktikal? Apakah kebaikan dan keburukan antara seni bina? Bagaimana kita harus memilih? Apakah beberapa amalan terbaik?
Sebelum menerangkan penyelesaian ketersediaan tinggi Redis, mari kita lihat dahulu prinsip Redis Sentinel.
1 hingga 3 ialah mekanisme penemuan automatik:
4 ialah mekanisme pengesanan, 5 dan 6 ialah mekanisme failover, dan 7 ialah mekanisme konfigurasi kemas kini. [1]
Selepas menerangkan prinsip Redis Sentinel, mari terangkan Seni bina ketersediaan tinggi Redis yang biasa digunakan.
Berikut akan diterangkan satu persatu dengan gambar dan teks.
Gambar di atas adalah penyelesaian yang telah diaplikasikan dalam persekitaran dalam talian. Lapisan bawah ialah gugusan Redis Sentinel, yang bertindak sebagai ejen untuk induk dan hamba Redis Bahagian Web menyambung ke DNS intranet untuk menyediakan perkhidmatan. DNS Intranet diperuntukkan mengikut peraturan tertentu, seperti xxxx.redis.cache/queue.port.xxx.xxx Segmen pertama menunjukkan singkatan perniagaan, segmen kedua menunjukkan bahawa ini ialah nama domain intranet Redis dan. segmen ketiga Mewakili jenis Redis, cache mewakili cache, baris gilir mewakili baris gilir, segmen keempat mewakili port Redis, dan segmen kelima dan keenam mewakili nama domain utama intranet.
Apabila nod induk gagal, seperti kegagalan mesin, kegagalan nod Redis atau kebolehcapaian rangkaian, kelompok Sentinel akan memanggil skrip terkonfigurasi client-reconfig-script untuk mengubah suai nama domain intranet port yang sepadan. Nama domain intranet port yang sepadan menghala ke nod induk Redis baharu.
Kelebihan:
Keburukan:
Pelan ini sedikit berbeza daripada yang sebelumnya. Penyelesaian pertama menggunakan DNS intranet, dan penyelesaian kedua menggantikan DNS intranet dengan IP maya. Lapisan bawah ialah kelompok Redis Sentinel, yang bertindak sebagai ejen untuk tuan dan hamba Redis, dan bahagian Web menyediakan perkhidmatan melalui VIP. Apabila menggunakan Redis master-slave, anda perlu mengikat IP maya ke nod induk Redis semasa. Apabila nod induk gagal, seperti kegagalan mesin, kegagalan nod Redis atau kebolehcapaian rangkaian, gugusan Sentinel akan memanggil skrip yang dikonfigurasikan oleh client-reconfig-script untuk mengapungkan VIP ke nod induk baharu.
Kelebihan:
Keburukan:
Some businesses can only access Redis through the external network. Neither of the above two solutions are available, so this solution was derived. Web uses the client to connect to a certain port of a machine in one of the Redis Sentinel clusters, and then obtains the current master node through this port, and then connects to the real Redis master node to perform corresponding salesman operations. It is important to note that both the Redis Sentinel port and the Redis master node require open access. If the front-end business uses Java, JedisSentinelPool can be reused; if the front-end business uses PHP, secondary encapsulation can be done based on phpredis.
Advantages:
Disadvantages:
The bottom layer is the Redis Sentinel cluster, which acts as an agent for Redis master and slave, and the Web side provides services through VIP. When the master node fails, such as machine failure, Redis node failure, or network unreachability, switching between Redis is guaranteed by the internal mechanism of Redis Sentinel, and VIP switching is guaranteed by Keepalived.
Advantages:
Disadvantages:
This solution does not use Redis Sentinel. This solution uses native master-slave and Keepalived. VIP switching is guaranteed by Keepalived. Switching between Redis master-slave requires custom scripts.
Advantages:
Disadvantages:
From: http://intro2libsys.com/focused-redis-topics/day-one/intro-redis-cluster
Redis 3.0.0 was officially released on April 2, 2015, more than two years ago. Redis cluster adopts P2P mode and is non-centralized. Divide the key into 16384 slots, and each instance is responsible for a part of the slots. The client requests the corresponding data. If the instance slot does not have corresponding data, the instance will be forwarded to the corresponding instance. In addition, the Redis cluster synchronizes node information through the Gossip protocol.
Advantages:
Disadvantages:
From: http://engineering.bloomreach.com/the-evolution-of-fault-tolerant-redis-cluster
Multiple isomorphic Twemproxy (same configuration) works at the same time, accepts client requests, and forwards them to the corresponding Redis according to the hash algorithm.
Twemproxy solution is relatively mature. Our team has used this solution for a long time, but the effect is not very satisfactory. On the one hand, the positioning problem is more difficult, and on the other hand, its support for automatically eliminating nodes is not very friendly.
Advantages:
Disadvantages:
From: https://github.com/CodisLabs/codis
Codis is an open source product by Wandoujia and involves many components. Among them, ZooKeeper stores routing tables and proxy node metadata, and distributes Codis-Config commands; Codis-Config is an integrated management tool with a Web interface for use; Codis-Proxy is A stateless proxy compatible with the Redis protocol; Codis-Redis is a secondary development based on Redis 2.8 version, adding slot support to facilitate data migration.
Advantages:
Disadvantages:
The so-called best practices are practices that are most suitable for specific scenarios.
We mainly recommend the following plans:
The following are the best practices summarized during actual combat:
This event shared the necessity of Redis high availability, the Sentinel principle, the common architecture of Redis high availability and the best practices summarized in the actual combat process. I hope it will be helpful to readers. If you need follow-up communication, you can add me WeChat (Wentasy), or send an email to: dbarobinwen@gmail.com
Attached PPT download: https://github.com/dbarobin/slides
Video Playback: Best Practices for Redis High Availability Architecture
Thank you to Tingyun and Operation and Maintenance Gang for their careful organization, and thank you to everyone who came to participate in this event despite the heavy rain. This sharing was videotaped by the IT guru, and I would like to thank the IT guru for his technical support.
[1] jyzhou (2016-06-12). Redis replication, Sentinel construction and principle explanation. Retrieved from http://www.cnblogs.com/zhoujinyi/p/5570024.html.
Atas ialah kandungan terperinci Redis amalan ketersediaan tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!