Alat Caching Sumber Terbuka Terbaik untuk Linux pada tahun 2023


Sistem dan aplikasi komputasi terdistribusi yang andal telah menjadi landasan bisnis terkemuka, terutama dalam mengotomatisasi dan mengelola proses bisnis yang sangat penting dan memberikan layanan kepada pelanggan.

Sebagai pengembang dan administrator sistem dari sistem dan aplikasi ini, Anda diharapkan untuk menyediakan semua jenis solusi teknologi informasi (TI) yang akan memastikan bahwa Anda memiliki sistem yang paling efisien.

Hal ini mencakup tugas-tugas seperti merancang, menguji, dan menerapkan strategi untuk kinerja sistem/aplikasi, keandalan, ketersediaan, dan skalabilitas, untuk memberikan tingkat layanan yang memuaskan kepada pengguna akhir.

Caching adalah salah satu dari sekian banyak teknik penyampaian aplikasi yang sangat mendasar namun efektif yang dapat Anda andalkan. Sebelum melangkah lebih jauh, mari kita lihat sekilas apa itu caching, di mana dan/atau bagaimana penerapannya, serta manfaatnya.

Apa itu Caching atau Caching Konten?

Caching (atau Caching Konten) adalah teknik yang banyak digunakan untuk menyimpan salinan data di lokasi penyimpanan sementara (juga dikenal sebagai cache) sehingga data dapat diakses dengan mudah dan cepat ketika diambil dari penyimpanan aslinya.

Data yang disimpan dalam cache dapat mencakup file atau fragmen file (seperti file HTML, skrip, gambar, dokumen, dll.), operasi atau catatan database, panggilan API, catatan DNS, dll, tergantung pada jenis dan tujuan cache.

Cache dapat berupa perangkat keras maupun perangkat lunak. Cache berbasis perangkat lunak (yang merupakan fokus artikel ini) dapat diimplementasikan pada berbagai lapisan tumpukan aplikasi.

Caching dapat diterapkan di sisi klien (atau pada lapisan presentasi aplikasi), misalnya, cache browser atau cache aplikasi (atau mode offline). Sebagian besar, jika tidak semua, browser modern dikirimkan dengan implementasi cache HTTP.

Anda mungkin pernah mendengar ungkapan populer “kosongkan cache ” saat mengakses aplikasi web untuk memungkinkan Anda melihat data atau konten terbaru di situs web atau aplikasi, alih-alih menggunakan salinan lama dari browser. konten yang disimpan secara lokal.

Contoh lain dari caching sisi klien adalah caching DNS yang terjadi pada tingkat sistem operasi (OS). Ini adalah penyimpanan sementara informasi tentang pencarian DNS sebelumnya oleh OS atau browser web.

Caching juga dapat diterapkan di tingkat jaringan, baik di LAN atau WAN melalui proxy. Contoh umum dari jenis caching ini terdapat di CDN (Jaringan Pengiriman Konten), yang merupakan jaringan server proxy web yang didistribusikan secara global.

Ketiga, Anda juga dapat menerapkan caching di server asal atau backend. Ada berbagai bentuk caching tingkat server, termasuk:

  • caching server web (untuk menyimpan gambar, dokumen, skrip, dan sebagainya).
  • caching aplikasi atau penghafalan (digunakan untuk membaca file dari disk, data dari layanan atau proses lain, atau meminta data dari API, dll.).
  • caching database (untuk menyediakan akses dalam memori ke data yang sering digunakan seperti baris database yang diminta, hasil kueri, dan operasi lainnya).

Perhatikan bahwa data cache dapat disimpan dalam sistem penyimpanan apa pun termasuk database, file, memori sistem, dan sebagainya, namun harus berupa media yang lebih cepat daripada sumber utama. Dalam hal ini, caching dalam memori adalah bentuk caching yang paling efektif dan umum digunakan.

Mengapa Menggunakan Caching?

Caching menawarkan banyak manfaat termasuk yang berikut:

  • Di tingkat database, ini meningkatkan kinerja baca hingga mikrodetik untuk data cache. Anda juga dapat menggunakan cache tulis kembali untuk meningkatkan kinerja penulisan, dimana data ditulis dalam memori dan kemudian ditulis ke disk atau penyimpanan utama pada interval tertentu. Namun aspek integritas datanya mungkin mempunyai implikasi yang berpotensi membawa bencana. Misalnya, ketika sistem mogok tepat sebelum data dimasukkan ke penyimpanan utama.
  • Pada tingkat aplikasi, cache dapat menyimpan data yang sering dibaca dalam proses aplikasi itu sendiri, sehingga mengurangi waktu pencarian data dari hitungan detik menjadi mikrodetik, terutama melalui jaringan.
  • Mempertimbangkan kinerja aplikasi dan server secara keseluruhan, caching membantu mengurangi beban server, latensi, dan bandwidth jaringan saat data cache disajikan ke klien, sehingga meningkatkan waktu respons dan kecepatan pengiriman ke klien.
  • Caching juga memungkinkan ketersediaan konten, terutama melalui CDN, dan banyak manfaat lainnya.

Dalam artikel ini, kami akan meninjau beberapa alat sumber terbuka (caching aplikasi/database dan caching server proxy) untuk implementasi sisi server cache di Linux.

1. Ulang

Redis (REmote DIctionary Server selengkapnya) adalah sistem komputasi dalam memori terdistribusi yang gratis dan bersumber terbuka, cepat, berkinerja tinggi, dan fleksibel yang dapat digunakan di sebagian besar, jika tidak semua, bahasa pemrograman.

Ini adalah penyimpanan struktur data dalam memori yang berfungsi sebagai mesin caching, database persisten pada disk dalam memori, dan perantara pesan. Meskipun dikembangkan dan diuji di Linux (platform yang direkomendasikan untuk penerapan) dan OS X, Redis juga berfungsi di sistem POSIX lain seperti *BSD, tanpa ketergantungan eksternal apa pun.

Redis mendukung berbagai struktur data seperti string, hash, daftar, kumpulan, kumpulan yang diurutkan, bitmap, aliran, dan banyak lagi. Hal ini memungkinkan pemrogram untuk menggunakan struktur data tertentu untuk memecahkan masalah tertentu. Ini mendukung operasi otomatis pada struktur datanya seperti menambahkan string, memasukkan elemen ke daftar, menambah nilai hash, menghitung persimpangan set, dan banyak lagi.

Fitur utamanya mencakup replikasi master-slave Redis (yang bersifat asinkron secara default), ketersediaan tinggi dan failover otomatis yang ditawarkan menggunakan Redis Sentinel, klaster Redis (Anda dapat menskalakan secara horizontal dengan menambahkan lebih banyak node klaster), dan partisi data (mendistribusikan data ke beberapa Redis contoh). Ia juga dilengkapi dukungan untuk transaksi, skrip Lua, serangkaian opsi persistensi, dan enkripsi komunikasi klien-server.

Menjadi database di dalam memori namun tetap ada di disk, Redis menawarkan performa terbaik saat berfungsi paling baik dengan kumpulan data di dalam memori. Namun, Anda dapat menggunakannya dengan database pada disk seperti MySQL, PostgreSQL, dan banyak lagi. Misalnya, Anda dapat mengambil data kecil yang sangat banyak menulis di Redis dan meninggalkan potongan data lainnya di database pada disk.

Redis mendukung keamanan dalam banyak cara: salah satunya dengan menggunakan fitur “mode terlindungi ” untuk mengamankan instance Redis agar tidak diakses dari jaringan eksternal. Ini juga mendukung otentikasi klien-server (di mana kata sandi dikonfigurasi di server dan disediakan di klien) dan TLS pada semua saluran komunikasi seperti koneksi klien, tautan replikasi, protokol bus Redis Cluster, dan banyak lagi.

Redis memiliki banyak kasus penggunaan yang mencakup cache database, cache halaman penuh, manajemen data sesi pengguna, penyimpanan respons API, sistem pesan Publikasikan/Berlangganan, antrean pesan, dan banyak lagi. Ini dapat diterapkan dalam permainan, aplikasi jejaring sosial, RSS feed, analisis data real-time, rekomendasi pengguna, dan sebagainya.

2. Memcache

Memcached adalah sistem caching objek memori terdistribusi yang gratis dan bersumber terbuka, sederhana namun kuat. Ini adalah penyimpanan nilai kunci dalam memori untuk potongan kecil data seperti hasil panggilan database, panggilan API, atau rendering halaman. Ini berjalan pada sistem operasi mirip Unix termasuk Linux dan OS X dan juga pada Microsoft Windows.

Sebagai alat pengembang, alat ini dimaksudkan untuk digunakan dalam meningkatkan kecepatan aplikasi web dinamis dengan menyimpan konten dalam cache (secara default, cache Yang Paling Sedikit Digunakan (LRU)) sehingga mengurangi pemuatan basis data pada disk – berfungsi sebagai memori jangka pendek untuk aplikasi. Ia menawarkan API untuk bahasa pemrograman paling populer.

Memcached mendukung string sebagai satu-satunya tipe data. Ia memiliki arsitektur klien-server, di mana separuh logika terjadi di sisi klien dan separuh lainnya di sisi server. Yang penting, klien memahami cara memilih server mana yang akan digunakan untuk menulis atau membaca, untuk suatu item. Selain itu, klien tahu betul apa yang harus dilakukan jika tidak dapat terhubung ke server.

Meskipun ini adalah sistem caching terdistribusi, sehingga mendukung pengelompokan, server Memcached terputus satu sama lain (yaitu mereka tidak menyadari satu sama lain). Artinya tidak ada dukungan replikasi seperti di Redis. Mereka juga memahami cara menyimpan dan mengambil item, serta mengatur kapan harus mengeluarkan, atau menggunakan kembali memori. Anda dapat menambah memori yang tersedia dengan menambahkan lebih banyak server.

Ini mendukung otentikasi dan enkripsi melalui TLS pada Memcached 1.5.13, tetapi fitur ini masih dalam tahap percobaan.

3. Apache Menyala

Apache Ignite, juga merupakan penyimpanan nilai kunci, cache, dan sistem database multi-model yang terdistribusi secara horizontal dan bersumber terbuka, dapat diskalakan secara horizontal, dan menyediakan API pemrosesan yang kuat untuk menghitung data terdistribusi. Ini juga merupakan jaringan data dalam memori yang dapat digunakan baik dalam memori atau dengan persistensi asli Ignite. Ini berjalan pada sistem mirip UNIX seperti Linux dan juga Windows.

Ini memiliki fitur penyimpanan multi-tingkat, dukungan SQL lengkap, dan transaksi ACID (Atomicity, Consistency, Isolation, Durability) (hanya didukung pada level API nilai kunci) di beberapa node cluster, pemrosesan yang berlokasi di satu lokasi, dan pembelajaran mesin. Ini mendukung integrasi otomatis dengan database pihak ketiga mana pun, termasuk RDBMS (seperti MySQL, PostgreSQL, Oracle Database, dan sebagainya) atau penyimpanan NoSQL.

Penting untuk dicatat bahwa meskipun Ignite berfungsi sebagai penyimpan data SQL, ini tidak sepenuhnya merupakan database SQL. Ini secara jelas menangani batasan dan indeks dibandingkan dengan database tradisional; ini mendukung indeks primer dan sekunder, tetapi hanya indeks primer yang digunakan untuk menerapkan keunikan. Selain itu, ia tidak mendukung batasan kunci asing.

Ignite juga mendukung keamanan dengan memungkinkan Anda mengaktifkan otentikasi di server dan memberikan kredensial pengguna kepada klien. Ada juga dukungan untuk komunikasi soket SSL untuk menyediakan koneksi aman di antara semua node Ignite.

Ignite memiliki banyak kasus penggunaan yang mencakup sistem caching, akselerasi beban kerja sistem, pemrosesan data real-time, dan analisis. Ini juga dapat digunakan sebagai platform yang berpusat pada grafik.

4. Server Basis Sofa

Couchbase Server juga merupakan database keterlibatan berorientasi dokumen NoSQL sumber terbuka, terdistribusi, yang menyimpan data sebagai item dalam format nilai kunci. Ia bekerja di Linux dan sistem operasi lain seperti Windows dan Mac OS X. Ia menggunakan bahasa kueri berorientasi dokumen yang kaya fitur yang disebut N1QL yang menyediakan layanan kueri dan pengindeksan yang kuat untuk mendukung operasi sub-milidetik pada data.

Fitur utamanya adalah penyimpanan nilai kunci yang cepat dengan cache terkelola, pengindeks yang dibuat khusus, mesin kueri yang kuat, arsitektur penskalaan (penskalaan multi-dimensi), data besar dan integrasi SQL, keamanan tumpukan penuh, dan ketersediaan tinggi.

Couchbase Server hadir dengan dukungan kluster beberapa instance asli, yang mana alat manajer kluster mengoordinasikan semua aktivitas node dan hanya menyediakan antarmuka seluruh kluster ke klien. Yang penting, Anda dapat menambah, menghapus, atau mengganti node sesuai kebutuhan, tanpa waktu henti. Ini juga mendukung replikasi data di seluruh node cluster, dan replikasi data selektif di seluruh pusat data.

Ini mengimplementasikan keamanan melalui TLS menggunakan port Server Couchbase khusus, mekanisme otentikasi yang berbeda (menggunakan kredensial atau sertifikat), kontrol akses berbasis peran (untuk memeriksa setiap pengguna yang diautentikasi untuk peran yang ditentukan sistem yang ditugaskan kepada mereka), audit, log, dan sesi .

Kasus penggunaannya mencakup antarmuka pemrograman terpadu, pencarian teks lengkap, pemrosesan kueri paralel, manajemen dokumen, pengindeksan, dan banyak lagi. Ini dirancang khusus untuk menyediakan manajemen data latensi rendah untuk aplikasi web interaktif, seluler, dan IoT berskala besar.

5. IMDG Hazelcast

Hazelcast IMDG (In-Memory Data Grid) adalah middleware jaringan data dalam memori bersumber terbuka, ringan, cepat, dan dapat diperluas, yang menyediakan komputasi In-Memory terdistribusi yang dapat diskalakan secara elastis. Hazelcast IMDG juga berjalan di Linux, Windows, Mac OS X, dan platform lain apa pun yang menginstal Java. Ini mendukung berbagai struktur data yang fleksibel dan berbahasa asli seperti Map, Set, List, MultiMap, RingBuffer, dan HyperLogLog.

Hazelcast bersifat peer-to-peer dan mendukung skalabilitas sederhana, penyiapan cluster (dengan opsi untuk mengumpulkan statistik, memantau melalui protokol JMX, dan mengelola cluster dengan utilitas yang berguna), struktur dan peristiwa data terdistribusi, pembagian data , dan transaksi. Ini juga mubazir karena menyimpan cadangan setiap entri data pada banyak anggota. Untuk menskalakan klaster Anda, cukup mulai instans lain, data dan cadangan akan seimbang secara otomatis dan merata.

Ini menyediakan kumpulan API yang berguna untuk mengakses CPU di cluster Anda untuk kecepatan pemrosesan maksimum. Ia juga menawarkan implementasi terdistribusi dari sejumlah besar antarmuka ramah pengembang dari Java seperti Map, Queue, ExecutorService, Lock, dan JCache.

Fitur keamanannya mencakup anggota cluster dan otentikasi klien serta pemeriksaan kontrol akses pada operasi klien melalui fitur keamanan berbasis JAAS. Hal ini juga memungkinkan untuk mencegat koneksi soket dan operasi jarak jauh yang dijalankan oleh klien, enkripsi komunikasi tingkat soket antara anggota cluster, dan mengaktifkan komunikasi soket SSL/TLS. Namun menurut dokumentasi resmi, sebagian besar fitur keamanan ini ditawarkan dalam versi Enterprise.

Kasus penggunaannya yang paling populer adalah caching dalam memori dan penyimpanan data yang didistribusikan. Tapi itu juga bisa digunakan untuk pengelompokan sesi web, penggantian NoSQL, pemrosesan paralel, pengiriman pesan yang mudah, dan banyak lagi.

6. Mcrouter

Mcrouter adalah router protokol Memcached sumber terbuka dan gratis untuk menskalakan penerapan Memcached, dikembangkan dan dikelola oleh Facebook. Ini menampilkan protokol Memcached ASCII, perutean fleksibel, dukungan multi-cluster, cache multi-level, pengumpulan koneksi, beberapa skema hashing, perutean awalan, kumpulan replikasi, bayangan lalu lintas produksi, konfigurasi ulang online, dan pemantauan kesehatan tujuan/failover otomatis.

Selain itu, ia mendukung pemanasan cache dingin, statistik kaya dan perintah debug, kualitas layanan aliran penghapusan yang andal, nilai besar, dan operasi siaran, dan dilengkapi dengan dukungan IPv6 dan SSL.

Ini digunakan di Facebook dan Instagram sebagai komponen inti infrastruktur cache, untuk menangani hampir 5 miliar permintaan per detik pada puncaknya.

7. Tembolok Pernis

Varnish Cache adalah akselerator aplikasi web sumber terbuka yang fleksibel, modern, dan multiguna yang berada di antara klien web dan server asal. Ini berjalan di semua platform Linux, FreeBSD, dan Solaris modern (khusus x86). Ini adalah mesin caching dan akselerator konten luar biasa yang dapat Anda gunakan di depan server web seperti NGINX, Apache, dan banyak lainnya, untuk mendengarkan pada port HTTP default untuk menerima dan meneruskan permintaan klien ke server web dan mengirimkan web respons server ke klien.

Saat bertindak sebagai perantara antara klien dan server asal, Varnish Cache menawarkan beberapa manfaat, elemennya adalah menyimpan konten web dalam memori untuk meringankan beban server web Anda dan meningkatkan kecepatan pengiriman ke klien.

Setelah menerima permintaan HTTP dari klien, ia meneruskannya ke server web backend. Setelah server web merespons, Varnish menyimpan konten dalam cache di memori dan mengirimkan respons ke klien. Saat klien meminta konten yang sama, Varnish akan menyajikannya dari respons aplikasi peningkat cache. Jika tidak dapat menyajikan konten dari cache, permintaan diteruskan ke backend dan respons di-cache dan dikirimkan ke klien.

Varnish menampilkan VCL (Bahasa Konfigurasi Varnish – bahasa khusus domain yang fleksibel) yang digunakan untuk mengonfigurasi cara permintaan ditangani dan banyak lagi, Varnish Modul (VMODS) yang merupakan ekstensi untuk Varnish Cache.

Dari segi keamanan, Varnish Cache mendukung logging, pemeriksaan permintaan, pembatasan, autentikasi, dan otorisasi melalui VMODS, namun tidak memiliki dukungan asli untuk SSL/TLS. Anda dapat mengaktifkan HTTPS untuk Varnish Cache menggunakan proxy SSL/TLS seperti Hitch atau NGINX.

Anda juga dapat menggunakan Varnish Cache sebagai firewall aplikasi web, pembela serangan DDoS, pelindung hotlinking, penyeimbang beban, titik integrasi, gateway sistem masuk tunggal, mekanisme kebijakan autentikasi dan otorisasi, perbaikan cepat untuk backend yang tidak stabil, dan router permintaan HTTP.

8. Proksi Caching Squid

Solusi proxy dan caching gratis dan sumber terbuka lainnya, luar biasa, dan banyak digunakan untuk Linux adalah Squid. Ini adalah perangkat lunak server cache proxy web kaya fitur yang menyediakan layanan proxy dan cache untuk protokol jaringan populer termasuk HTTP, HTTPS, dan FTP. Ini juga berjalan pada platform UNIX lain dan Windows.

Sama seperti Varnish Cache, ia menerima permintaan dari klien dan meneruskannya ke server backend tertentu. Ketika server backend merespons, ia menyimpan salinan konten dalam cache dan meneruskannya ke klien. Permintaan konten yang sama di masa mendatang akan dilayani dari cache, sehingga pengiriman konten ke klien menjadi lebih cepat. Jadi ini mengoptimalkan aliran data antara klien dan server untuk meningkatkan kinerja dan menyimpan konten yang sering digunakan dalam cache untuk mengurangi lalu lintas jaringan dan menghemat bandwidth.

Squid hadir dengan fitur-fitur seperti mendistribusikan beban melalui hierarki server proxy yang saling berkomunikasi, menghasilkan data mengenai pola penggunaan web (misalnya statistik tentang situs yang paling sering dikunjungi), memungkinkan Anda menganalisis, menangkap, memblokir, mengganti, atau memodifikasi pesan yang diproksi.

Ini juga mendukung fitur keamanan seperti kontrol akses yang kaya, otorisasi, dan otentikasi, dukungan SSL/TLS, dan pencatatan aktivitas.

9.NGINX

NGINX (diucapkan sebagai Engine-X) adalah solusi konsolidasi sumber terbuka, berkinerja tinggi, berfitur lengkap, dan sangat populer untuk menyiapkan infrastruktur web. Ini adalah server HTTP, server proxy terbalik, server proxy email, dan server proxy TCP/UDP generik.

NGINX menawarkan kemampuan caching dasar di mana konten yang di-cache disimpan dalam cache persisten pada disk. Bagian yang menarik tentang cache konten di NGINX adalah ia dapat dikonfigurasi untuk mengirimkan konten lama dari cache ketika tidak dapat mengambil konten baru dari server asal.

NGINX menawarkan banyak fitur keamanan untuk mengamankan sistem web Anda, termasuk penghentian SSL, membatasi akses dengan otentikasi dasar HTTP, otentikasi berdasarkan hasil sub-permintaan, otentikasi JWT, membatasi akses ke sumber daya HTTP yang diproksi, membatasi akses berdasarkan lokasi geografis, dan banyak lagi.

Ini biasanya digunakan sebagai proksi terbalik, penyeimbang beban, terminator SSL/gerbang keamanan, akselerator aplikasi/cache konten, dan gerbang API dalam tumpukan aplikasi. Ini juga digunakan untuk media streaming.

10. Server Lalu Lintas Apache

Terakhir, kami memiliki Apache Traffic Server, server proxy caching sumber terbuka, cepat, skalabel, dan dapat diperluas dengan dukungan untuk HTTP/1.1 dan HTTP/2.0. Ini dirancang untuk meningkatkan efisiensi dan kinerja jaringan dengan menyimpan konten yang sering diakses di tepi jaringan, untuk perusahaan, ISP (Penyedia Server Internet), penyedia tulang punggung, dan banyak lagi.

Ini mendukung proksi maju dan mundur lalu lintas HTTP/HTTPS. Ini juga dapat dikonfigurasi untuk berjalan di salah satu atau kedua mode secara bersamaan. Ini menampilkan cache persisten, API plugin; dukungan untuk ICP (Protokol Cache Internet), ESI (Termasuk Sisi Tepi); Keep-Alive, dan banyak lagi.

Dalam hal keamanan, Traffic Server mendukung pengendalian akses klien dengan memungkinkan Anda mengonfigurasi klien yang diizinkan menggunakan cache proksi, penghentian SSL untuk koneksi antara klien dan dirinya sendiri, serta antara dirinya dan server asal. Ini juga mendukung otentikasi dan otorisasi dasar melalui plugin, pencatatan (setiap permintaan yang diterima dan setiap kesalahan yang terdeteksi), dan pemantauan.

Traffic Server dapat digunakan sebagai cache proksi web, proksi penerusan, proksi terbalik, proksi transparan, penyeimbang beban, atau dalam hierarki cache.

Catatan Penutup

Caching adalah salah satu teknologi pengiriman konten web yang paling bermanfaat dan sudah lama digunakan, yang terutama dirancang untuk meningkatkan kecepatan situs web atau aplikasi. Ini membantu mengurangi beban server, latensi, dan bandwidth jaringan Anda karena data cache disajikan ke klien, sehingga meningkatkan waktu respons aplikasi dan kecepatan pengiriman ke klien.

Pada artikel ini, kami meninjau alat caching sumber terbuka teratas untuk digunakan pada sistem Linux. Jika Anda mengetahui alat cache sumber terbuka lainnya yang tidak tercantum di sini, silakan bagikan dengan kami melalui formulir umpan balik di bawah. Anda juga dapat berbagi pemikiran Anda tentang artikel ini dengan kami.