Rumah > Artikel > pembangunan bahagian belakang > Penyelesaian pemisahan baca dan tulis Golang
Kata Pengantar
Dalam seni bina pembangunan Web tradisional, lapisan data dan lapisan aplikasi biasanya digabungkan bersama. Masalah dengan pendekatan seni bina ini ialah pembangun juga bertanggungjawab untuk logik penyimpanan data semasa menulis aplikasi. Seni bina yang berganding rapat ini akan menyebabkan masalah dalam pembangunan dan penyelenggaraan. Dalam kes ini, seni bina pemisahan baca-tulis telah wujud.
Tujuan seni bina pemisahan baca-tulis adalah untuk memisahkan bacaan dan penulisan, dan meletakkan operasi baca dan tulis pada pelayan pangkalan data yang berbeza, supaya beban operasi baca dan tulis boleh dikendalikan secara berasingan, dengan itu meningkatkan prestasi sistem dan kebolehskalaan.
Artikel ini akan memperkenalkan penyelesaian penggunaan bahasa Go untuk mencapai pemisahan membaca dan menulis.
Pengenalan projek
Latar belakang projek
Dalam aplikasi web, kekerapan operasi baca jauh lebih tinggi daripada operasi tulis. Oleh itu, untuk meningkatkan prestasi operasi baca pangkalan data, kami boleh memproses operasi baca dan tulis secara berasingan. Operasi baca biasanya boleh dilakukan secara serentak, dan berbilang perpustakaan hamba boleh digunakan untuk mengendalikan permintaan serentak, dengan itu meningkatkan prestasi baca sistem.
Idea penyelesaian
Untuk mencapai pemisahan baca dan tulis, kita perlu menggunakan replikasi tuan-hamba. Dalam pendekatan ini, kami menggunakan perpustakaan induk untuk mengendalikan operasi tulis, dan kemudian menggunakan berbilang perpustakaan hamba untuk mengendalikan operasi baca. Data akan disegerakkan antara pangkalan data induk dan pangkalan data hamba, dengan itu memastikan ketekalan data.
Pada masa yang sama, untuk meningkatkan prestasi sistem, kami boleh menggunakan caching pada peringkat aplikasi untuk mengurangkan tekanan pada pangkalan data. Ini mengurangkan bilangan akses kepada pangkalan data, dengan itu meningkatkan prestasi sistem.
Pelaksanaan penyelesaian terperinci
Kami melaksanakan penyelesaian pemisahan baca-tulis yang mudah menggunakan bahasa Go, menggunakan MySQL sebagai pangkalan data dan Redis sebagai cache.
Dalam pelaksanaan ini, kami menggunakan satu perpustakaan induk dan dua perpustakaan hamba. Pustaka induk digunakan untuk mengendalikan operasi tulis, manakala perpustakaan hamba digunakan untuk mengendalikan operasi baca. Pada masa yang sama, kami menggunakan Redis sebagai cache untuk mengurangkan tekanan pada pangkalan data.
Aplikasi contoh ini adalah aplikasi blog yang mudah. Pengguna boleh menggunakan aplikasi ini untuk mencipta, mengedit dan memadam blog, serta melihat blog yang dibuat oleh pengguna lain. Dalam aplikasi ini, operasi baca mengendalikan kebanyakan permintaan, manakala operasi tulis kurang biasa.
Gunakan MySQL untuk melaksanakan replikasi master-slave
Pertama, kita perlu mengkonfigurasi replikasi master-slave pada MySQL. Di sini kami menggunakan dua pelayan MySQL, satu sebagai pangkalan data utama dan satu sebagai pangkalan data hamba.
Kita perlu membuat akaun Replikasi pada pangkalan data utama dan memberikannya kebenaran replikasi. Kemudian, kita perlu melakukan salinan penuh pada pangkalan data hamba untuk memastikan data dalam pangkalan data hamba dan pangkalan data induk adalah konsisten. Selepas itu, kita perlu menetapkan perpustakaan hamba sebagai perpustakaan hamba perpustakaan utama.
Dalam kod Go, kita boleh menggunakan tiga rentetan sambungan yang berbeza untuk menyambungkan kedua-dua pangkalan data ini.
Cache menggunakan Redis
Dalam aplikasi sampel kami, kami menggunakan Redis sebagai cache. Kami menggunakan perpustakaan klien Redis untuk menyambung ke pelayan Redis dan cache untuk menyimpan senarai blog terbaru.
Kami menulis pelaksanaan cache ringkas dalam kod Go, yang menggunakan Redis sebagai storan asas. Setiap kali kami perlu mendapatkan senarai blog, kami mula-mula cuba mendapatkan data daripada cache. Jika tiada data dalam cache, data diambil daripada pangkalan data dan kemudian ditambahkan pada cache.
Melaksanakan pemisahan baca-tulis replikasi tuan-hamba
Kini, kami telah melaksanakan replikasi tuan-hamba pada MySQL dan melaksanakan caching pada Redis. Kita boleh menggunakan kedua-dua infrastruktur ini untuk mencapai pemisahan baca dan tulis.
Untuk mencapai pemisahan baca dan tulis, kita perlu menulis beberapa kod dalam aplikasi untuk membezakan operasi baca dan operasi tulis. Kami kemudiannya boleh menghantar operasi baca ke perpustakaan hamba dan menulis operasi ke perpustakaan induk.
Kami boleh menggunakan sambungan berasingan untuk mengendalikan operasi tulis. Apabila kita perlu melakukan operasi tulis, kita boleh menggunakan sambungan pangkalan data utama untuk mencipta transaksi MySQL baharu untuk mengendalikan operasi tulis. Pada masa yang sama, untuk memastikan ketekalan data, kita perlu menyegerakkan data antara pangkalan data induk dan pangkalan data hamba.
Kemudian, kita boleh menggunakan berbilang sambungan hamba untuk mengendalikan operasi baca. Apabila kita perlu membaca data, kita boleh membacanya dari salah satu perpustakaan hamba. Memandangkan data antara perpustakaan hamba disegerakkan, kita boleh membaca data dari mana-mana perpustakaan hamba.
Nota
Ringkasan
Dalam artikel ini, kami memperkenalkan penyelesaian pemisahan membaca dan menulis yang dilaksanakan menggunakan bahasa Go. Kami mula-mula menggunakan MySQL untuk replikasi tuan-hamba, dan menggunakan Redis sebagai cache untuk meningkatkan prestasi sistem. Kemudian, kami menulis beberapa kod untuk menukar destinasi operasi baca dan operasi tulis, menghantar operasi baca ke perpustakaan hamba dan operasi tulis ke pustaka induk. Akhir sekali, kami juga menyediakan beberapa nota untuk membantu anda menggunakan pendekatan seni bina ini.
Seni bina pemisahan baca-tulis boleh meningkatkan prestasi dan kebolehskalaan sistem. Walau bagaimanapun, pendekatan seni bina ini memerlukan pembangun untuk mempunyai pemahaman yang lebih mendalam tentang sistem dan pangkalan data. Oleh itu, semasa fasa reka bentuk dan pembangunan, butiran seni bina dan reka bentuk perlu dipertimbangkan dengan teliti untuk mengelakkan isu prestasi dan kebolehskalaan akibat isu seni bina.
Atas ialah kandungan terperinci Penyelesaian pemisahan baca dan tulis Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!