Multi-layer Caching di API Gateway Mengatasi Tantangan Lalu Lintas Tinggi
January 26, 2024
Seiring dengan terus berkembangnya penggunaan API dalam pengembangan modern, permintaan akan gateway API yang efisien dan andal juga semakin meningkat. Gateway API berfungsi sebagai titik masuk tunggal untuk semua permintaan API yang masuk, memungkinkan mereka untuk dikelola dan didistribusikan secara efisien ke berbagai layanan mikro. Meskipun gateway API menawarkan banyak manfaat, ia mungkin menghadapi tantangan ketika berhadapan dengan skenario lalu lintas tinggi.
Mekanisme Caching APISIX
Diagram alir berikut mengilustrasikan mekanisme caching yang efisien yang digunakan oleh APISIX untuk meminimalkan latensi dan meningkatkan kinerja. Dengan melakukan caching respons di berbagai tingkatan, APISIX dapat secara efektif mengurangi beban pada server upstream dan memberikan pengalaman yang lebih responsif bagi klien.
Client <-- HTTP Request --> APISIX Worker (Check LRU Cache in process level) (No cache hit) (Check Shared DICT Cache in data plane level) (Lock not acquired) (Acquire lock, check cache) (Cache hit) (Return cached response, release locks) (Cache miss) (Query Redis) (Acquire Mutex) (Query Redis) (Cache miss) (Retrieve response from upstream) (Cache response in shared DICT cache) (Return response to client) (Cache hit) (Copy response to shared DICT cache) (Return cached response to client) (Release Redis Mutex) (Release lock) (Cache hit) (Return cached response)
LRU: Caching Lapisan Pertama di Tingkat Worker Tunggal APISIX
Cache LRU (Least Recently Used) di tingkat worker APISIX adalah komponen penting yang bertanggung jawab untuk caching data yang sering diakses dalam setiap proses kerja. Sistem cache ini menggunakan algoritma eviction LRU, menyimpan dan mengambil data secara efisien sambil memprioritaskan penanganan data yang paling jarang digunakan. Dengan melakukan caching data yang sering diakses di memori, APISIX secara signifikan mengurangi latensi dan biaya saat mengkueri sumber data eksternal, seperti aturan routing atau token autentikasi, sehingga meningkatkan kecepatan respons sistem.
Melalui mekanisme caching yang cerdas ini, APISIX secara efisien memanfaatkan sumber daya sistem saat menangani volume permintaan yang besar, sehingga meningkatkan kinerja dan stabilitas sistem secara keseluruhan. APISIX, dengan cache LRU yang canggih, memberikan solusi gateway API yang andal dan efisien bagi pengembang, memfasilitasi komunikasi yang lancar dengan layanan eksternal.
Shared Dict: Caching Lapisan Kedua di Tingkat Node APISIX
Cache kamus memori bersama (shared dict) antara semua proses kerja dalam satu node APISIX. Ini berfungsi sebagai cache terpusat untuk data yang sering diakses, termasuk data respons API atau header respons. Beberapa proses worker dapat secara bersamaan mengakses dan memperbarui cache ini untuk memastikan konsistensi data dan menghindari duplikasi data yang tidak perlu.
Cache kamus memori bersama ini menunjukkan kinerja yang luar biasa, memanfaatkan teknologi canggih seperti penguncian memori dan struktur data yang efisien. Hal ini memungkinkannya mencapai tujuan meminimalkan persaingan dan memaksimalkan throughput. Melalui penguncian memori, cache ini secara efektif mengontrol akses bersamaan, memastikan konsistensi selama operasi baca dan tulis simultan di berbagai proses kerja. Desain struktur data yang efisien memungkinkan cache kamus memori bersama untuk mengeksekusi operasi pengambilan dan pembaruan data lebih cepat, meningkatkan kinerja secara keseluruhan.
Pengenalan cache kamus memori bersama memberikan performa dan skalabilitas yang lebih besar pada data plane APISIX, memberikan alat yang andal bagi pengembang untuk unggul dalam menangani data dan permintaan skala besar.
Mekanisme Caching Multi-Lapisan APISIX
Diagram di bawah ini mengilustrasikan mekanisme caching multi-lapisan APISIX, mirip dengan prinsip corong. Secara khusus, cache L1 menggunakan cache LRU dalam worker, cache L2 adalah shared dict di antara beberapa worker, dan cache L3 adalah database Redis di luar gateway API.
Berikut adalah contoh untuk menjelaskan: ketika 10.000 permintaan pengguna mengkueri data melalui APISIX, dengan asumsi tingkat hit cache L1 adalah 90%, maka 9000 permintaan akan langsung dikembalikan. Sisa 1000 permintaan kemudian akan mengkueri cache L2. Dengan asumsi tingkat hit cache L2 juga 90%, maka 100 permintaan akan melanjutkan untuk mengkueri cache L3, Redis. Sebelum 100 permintaan ini mengkueri Redis, mereka akan terlebih dahulu mengkueri mutex (mutual exclusion) untuk memastikan hanya satu permintaan yang mengkueri Redis pada satu waktu, mencegah efek Dogpile.

Kesimpulan
Dengan memanfaatkan kemampuan caching multi-lapisan, APISIX secara efisien menangani sebagian besar permintaan klien tanpa perlu sering mengkueri komponen penyimpanan data eksternal seperti Redis atau Postgres. Hal ini tidak hanya secara signifikan mengurangi latensi secara keseluruhan tetapi juga meningkatkan throughput gateway API, memberikan solusi yang efisien dan kuat bagi bisnis yang menyederhanakan komunikasi dengan layanan eksternal. Desain optimasi ini memastikan ketangguhan sistem, memungkinkan APISIX untuk secara fleksibel mengatasi skenario konkurensi tinggi dan menciptakan lingkungan pengembangan yang lebih andal dan berkinerja tinggi bagi para insinyur.