Dengan pembangunan aplikasi web, semakin banyak perhatian beralih kepada cara meningkatkan prestasi aplikasi. Peranan caching adalah untuk mengimbangi trafik yang tinggi dan beban sibuk serta meningkatkan prestasi dan kebolehskalaan aplikasi web. Dalam persekitaran yang diedarkan, cara melaksanakan caching ketersediaan tinggi telah menjadi teknologi penting.
Artikel ini akan memperkenalkan cara menggunakan beberapa alatan dan rangka kerja yang disediakan oleh go-zero untuk melaksanakan cache teragih ketersediaan tinggi, dan membincangkan secara ringkas kelebihan dan had go-zero dalam aplikasi praktikal.
1. Apa itu go-zero?
go-zero ialah rangka kerja Web pantas dan rangka kerja RPC berdasarkan bahasa golang, menekankan kemudahan penggunaan, prestasi tinggi dan kebolehskalaan. Rangka kerja ini digunakan secara meluas dalam aplikasi, mempunyai mekanisme penghalaan dan perisian tengah yang cekap, dan menyediakan dokumentasi API automatik dan penjanaan kod.
go-zero mengandungi banyak alat dan modul yang berkuasa, seperti caching, akses pangkalan data, pengelogan, penjadualan tugas dan kunci yang diedarkan, dsb.
2. Modul cache teragih Go-zero
1 Pengenalan
go-zero menyediakan pelbagai jenis penyelesaian cache yang diedarkan, seperti master-slave dan sentinel , cluster, berdiri sendiri, dsb. Penyelesaian caching ini boleh meningkatkan kelajuan capaian data dalam aplikasi dan mengurangkan bilangan capaian kepada storan bahagian belakang.
2. Gunakan
2.1. Mod master-slave
Mod master-slave ialah skema caching yang paling biasa digunakan dan biasanya digunakan dalam aplikasi bersaiz kecil dan sederhana sistem atau peringkat ujian. Melaksanakan mod ini memerlukan penggunaan komponen MicroCache go-zero, seperti yang ditunjukkan di bawah:
var mc = cache.NewMicroCache("redis://localhost:6379", cache.MicroConfig{ Mode: cache.CacheModePair, PrimaryCache: cache.RedisNode{}, SecondaryCache: cache.RedisNode{}, }) func main() { mc.Set("username", "lwy", 10) value, _ := mc.Get("username") fmt.Println(value) }
Dalam komponen MicroCache, atribut Mod digunakan untuk mengenal pasti mod caching. CacheModePair menunjukkan penggunaan mod master-slave, manakala atribut PrimaryCache dan SecondaryCache masing-masing menunjukkan cache utama dan cache hamba. Dalam penggunaan sebenar, berbilang pasangan cache tuan-hamba boleh dikonfigurasikan mengikut keperluan.
2.2. Mod Sentinel
Mod Sentinel lebih dipercayai dan berkuasa daripada mod master-slave dan sering digunakan dalam persekitaran pengeluaran berskala besar. Dalam mod sentri, go-zero menggunakan modul Redis Sentinel untuk mencapai ketersediaan cache yang tinggi.
Untuk cara menggunakan modul Redis Sentinel, anda boleh merujuk kepada kod berikut:
var ( sentinel = cache.SentinelAddresses{":26379", ":26380", ":26381"} pool = cache.NewRedisSentinelPool(sentinel, "mymaster") ) func main() { value := cache.MustGetRedisClient(pool).Do("GET", "username") fmt.Println(value) }
Dalam kod di atas, pool digunakan untuk mewakili pool dengan nod Redis Sentinel. Jika nod induk gagal, Sentinel akan secara automatik mempromosikan nod hamba kepada nod induk untuk mencapai ketersediaan dan daya tahan yang tinggi.
2.3. Mod Kluster
Mod Kluster ialah mod biasa bagi cache yang diedarkan.
go-zero menyediakan penyelesaian caching mod kluster yang boleh melaksanakan kluster cache berdasarkan beberapa sistem storan nilai kunci yang popular, seperti ElasticSearch, Kafka dan Cassandra. Berikut ialah contoh kod untuk menggunakan ElasticSearch sebagai gugusan cache:
var ( esCache = cache.NewBulkCache("localhost:9200") ) func main() { data := []cache.KV{ {"username", "cyb"}, {"password", "123456"}, } esCache.SetBulk(data) value, _ := esCache.Get("username") fmt.Println(value) }
Dalam kod contoh di atas, NewBulkCache digunakan untuk mencipta contoh cache ElasticSearch. Jika anda perlu menambah atau mengubah suai data, anda boleh menggunakan kaedah SetBulk. Kaedah Dapatkan digunakan untuk mendapatkan data daripada cache ElasticSearch.
2.4. Mod bersendirian
Dalam beberapa projek kecil atau kes ujian, anda boleh terus menggunakan modul MemoryCache terbina dalam go-zero untuk melaksanakan caching bersendirian.
MemoryCache ialah cache KV berasaskan memori yang mudah dan mudah digunakan, seperti yang ditunjukkan di bawah:
var cacheStore = cache.NewMemoryCache() func main() { cacheStore.Set("username", "ljy", 10) value, _ := cacheStore.Get("username") fmt.Println(value) }
3 Kelebihan dan had cache go-zero
Kelebihan :
1. Kecekapan
Menggunakan rangka kerja caching go-zero, anda boleh mendapatkan kelajuan membaca dan menulis data serta masa tindak balas yang baik.
2. Kebolehskalaan
rangka kerja caching go-zero boleh diperluaskan dengan mudah kepada persekitaran teragih dan menyokong pelbagai penyelesaian caching teragih yang biasa digunakan.
3. Kemudahan penggunaan
go-zero menyepadukan berbilang jenis modul caching dan pembangun boleh memilih penyelesaian caching yang berbeza mengikut keperluan yang berbeza. Selain itu, ia juga menyediakan banyak API caching yang biasa digunakan dan menyokong dokumentasi API automatik dan penjanaan kod.
Penghadan:
1. Modul caching go-zero tidak mempunyai sokongan lengkap untuk senario caching yang kompleks.
2. Walaupun modul cache go-zero menyediakan pelbagai jenis penyelesaian cache yang diedarkan, masih terdapat jurang berbanding dengan beberapa sistem cache arus perdana (seperti Redis dan Memcached).
3. Kesimpulan dan ringkasan
Artikel ini memperkenalkan cara menggunakan rangka kerja caching go-zero untuk melaksanakan cache teragih dengan ketersediaan tinggi. rangka kerja caching go-zero menyediakan pelbagai jenis penyelesaian caching yang diedarkan, yang boleh melaksanakan kluster cache, mod sentinel, mod tuan-hamba dan mod bersendirian dengan mudah. Walaupun modul caching go-zero tidak mempunyai sokongan lengkap untuk senario caching yang kompleks, ia masih boleh memenuhi keperluan kebanyakan senario aplikasi.
Dalam aplikasi sebenar, penyelesaian caching go-zero yang berbeza boleh dipilih dan digunakan dalam kombinasi mengikut situasi sebenar. Di samping itu, sistem edaran yang lebih cekap, stabil, berskala dan mudah diselenggara boleh dicapai dengan menggabungkan modul dan alatan lain yang disediakan oleh go-zero.
Atas ialah kandungan terperinci Menggunakan go-zero untuk melaksanakan cache teragih dengan ketersediaan tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!