Daftar Bacaan Sistem Terdistribusi (2014)
(dancres.github.io)- Inti mempelajari sistem terdistribusi ada pada perubahan cara berpikir, bukan pada teknologi tertentu, dan daftar ini membantu menelusuri masalah yang dihadapi saat merancang sistem berskala internet berdasarkan topik
- Materi dibagi menjadi filosofi desain, latensi, studi kasus sistem berskala besar Amazon dan Google, model konsistensi, teori, alat, infrastruktur, penyimpanan, algoritme konsensus, protokol gossip, dan P2P
- CAP, menghindari 2PC, eventual consistency, dan replikasi optimistis menunjukkan trade-off operasional bahwa sulit untuk memaksimalkan konsistensi dan ketersediaan sekaligus
- Kumpulan makalah Google menyediakan contoh implementasi sistem terdistribusi berskala besar seperti MapReduce, Chubby, GFS, BigTable, Dremel, Spanner, Photon, dan Mesa, sementara materi Amazon membahas transisi ke arsitektur berbasis layanan beserta budaya organisasi
- Jika dibaca berurutan hingga Paxos, Raft, FLP, Lamport Clock, Byzantine Generals, Chord, Kademlia, dan Pastry, masalah konsensus, waktu, replikasi, dan routing dapat dirangkum dalam satu alur
Cara berpikir dan perspektif desain
- Bagian tersulit dalam sistem terdistribusi adalah mengubah cara berpikir, dan daftar ini dimulai dengan tulisan serta makalah yang membantu transisi tersebut
- “Thought Provokers” membahas perspektif bahwa tidak semua masalah bisa diselesaikan hanya dengan server besar, database, dan transaksi
- Harvest, Yield and Scalable Tolerant Systems: membahas penerapan praktis CAP
- On Designing and Deploying Internet Scale Services: materi James Hamilton tentang desain dan deployment layanan berskala internet
- The Perils of Good Abstractions: membahas sulitnya membuat API dan antarmuka yang sempurna
- Chaotic Perspectives: menekankan ketidakpastian, kekacauan, dan paralelisme pada sistem berskala besar
- Data on the Outside versus Data on the Inside, Memories, Guesses and Apologies, dan Building on Quicksand dari Pat Helland juga disertakan
- Why Distributed Computing? dari Jim Waldo dan A Note on Distributed Computing dari Waldo, Wollrath, dan lainnya juga merupakan materi yang dibaca bersama
Latensi dan layanan berskala internet
- “Latency” membahas bagaimana arsitektur terdampak dengan asumsi bahwa latensi selalu ada
- Latency Exists, Cope!: membahas cara menghadapi latensi dan dampaknya terhadap arsitektur
- Latency - the new web performance bottleneck: membahas latensi sebagai bottleneck performa web
- The Tail At Scale: membahas latensi dalam sistem berskala besar, khususnya masalah tail latency
- Materi Amazon tidak hanya melihat pilihan teknologi, tetapi juga budaya dan organisasi yang terbentuk dalam proses transisi ke arsitektur berbasis layanan
- A Conversation with Werner Vogels: membahas transisi Amazon ke arsitektur berbasis layanan
- Discipline and Focus: membahas lebih lanjut transisi Amazon ke arsitektur berbasis layanan
- Vogels on Scalability dan SOA creates order out of chaos @ Amazon juga disertakan
Makalah sistem Google dan model konsistensi
- Kumpulan Google menghimpun di satu tempat makalah sistem berskala besar yang dapat dianggap sebagai “rocket science” sistem terdistribusi, mulai dari MapReduce hingga Mesa
- MapReduce
- Chubby Lock Manager
- Google File System
- BigTable
- Dremel: analisis interaktif atas dataset berskala web
- Megastore: desain untuk implementasi Paxos berlatensi rendah antar-pusat data
- Spanner: database Google yang skalabel, multiversi, terdistribusi global, dan direplikasi secara sinkron
- Photon: join yang fault-tolerant dan skalabel untuk stream data kontinu
- Mesa: data warehouse yang direplikasi secara geografis, nyaris real-time, dan skalabel untuk menyimpan data pengukuran inti terkait bisnis iklan internet Google
- “Consistency Models” terdiri dari materi yang mencari titik kompromi antara konsistensi dan ketersediaan sesuai lingkungan sistem
- CAP Conjecture: tentang ketidakmungkinan memenuhi Consistency, Availability, dan Partition Tolerance sekaligus
- CAP Twelve Years Later: Eric Brewer memperluas penjelasan kompromi aslinya
- Consistency and Availability dan Eventual Consistency dari Werner Vogels disertakan
- Avoiding Two-Phase Commit dan 2PC or not 2PC, Wherefore Art Thou XA? membahas penghindaran two-phase commit dan batasannya
- Starbucks doesn't do two phase commit: membahas mekanisme asinkron
- Optimistic Replication: membahas pendekatan konsistensi yang lebih longgar untuk replikasi data
Teori, bahasa, infrastruktur, penyimpanan
- “Theory” menghimpun materi yang diperlukan untuk memahami ekonomi, asumsi kegagalan, waktu, dan batas konsensus yang berulang kali muncul dalam desain sistem terdistribusi
- Distributed Computing Economics: Jim Gray
- Rules of Thumb in Data Engineering: Jim Gray dan Prashant Shenoy
- Fallacies of Distributed Computing: Peter Deutsch
- Impossibility of distributed consensus with one faulty process: makalah yang juga dikenal sebagai FLP; akses mungkin memerlukan akun atau pembayaran, dan tautan versi gratis juga disediakan
- Unreliable Failure Detectors for Reliable Distributed Systems: cara menghadapi kesulitan FLP
- Lamport Clocks: masalah membangun perspektif waktu global ketika jam tiap komputer berjalan independen
- The Byzantine Generals Problem
- Materi bahasa dan alat menunjukkan bahwa memilih teknologi tertentu saja tidak menghilangkan masalah reliabilitas
- Programming Distributed Erlang Applications: Pitfalls and Recipes: memilih Erlang dan OTP saja tidak membuat pembangunan aplikasi terdistribusi yang andal menjadi sederhana
- Materi infrastruktur membahas bahwa manajemen jam penting bahkan untuk pekerjaan dasar seperti debugging
- Materi penyimpanan berlanjut ke desain storage seperti caching terdistribusi dan Dynamo
Konsensus, gossip, P2P
- Kumpulan Paxos dimulai dari asumsi bahwa memahami Paxos itu sendiri sulit, dan menyarankan alur membaca Paxos Made Simple terlebih dahulu lalu membacanya lagi setelah makalah lain
- The Part-Time Parliament: Leslie Lamport
- Paxos Made Simple: Leslie Lamport
- Paxos Made Live - An Engineering Perspective: Chandra dan lainnya
- Revisiting the Paxos Algorithm: Lynch dan lainnya
- How to build a highly available system with consensus: Butler Lampson
- Reconfiguring a State Machine: perubahan keanggotaan cluster
- Implementing Fault-Tolerant Services Using the State Machine Approach: tutorial dari Fred Schneider
- Makalah konsensus lain membahas lingkungan WAN beserta alternatif untuk Paxos
- Mencius: algoritme konsensus untuk jaringan area luas
- In Search of an Understandable Consensus Algorithm: versi diperluas dari makalah Raft dan alternatif untuk Paxos
- Materi protokol gossip menghimpun protokol komunikasi, monitoring, dan keanggotaan dengan perilaku epidemik
- How robust are gossip-based communication protocols?
- Astrolabe: teknologi yang tangguh dan skalabel untuk monitoring, manajemen, dan data mining sistem terdistribusi
- SWIM: protokol keanggotaan process group bergaya infection yang skalabel dan berkonsistensi lemah
- Materi P2P menuntun pembaca mengikuti pencarian, routing, penyimpanan, dan multicast tingkat aplikasi secara terdistribusi
- Chord: protokol lookup P2P yang skalabel untuk aplikasi internet
- Kademlia: sistem informasi P2P berbasis XOR metric
- Pastry: penentuan lokasi objek dan routing yang skalabel serta terdistribusi untuk sistem P2P berskala besar
- PAST: utilitas penyimpanan P2P persisten berskala besar di atas Pastry
- SCRIBE: infrastruktur multicast tingkat aplikasi yang terdistribusi dalam skala besar untuk messaging area luas di atas Pastry
1 komentar
Komentar Hacker News
Daftar ini tampaknya agak lama, dan saya merekomendasikan daftar bacaan konsensus terdistribusi dari Heidi Howard
https://github.com/heidihoward/distributed-consensus-reading...
Rasanya agak aneh melihat MapReduce dari Google disebut sebagai “rocket science” di bidang ini
Setelah dicek, daftar ini berasal dari 2014 [1], jadi perlu diingat bahwa situasinya sekarang sudah banyak berubah
[1] https://news.ycombinator.com/from?site=dancres.github.io
Ada meta-daftar untuk daftar bacaan sistem terdistribusi yang saya buat sekitar 10 tahun lalu
Daftar ini juga baru saya tambahkan sekitar 10 tahun terlambat, dan entah berapa banyak dari item yang saya kumpulkan itu masih hidup sampai sekarang
https://gist.github.com/macintux/6227368
https://ferd.ca/a-distributed-systems-reading-list.html yang membahas daftar di artikel asli juga layak dibaca
Ini bisa membantu bagi orang yang ingin mendorong batas atau mencari pendekatan baru, tetapi bagi yang lain rasanya seperti bertanya cara menyelesaikan persamaan kuadrat lalu diberi 100 makalah teori kategori
Daftar Fred Herbert lebih baru daripada artikel asli, tetapi menurut pengakuannya sendiri pun tidak lengkap. Ia menyebut “Designing Data-Intensive Applications” sebagai bacaan wajib, tetapi juga seolah mengatakan bahwa untuk benar-benar memahaminya, kita harus lebih dulu membaca banyak makalah
Jika daftar seperti ini disajikan sebagai prasyarat untuk memahami, itu bisa terasa seperti menaikkan ambang masuk
Berkat pekerjaan orang lain yang terakumulasi selama puluhan tahun, kita tidak perlu membaca 100 makalah nanokernel untuk menjadi pengguna Linux yang efektif. Membuat sistem operasi yang bagus dari nol memang tetap sulit, tetapi 99% orang tidak perlu melakukannya; cukup mahir memakai alat yang sudah ada
Sistem terdistribusi juga sama: jika bukan sedang mendorong garis depan bidang ini, seharusnya tidak perlu sesulit itu
Jika Anda seorang software engineer yang menginginkan pengalaman praktik daripada menggali riset secara mendalam, lebih baik coba membangun sesuatu dengan NATS [1] atau YugaByte [2], atau mengikuti tutorial praktik seperti [3]
“Designing Data-Intensive Applications” juga layak dibaca. Ini salah satu buku yang makin bagus setiap kali dibaca ulang, jadi meskipun belum membaca 100 makalah, Anda tetap boleh langsung membacanya. Jika ada bagian yang tidak dipahami, tanyakan dan minta bantuan; tidak apa-apa melewati daftar bacaan raksasa itu
1: https://nats.io/
2: https://www.yugabyte.com/
3: https://pragprog.com/titles/tjgo/distributed-services-with-g...
Tapi kok tidak ada penyebutan teknologi CRDT?