


Apakah empat masalah utama yang perlu diselesaikan oleh sistem cache yang diedarkan Java?
Sistem cache yang diedarkan adalah bahagian yang sangat diperlukan dalam seni bina tiga tinggi, yang sangat meningkatkan keselarasan dan kelajuan tindak balas keseluruhan projek, tetapi ia juga membawa masalah baharu yang perlu diselesaikan, iaitu: Penembusan cache , pecahan cache , salji cache dan isu konsistensi cache.
Penembusan cache
Masalah besar pertama ialah penembusan cache. Konsep ini lebih mudah difahami dan berkaitan dengan kadar hit. Jika kadar pukulan rendah, maka tekanan akan tertumpu pada lapisan kegigihan pangkalan data.
Jika kami dapat mencari data yang berkaitan, kami boleh cachenya. Tetapi masalahnya ialah permintaan ini tidak mencecah cache atau lapisan kegigihan Keadaan ini dipanggil penembusan cache.
Sebagai contoh, seperti yang ditunjukkan dalam gambar di atas, dalam sistem log masuk, terdapat serangan luaran, dan ia terus mencuba untuk log masuk menggunakan pengguna yang tidak wujud pengguna adalah maya dan tidak boleh Ia dicache dengan berkesan dan akan ditanya dalam pangkalan data setiap kali, yang akhirnya akan menyebabkan kegagalan prestasi perkhidmatan.
Terdapat banyak penyelesaian untuk masalah ini, mari kita perkenalkan secara ringkas.
Yang pertama ialah cache objek kosong. Bukankah lapisan kegigihan tidak dapat mencari data? Kemudian kita boleh menetapkan hasil permintaan ini kepada null dan memasukkannya ke dalam cache. Dengan menetapkan masa tamat tempoh yang munasabah, keselamatan pangkalan data bahagian belakang boleh dipastikan.
Mencache objek kosong akan menduduki ruang cache tambahan, dan juga akan ada tetingkap masa untuk ketidakkonsistenan data, jadi kaedah kedua ialah menggunakan penapis Bloom untuk memproses sejumlah besar nilai kunci biasa.
Kewujudan atau ketiadaan rekod ialah nilai Bool yang boleh disimpan menggunakan 1 bit sahaja. Penapis Bloom boleh memampatkan operasi ya dan tidak ini ke dalam struktur data. Sebagai contoh, data seperti nombor telefon bimbit dan jantina pengguna sangat sesuai untuk menggunakan penapis Bloom.
Pecahan cache
Pecahan cache juga merujuk kepada situasi di mana permintaan pengguna jatuh pada pangkalan data Dalam kebanyakan kes, ia disebabkan oleh tamat tempoh masa cache.
Kami biasanya menetapkan masa tamat tempoh untuk data dalam cache. Jika sejumlah besar data diperoleh daripada pangkalan data pada masa tertentu dan masa tamat tempoh yang sama ditetapkan, ia akan tamat tempoh pada masa yang sama, menyebabkan kerosakan cache.
Untuk data panas, kami boleh menetapkannya untuk tidak tamat tempoh; atau mengemas kini masa tamatnya apabila diakses item cache yang diimport ke dalam pangkalan data dalam kelompok juga harus cuba memperuntukkan masa tamat tempoh yang agak purata untuk mengelakkan Tidak sah pada; masa yang sama.
Cache avalanche
Perkataan avalanche nampak menakutkan, tetapi keadaan sebenar memang lebih serius. Caching digunakan untuk mempercepatkan sistem, dan pangkalan data bahagian belakang hanyalah sandaran data, bukan alternatif ketersediaan tinggi.
Apabila sistem cache gagal, trafik akan dipindahkan serta-merta ke pangkalan data bahagian belakang. Tidak lama kemudian, pangkalan data akan ditenggelami oleh trafik yang padat dan menutup talian Kegagalan perkhidmatan yang melata ini boleh dipanggil dengan jelas.
Pembinaan cache dengan ketersediaan tinggi adalah sangat penting. Redis menyediakan mod induk-hamba dan kluster Mod kluster mudah digunakan, dan setiap serpihan juga boleh bertindak sebagai hamba induk secara bebas, memastikan ketersediaan yang sangat tinggi.
Selain itu, kami mempunyai penilaian umum tentang kesesakan prestasi pangkalan data. Jika sistem cache ranap, anda boleh menggunakan komponen pengehad semasa untuk memintas permintaan yang mengalir ke pangkalan data.
Ketekalan cache
Selepas komponen cache diperkenalkan, satu lagi masalah sukar ialah ketekalan cache.
Mari kita lihat dahulu bagaimana masalah itu berlaku. Untuk item cache, terdapat empat operasi yang biasa digunakan: tulis, kemas kini, baca dan padam.
Penulisan: Cache dan pangkalan data adalah dua komponen berbeza Selagi penulisan berganda terlibat, terdapat kemungkinan hanya satu daripada penulisan akan berjaya, menyebabkan data tidak konsisten.
Kemas kini: Situasi kemas kini adalah serupa, dua komponen berbeza perlu dikemas kini.
Baca: Baca untuk memastikan bahawa maklumat yang dibaca daripada cache adalah yang terkini dan konsisten dengan maklumat dalam pangkalan data.
Padam: Apabila memadam rekod pangkalan data, bagaimana untuk memadam data dalam cache?
Kerana logik perniagaan agak kompleks dalam kebanyakan kes. Operasi kemas kini sangat mahal Contohnya, baki pengguna ialah nombor yang dikira dengan mengira satu siri aset. Jika aset berkaitan ini perlu memuat semula cache setiap kali ia ditukar, struktur kod akan menjadi sangat mengelirukan dan mustahil untuk dikekalkan.
Saya mengesyorkan menggunakan kaedah ketekalan cache yang dicetuskan Menggunakan kaedah pemuatan malas boleh menjadikan penyegerakan cache sangat mudah:
Apabila membaca cache Pada masa itu, jika ada. tiada data yang berkaitan dalam cache, logik perniagaan yang berkaitan dilaksanakan, data cache dibina dan disimpan dalam sistem cache;
Apabila sumber yang berkaitan dengan item cache berubah, item cache yang sepadan terlebih dahulu dipadamkan, kemudian sumber tersebut dikemas kini dalam pangkalan data, dan akhirnya item cache yang sepadan dipadamkan.
Selain model pengaturcaraan mudah, operasi ini mempunyai manfaat yang jelas. Saya hanya memuatkan cache ini ke dalam sistem cache apabila saya menggunakannya. Jika sumber dicipta dan dikemas kini setiap kali pengubahsuaian dibuat, akan terdapat banyak data sejuk dalam sistem cache. Ini sebenarnya melaksanakan Corak Cache-Aside, yang memuatkan data daripada storan data ke dalam cache atas permintaan Kesan terbesar ialah meningkatkan prestasi dan mengurangkan pertanyaan yang tidak perlu.
Tetapi masih ada masalah dengan ini. Senario yang diperkenalkan seterusnya juga merupakan soalan yang sering ditanya dalam temu bual.
Tindakan kemas kini pangkalan data dan tindakan pemadaman cache yang kami nyatakan di atas jelas sekali bukan dalam transaksi yang sama. Ia boleh menyebabkan kandungan pangkalan data dan kandungan dalam cache menjadi tidak konsisten semasa proses kemas kini.
Dalam temu bual, selagi anda menunjukkan soalan ini, penemuduga akan memberikan ibu jari ke atas.
Anda boleh menggunakan kunci teragih untuk menyelesaikan masalah ini Anda boleh menggunakan kunci untuk mengasingkan operasi pangkalan data dan operasi cache daripada operasi baca cache yang lain. Secara umumnya, operasi baca tidak perlu dikunci Apabila ia menemui kunci, ia akan mencuba semula dan menunggu sehingga tamat.
Atas ialah kandungan terperinci Apakah empat masalah utama yang perlu diselesaikan oleh sistem cache yang diedarkan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4
