2 puan yazan GN⁺ 2024-10-21 | 1 yorum | WhatsApp'ta paylaş
  • Dağıtık sistemleri öğrenmenin özü, belirli bir teknolojiden çok düşünme biçimini değiştirmekte yatıyor; bu liste, internet ölçeğindeki sistemleri tasarlarken karşılaşılan sorunları konu başlıklarına göre takip etmeyi sağlıyor
  • Kaynaklar; tasarım felsefesi, gecikme, Amazon ve Google’ın büyük ölçekli sistem örnekleri, tutarlılık modelleri, teori, araçlar, altyapı, depolama, uzlaşma algoritmaları, gossip protokolleri ve P2P olarak ayrılıyor
  • CAP, 2PC’den kaçınma, eventual consistency ve iyimser replikasyon; tutarlılık ile erişilebilirliği aynı anda en üst düzeye çıkarmanın zor olduğunu gösteren operasyonel tavizleri ortaya koyuyor
  • Google makale derlemesi, MapReduce, Chubby, GFS, BigTable, Dremel, Spanner, Photon, Mesa gibi büyük ölçekli dağıtık sistemlerin uygulama örneklerini sunarken; Amazon kaynakları hizmet tabanlı mimariye geçişle birlikte organizasyon kültürünü de ele alıyor
  • Paxos, Raft, FLP, Lamport Clock, Byzantine Generals, Chord, Kademlia ve Pastry’ye kadar sıralı biçimde okunduğunda uzlaşma, zaman, replikasyon ve yönlendirme problemlerini tek bir akış içinde toparlamak mümkün oluyor

Düşünme Biçimi ve Tasarım Perspektifi

Gecikme ve İnternet Ölçeğinde Hizmetler

Google Sistem Makaleleri ve Tutarlılık Modelleri

  • Google derlemesi, MapReduce’dan Mesa’ya kadar dağıtık sistemlerin “rocket science” sayılabilecek büyük ölçekli sistem makalelerini tek bir yerde topluyor
    • MapReduce
    • Chubby Lock Manager
    • Google File System
    • BigTable
    • Dremel: Web ölçeğindeki veri kümeleri üzerinde etkileşimli analiz
    • Megastore: Veri merkezleri arasında düşük gecikmeli Paxos uygulaması için tasarım
    • Spanner: Ölçeklenebilir, çok sürümlü, küresel olarak dağıtılmış ve senkron şekilde replike edilen Google veritabanı
    • Photon: Sürekli veri akışları için hata toleranslı ve ölçeklenebilir join işlemleri
    • Mesa: Google’ın internet reklamcılığı işiyle ilgili temel ölçüm verilerini depolayan coğrafi olarak replike edilmiş, near-real-time ve ölçeklenebilir veri ambarı
  • “Consistency Models”, sistem bağlamına göre tutarlılık ile erişilebilirlik arasında doğru ödünleşimi bulmaya odaklanan kaynaklardan oluşuyor

Teori, Diller, Altyapı, Depolama

Uzlaşma, Gossip, P2P

1 yorum

 
GN⁺ 2024-10-21
Hacker News yorumları
  • Bu liste biraz eski görünüyor; Heidi Howard’ın dağıtık uzlaşı okuma listesini öneririm
    https://github.com/heidihoward/distributed-consensus-reading...

  • Bu alanın “roket bilimi” olarak Google’ın MapReduce’unun gösterildiğini görünce bir tuhaf geldi
    Kontrol edince bu listenin 2014 tarihli olduğunu gördüm [1]; bugün durum epey değişti, o yüzden dikkat etmek gerekiyor
    [1] https://news.ycombinator.com/from?site=dancres.github.io

    • Bunu öğrenince bağlam kesinlikle yerine oturdu. Bu listenin üzerinden 10 yıl geçmiş; o dönemde bile MapReduce makalesinin yayımlanmasının üzerinden zaten 10 yıl geçmişti
  • Yaklaşık 10 yıl önce hazırladığım dağıtık sistem okuma listelerinin meta listesi var
    Bu listeyi de yaklaşık 10 yıl gecikmeyle eklemiştim; topladığım maddelerden bugün hâlâ hangilerinin ayakta olduğunu ancak Tanrı bilir
    https://gist.github.com/macintux/6227368

  • Asıl listededen bahseden https://ferd.ca/a-distributed-systems-reading-list.html de birlikte bakmaya değer

    • Bu tür listelerin gerçekte kimin için olduğunun netleştirilmesi gerekiyor. Bence yalnızca “dağıtık sistemleri öğrenmek isteyen” kişiler için hazırlanmış listeler değiller
      Sınırları zorlayan ya da yeni yaklaşımlar arayan kişiler için faydalı olabilir; ama geri kalanlar için, ikinci dereceden denklem çözmeyi sorup karşılığında 100 kategori teorisi makalesi almak gibi bir his veriyor
      Fred Herbert’ın listesi asıl yazıdan daha güncel, ama kendi ifadesiyle o da eksiksiz değil. “Designing Data-Intensive Applications”ı olmazsa olmaz sayarken bile, gerçekten anlamak için önce çok sayıda makale okumak gerektiği gibi konuşuyor
      Bu tür listeler anlamanın önkoşulu gibi sunulduğunda eşiği yükseltmek gibi hissedilebiliyor
      Onlarca yılda biriken başkalarının çalışmaları sayesinde, etkili bir Linux kullanıcısı olmak için 100 nanokernel makalesi okumanız gerekmiyor. İyi bir işletim sistemini sıfırdan yapmak hâlâ zor, ama insanların %99’unun buna ihtiyacı yok; mevcut araçları ustalıkla kullanmak yeterli
      Dağıtık sistemlerde de benzer şekilde, en ileri sınırı zorlamıyorsanız bu kadar zor olmak zorunda değil
      Araştırmaya derinlemesine dalmaktan çok pratik deneyim isteyen bir yazılım mühendisiyseniz NATS [1] ya da YugaByte [2] ile bir şeyler geliştirmeniz veya [3] gibi uygulamalı bir öğreticiyi denemeniz iyi olur
      “Designing Data-Intensive Applications” da okunmaya değer. Tekrar okudukça daha da iyi gelen kitaplardan biri; bu yüzden 100 makale okumamış olsanız bile doğrudan okuyabilirsiniz. Anlamadığınız yerler olursa soru sorup yardım alırsınız; devasa okuma listesini atlamanızda sorun yok
      1: https://nats.io/
      2: https://www.yugabyte.com/
      3: https://pragprog.com/titles/tjgo/distributed-services-with-g...
  • Buna rağmen CRDT teknolojisinden hiç bahsedilmiyor mu?

    • 10 yıl önceki bir kaynak olduğu için