Kaedah dan contoh aplikasi Redis melaksanakan penyelarasan teragih
Dalam sistem teragih, penyelarasan antara nod ialah isu utama. Penyelesaian tradisional biasanya menggunakan nod pusat untuk menyelaraskan nod lain, tetapi ini akan membawa masalah seperti titik kegagalan tunggal dan kesesakan prestasi. Dalam tahun-tahun kebelakangan ini, Redis, sebagai pangkalan data dalam memori berprestasi tinggi, telah digunakan secara meluas. Dalam Redis, struktur data dan set arahannya boleh digunakan untuk melaksanakan fungsi penyelarasan teragih, dengan itu mencapai sistem teragih yang sangat tersedia dan berprestasi tinggi. Artikel ini akan memperkenalkan kaedah dan contoh aplikasi Redis untuk mencapai penyelarasan teragih.
1. Struktur dan arahan data Redis
Redis menyokong pelbagai struktur data, termasuk rentetan (rentetan), senarai (senarai), set (set), set tertib (zset) dan Hash . Setiap struktur sepadan dengan satu set arahan, yang boleh menambah, memadam, bertanya, dsb. operasi pada struktur. Dalam penyelarasan teragih, kami biasanya menggunakan senarai dan set.
Senarai (senarai) ialah tatasusunan rentetan tersusun dalam Redis. Kita boleh menggunakan lpush, rpush, lpop, rpop dan arahan lain untuk menambah dan memadam elemen di kedua-dua hujung senarai. Fungsi seperti baris gilir tugas dan baris gilir mesej boleh dilaksanakan melalui senarai.
Sebagai contoh, kita boleh menambah tugasan pada senarai menggunakan:
LPUSH tasks "task1"
dan kemudian mengeluarkan tugasan itu daripada senarai menggunakan:
RPOP tasks
Set ialah koleksi rentetan tidak tertib dan tidak berulang dalam Redis. Kita boleh menggunakan perintah sadd, srem, smembers dan lain-lain untuk menambah dan memadam elemen pada koleksi, atau untuk bertanya sama ada koleksi mengandungi elemen.
Sebagai contoh, kita boleh menambah nod pada koleksi menggunakan arahan berikut:
SADD nodes "node1"
Kemudian tanya semua nod dalam koleksi menggunakan arahan berikut:
SMEMBERS nodes
Di atas ialah senarai dan koleksi Perintah yang biasa digunakan, arahan ini boleh membantu kami melaksanakan fungsi penyelarasan teragih.
2. Cara Redis melaksanakan penyelarasan teragih
Dengan struktur data dan arahan di atas, kami boleh menggunakan Redis untuk melaksanakan penyelarasan teragih. Kaedah menggunakan senarai dan set untuk mencapai penyelarasan teragih akan diperkenalkan di bawah.
Dalam sistem teragih, baris gilir tugas ialah senario biasa. Kita boleh menggunakan struktur senarai Redis untuk melaksanakan baris gilir tugas yang diedarkan.
Kita boleh menambah tugas pada baris gilir tugas menggunakan arahan berikut:
LPUSH tasks "task1"
Setiap nod kemudiannya boleh mengeluarkan tugas daripada baris gilir tugas menggunakan arahan berikut:
RPOP tasks
Jika baris gilir kosong, arahan RPOP mengembalikan sifar Pada masa ini, nod boleh menunggu untuk tempoh masa dan mengeluarkan tugas semula. Jika tugasan dalam baris gilir tugasan telah diperuntukkan, tugasan baharu boleh ditambah pada baris gilir mengikut keperluan.
Dengan cara ini, kita boleh mencapai penjadualan tugas teragih, dan setiap nod boleh mendapatkan tugas secara bebas daripada baris gilir tugas dan melaksanakannya.
Dalam sistem teragih, koordinasi diperlukan antara nod. Kita boleh menggunakan struktur koleksi Redis untuk melaksanakan pendaftaran dan penemuan nod.
Apabila setiap nod bermula, tambahkan maklumat nodnya sendiri pada koleksi melalui arahan berikut:
SADD nodes "Node-01"
Kemudian nod lain boleh menanyakan semua nod dalam koleksi melalui arahan berikut:
SMEMBERS nodes
Selepas mendapat senarai nod, anda boleh memilih nod lain untuk komunikasi, penyelarasan dan operasi lain mengikut keperluan.
Apabila nod keluar secara tidak normal, anda boleh menggunakan arahan berikut untuk mengeluarkannya daripada set:
SREM nodes "Node-01"
Dengan cara ini, kita boleh mencapai penyelarasan antara nod teragih, setiap Nod boleh menambah dan memadamkan maklumat nod mereka sendiri pada koleksi.
3. Contoh aplikasi koordinasi yang diedarkan Redis
Kaedah di atas boleh digunakan dalam banyak senario. Contoh mudah akan diperkenalkan di bawah: melaksanakan penjadualan tugas teragih.
Andaikan kita perlu menjalankan beberapa tugasan dan mengagihkannya untuk dijalankan pada berbilang mesin. Kami boleh menyimpan senarai tugas dalam Redis dan menjalankan penjadual pada setiap mesin. Penjadual boleh bergilir-gilir mengambil tugas daripada Redis dan melaksanakannya pada mesin ini.
Untuk mengelakkan tugasan berulang, kami boleh menggunakan koleksi untuk menyimpan senarai tugasan yang telah dilakukan. Apabila setiap tugasan selesai, setiap nod boleh menambah tugasan yang berjaya dilaksanakan pada koleksi Pada kali seterusnya penjadual mengeluarkan tugasan, ia boleh menentukan dahulu sama ada tugasan itu telah dilaksanakan.
Kod pseudo penjadual tugas adalah seperti berikut:
while True: task = rpop("tasks") if task is None: sleep(1) continue if sismember("finished_tasks", task): continue run_task(task) sadd("finished_tasks", task)
Dalam kod di atas, rpop digunakan untuk mengeluarkan tugas daripada baris gilir tugas, dan jika baris gilir kosong, tunggu dan teruskan gelung; sismember digunakan untuk menilai Sama ada tugasan telah dilaksanakan, jika ya, langkau dan teruskan gelung run_task digunakan untuk melaksanakan tugasan, dan selepas pelaksanaan berjaya, tugas itu ditambahkan pada koleksi tugasan yang telah selesai.
Melalui kod di atas, kami boleh melaksanakan penjadualan tugas teragih pada berbilang mesin, dan setiap nod secara bebas memperoleh tugas daripada baris gilir tugas dan melaksanakannya.
4
Dalam sistem teragih, penyelarasan antara nod adalah isu utama. Sebagai pangkalan data dalam memori berprestasi tinggi, Redis boleh merealisasikan fungsi seperti penjadualan tugas teragih, pendaftaran dan penemuan antara nod melalui struktur data dan arahannya. Artikel ini memperkenalkan senarai dan struktur koleksi Redis, dan menggunakannya untuk melaksanakan contoh penjadualan tugas teragih dan pendaftaran nod masing-masing. Kaedah ini boleh digunakan dalam banyak senario untuk membantu kami mencapai sistem teragih yang sangat tersedia dan berprestasi tinggi.
Atas ialah kandungan terperinci Kaedah Redis dan contoh aplikasi untuk merealisasikan penyelarasan teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!