Redis は、ANSI C 言語で書かれたオープンソースのログタイプの Key-Value データベースで、ネットワークをサポートし、メモリベースで永続化でき、複数の言語で API を提供します。
現在、インターネット ビジネス データはより速い速度で増加しており、データの種類はますます豊富になっており、データ処理の速度と機能に対する要求が高まっています。 Redis は、開発者に破壊的なエクスペリエンスをもたらすオープンソースのインメモリ非リレーショナル データベースです。 Redis は、最初から最後まで高いパフォーマンスを念頭に置いて設計されており、現在利用できる最速の NoSQL データベースです。
高パフォーマンスを考慮する一方で、高可用性も重要な考慮事項です。インターネットは、24 時間 365 日中断のないサービスと、障害発生時の最速のフェールオーバーを提供するため、企業にもたらす損失は最小限に抑えられます。
それでは、実際のアプリケーションにおける高可用性アーキテクチャとは何でしょうか?それぞれのアーキテクチャの長所と短所は何ですか?どうやって選べばいいのでしょうか?ベストプラクティスにはどのようなものがありますか?
Redis の高可用性ソリューションを説明する前に、まず Redis Sentinel の原則 を見てみましょう。
1 ~ 3 は自動検出メカニズムです:
4 は検出メカニズム、5 と 6 はフェイルオーバー メカニズム、7 は更新構成メカニズムです。 [1]
Redis Sentinel の原理を説明した後、一般的に使用される Redis 高可用性アーキテクチャ について説明しましょう。
以下、写真と文章で一つ一つ解説していきます。
上の写真は、オンライン環境に適用されたソリューションです。最下層は Redis Sentinel クラスターで、Redis マスターとスレーブのエージェントとして機能します。Web 側はイントラネット DNS に接続してサービスを提供します。イントラネット DNS は、xxxx.redis.cache/queue.port.xxx.xxx などの特定のルールに従って割り当てられます。最初のセグメントはビジネスの略称を示し、2 番目のセグメントはこれが Redis イントラネット ドメイン名であることを示します。 3 番目のセグメントは Redis タイプを表し、cache はキャッシュを表し、queue はキューを表します。4 番目のセグメントは Redis ポートを表し、5 番目と 6 番目のセグメントはイントラネットのメイン ドメイン名を表します。
マシンの障害、Redis ノードの障害、ネットワークの到達不能など、マスター ノードに障害が発生すると、Sentinel クラスターは client-reconfig-script で構成されたスクリプトを呼び出して、対応するポートのイントラネット ドメイン名を変更します。対応するポートのイントラネット ドメイン名は、新しい Redis マスター ノードを指します。
利点:
短所:
このプランは以前のプランとは少し異なります。最初のソリューションはイントラネット DNS を使用し、2 番目のソリューションはイントラネット DNS を仮想 IP に置き換えます。最下層は Redis Sentinel クラスターで、Redis マスターとスレーブのエージェントとして機能し、Web 側は VIP を通じてサービスを提供します。 Redis マスター/スレーブをデプロイする場合、仮想 IP を現在の Redis マスター ノードにバインドする必要があります。マシンの障害、Redis ノードの障害、ネットワーク到達不能など、マスター ノードに障害が発生すると、Sentinel クラスターは
client-reconfig-script で構成されたスクリプトを呼び出して、VIP を新しいマスター ノードにフローティングします。
利点:
Sesetengah perniagaan hanya boleh mengakses Redis melalui rangkaian luaran kedua-dua penyelesaian di atas tidak tersedia, jadi penyelesaian ini diperoleh. Web menggunakan klien untuk menyambung ke port tertentu mesin dalam salah satu gugusan Redis Sentinel, dan kemudian mendapatkan nod induk semasa melalui port ini, dan kemudian menyambung ke nod induk Redis sebenar untuk melaksanakan operasi jurujual yang sepadan. Adalah penting untuk ambil perhatian bahawa kedua-dua port Redis Sentinel dan nod induk Redis memerlukan akses terbuka. Jika perniagaan front-end menggunakan Java, JedisSentinelPool boleh digunakan semula jika perniagaan front-end menggunakan PHP, enkapsulasi sekunder boleh dilakukan berdasarkan phpredis.
Kelebihan:
Keburukan:
Lapisan bawah ialah kelompok Redis Sentinel, yang bertindak sebagai ejen untuk tuan dan hamba Redis, dan bahagian Web menyediakan perkhidmatan melalui VIP. Apabila nod induk gagal, seperti kegagalan mesin, kegagalan nod Redis atau rangkaian tidak dapat dicapai, pertukaran antara Redis dijamin oleh mekanisme dalaman Redis Sentinel dan penukaran VIP dijamin oleh Keepalived.
Kelebihan:
Keburukan:
Penyelesaian ini tidak menggunakan Redis Sentinel. Penyelesaian ini menggunakan tuan-hamba asli dan Pensuisan VIP dijamin oleh Keepalived Pertukaran antara hamba tuan-Redis memerlukan skrip tersuai.
Kelebihan:
Keburukan:
Daripada: http://intro2libsys.com/focused-redis-topics/day-one/intro-redis-cluster
Redis 3.0.0 telah dikeluarkan secara rasmi pada 2 April 2015, lebih daripada dua tahun lalu. Kelompok Redis menggunakan mod P2P dan tidak berpusat. Bahagikan kunci kepada 16384 slot, dan setiap contoh bertanggungjawab untuk sebahagian daripada slot. Klien meminta data yang sepadan Jika slot contoh tidak mempunyai data yang sepadan, tika akan dimajukan ke tika yang sepadan. Selain itu, kelompok Redis menyegerakkan maklumat nod melalui protokol Gossip.
Kelebihan:
Keburukan:
Daripada: http://engineering.bloomreach.com/the-evolution-of-fault-tolerant-redis-cluster
Berbilang Twemproxy isomorfik (konfigurasi yang sama) berfungsi pada masa yang sama, menerima permintaan pelanggan dan memajukannya ke Redis yang sepadan mengikut algoritma cincang.
Penyelesaian Twemproxy agak matang Pasukan kami telah menggunakan penyelesaian ini untuk masa yang lama, tetapi kesannya tidak begitu memuaskan. Di satu pihak, masalah kedudukan lebih sukar, dan sebaliknya, sokongannya untuk menghapuskan nod secara automatik tidak begitu mesra.
Kelebihan:
Keburukan:
Daripada: https://github.com/CodisLabs/codis
Codis ialah produk sumber terbuka oleh Wandoujia dan melibatkan banyak komponen Antaranya, ZooKeeper menyimpan jadual penghalaan dan metadata nod proksi, dan mengedarkan perintah Codis-Config ialah alat pengurusan bersepadu dengan antara muka Web untuk digunakan; Proksi ialah Proksi tanpa negara yang serasi dengan protokol Redis; Codis-Redis ialah pembangunan sekunder berdasarkan versi Redis 2.8, menambah sokongan slot untuk memudahkan pemindahan data.
Kelebihan:
Keburukan:
Apa yang dipanggil amalan terbaik ialah amalan yang paling sesuai untuk senario tertentu.
Kami terutamanya mengesyorkan pelan berikut:
Berikut adalah amalan terbaik yang diringkaskan semasa pertempuran sebenar:
), atau hantar e-mel ke: dbarobinwen@gmail.com Muat turun PPT dilampirkan: https://github.com/dbarobin/slides
Main Balik Video: Amalan Terbaik untuk Seni Bina Ketersediaan Tinggi Redis
0×06 Terima kasih[1] jyzhou (2016-06-12).
以上がRedis の高可用性の実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。