Programming
Teorema CAP
Prinsip fundamental dalam sistem terdistribusi β tradeoff antara Consistency, Availability, dan Partition Tolerance.
Versi Bahasa Indonesia. Baca dalam Bahasa Inggris
- Prinsip fundamental dalam sistem terdistribusi.
- Tradeoff antara properti yang diinginkan: Consistency, Availability, Partition Tolerance.
Consistency (C)
- Setiap pembacaan menerima data terbaru (atau error).
- Ini memastikan bahwa semua node dalam sistem memiliki data yang sama pada waktu tertentu.
Availability (A)
- Setiap request (baca atau tulis) menerima respons, terlepas dari apakah berhasil atau tidak.
- Sistem tetap beroperasi bahkan dengan adanya kegagalan beberapa node.
Partition Tolerance (P)
- Sistem terus berfungsi bahkan ketika ada partisi jaringan (situasi di mana komunikasi antar node terganggu).
Teorema
- Teorema CAP menyatakan bahwa sistem terdistribusi tidak dapat menjamin ketiga properti secara simultan.
- Hanya dapat menyediakan maksimal dua dari tiga properti.
- Consistency dan Availability (CA):
- Bekerja baik jika tidak ada partisi jaringan.
- Contoh: Database relasional tradisional (jika di-deploy tanpa replikasi).
- Consistency dan Partition Tolerance (CP):
- Menjamin konsistensi bahkan selama partisi jaringan tetapi mungkin mengorbankan availability (misalnya dengan menolak request selama partisi).
- Contoh: Database terdistribusi seperti MongoDB (dalam beberapa konfigurasi).
- Availability dan Partition Tolerance (AP):
- Menjamin ketersediaan bahkan selama partisi jaringan tetapi mungkin mengorbankan konsistensi (misalnya dengan mengizinkan node mengembalikan data usang atau berbeda).
- Contoh: Sistem seperti DynamoDB, Cassandra.
Implikasi Praktis
- Perancang sistem terdistribusi harus memilih dua properti mana yang diprioritaskan berdasarkan kebutuhan aplikasi.
- Sistem dunia nyata sering membuat tradeoff untuk menyediakan versi yang "cukup baik" dari ketiganya, tetapi jaminan ketat tetap tunduk pada batasan CAP.
Contoh
- Pertimbangkan sistem perbankan:
- Jika konsistensi diprioritaskan (misalnya saldo akun yang akurat), availability mungkin dikorbankan selama partisi jaringan.
- Jika availability diprioritaskan (misalnya memastikan ATM selalu beroperasi), konsistensi mungkin dilonggarkan selama partisi.
Edit on GitHub
Last updated on