paint-brush
Mimariyi Ortaya Çıkarmak: Dağıtılmış Sistemleri Anlamak İçin Temel Makaleler!ile@bhavdeepsethi
613 okumalar
613 okumalar

Mimariyi Ortaya Çıkarmak: Dağıtılmış Sistemleri Anlamak İçin Temel Makaleler!

ile Bhavdeep Sethi6m2024/04/28
Read on Terminal Reader

Çok uzun; Okumak

İnternetin ve daha akıllı cihazların ortaya çıkmasıyla birlikte işlenmesi gereken veri miktarında patlama yaşandı. Uber sipariş etmek, Netflix'te bir program izlemek, basit bir Google araması, çevrimiçi alışveriş veya sosyal medyayla etkileşimde bulunmak gibi basit günlük aktiviteler, doğal karşıladığımız tüm önemsiz eylemler yüzlerce dağıtım hizmeti tarafından desteklenmektedir. Tüm bu hizmetler, dağıtılmış sistemlerdeki bazı temel belgelerin omurgası üzerine inşa edilmiştir. Bu liste kesinlikle kapsamlı olmasa da, dağıtılmış sistemler dünyası üzerinde büyük etkisi olan en sevdiğim makalelerden bazılarını burada bulabilirsiniz.
featured image - Mimariyi Ortaya Çıkarmak: Dağıtılmış Sistemleri Anlamak İçin Temel Makaleler!
Bhavdeep Sethi HackerNoon profile picture
0-item


Dağıtılmış bir sistem, varlığından bile haberdar olmadığınız bir bilgisayarın arızalanmasının kendi bilgisayarınızı kullanılamaz hale getirebileceği sistemdir.


AM Turing Ödülü sahibi Leslie Lamport'un bu ünlü alıntısı, dağıtılmış bir sistem oluşturma ve sürdürmedeki zorlukları özetlemektedir. Peki neden bu kadar karmaşık sistemlere ihtiyaç var?


İnternetin ve daha akıllı cihazların ortaya çıkmasıyla birlikte işlenmesi gereken veri miktarında patlama yaşandı. Uber sipariş etmek, Netflix'te bir program izlemek, basit bir Google araması, çevrimiçi alışveriş veya sosyal medyayla etkileşimde bulunmak gibi basit günlük aktiviteler, doğal karşıladığımız tüm önemsiz eylemler yüzlerce dağıtım hizmeti tarafından desteklenmektedir. Tüm bu hizmetler, dağıtılmış sistemlerdeki bazı temel belgelerin omurgası üzerine inşa edilmiştir.


Bu liste kesinlikle kapsamlı olmasa da, dağıtılmış sistemler dünyası üzerinde büyük etkisi olan en sevdiğim makalelerden bazılarını burada bulabilirsiniz.


CAP Teoremi

Geleneksel bir makale olmasa da, Eric Brewer bunu ilk kez 2000 ACM Dağıtık Hesaplama İlkeleri Sempozyumu'ndaki (PODC) açılış konuşmasında bir varsayım olarak tanıttı. Makale daha sonra Nancy Lynch ve Seth Gilbert tarafından Brewer's Conjecture and the Fizibilite of Consistent, Available, Partition-Tolerant Web Services adlı makalede resmileştirildi ve kanıtlandı.


Eric Brewer'ın CAP teoremi, dağıtılmış sistemler teorisinde temel bir kavramdır ve dağıtılmış bir veri deposunun üç garantiden ikisini (tutarlılık, kullanılabilirlik ve bölüm toleransı) aynı anda sağlamasının imkansız olduğunu belirtir. Burada bahsedilen diğer tüm makaleler yukarıdaki prensibi uygular ve sistemlerinde gerekli ödünleri verir.


CAP teoremi her zaman okuyucuların makaleyi anlamalarına dayalı birçok tartışmaya yol açar. Martin Kleppmann'ın " CAP Teoreminin Eleştirisi ", ödünleşimleri tartışmak için daha iyi bir çerçeve sağlıyor.


Paxos Basitleştirildi

2001 tarihli bu ufuk açıcı makalesinde Leslie Lamport, dağıtılmış bir sistemde kolay ve erişilebilir bir şekilde fikir birliğine ulaşmak için Paxos algoritmasını sunuyor. Paxos tabanlı fikir birliği protokolleri, birçok teknoloji şirketi tarafından kullanılan birçok dağıtılmış veri tabanının, depolama sisteminin, mesajlaşma platformunun ve koordinasyon hizmetlerinin omurgasını oluşturur. Google'ın Chubby'si, Google'ın Spanner'ı, Apache ZooKeeper'ı, Apache BookKeeper'ı vb. gibi diğer teknolojileri büyük ölçüde etkiledi.

Paxos lider seçimi için yaygın olarak kullanılıyor


Google Dosya Sistemi

Google Dosya Sistemi (GFS) makalesi, ticari donanımdaki büyük dağıtılmış veri yoğunluklu uygulamalar için ölçeklenebilir bir dağıtılmış dosya sistemi sunar; bu, daha sonra gelen birçok dağıtılmış dosya sisteminin temelini oluşturur. GFS, Apache Hadoop çerçevesi tarafından kullanılan dağıtılmış dosya sistemi olan HDFS ve sonunda Amazon S3 (s3 temelde farklı olsa da) için büyük bir ilham kaynağı oldu.


MapReduce: Büyük Kümelerde Basitleştirilmiş Veri İşleme

Bu makale , dağıtılmış bilgi işlem altyapısını kullanarak büyük ölçekli veri kümelerinin işlenmesine yönelik ölçeklenebilir bir yaklaşım sergileyen MapReduce programlama modelini tanıtmaktadır. MapReduce, "büyük veri" devriminde çok önemli bir rol oynadı ve kuruluşların büyük veri kümelerini analiz etmek ve bunlardan içgörüler elde etmek için dağıtılmış bilgi işlemin gücünden yararlanmasını sağladı. GFS ve MapReduce'un birleştirilmesinin, Google'ın "internet" verilerini düzenlemek için Petabaytlarca veriyi işlemesine nasıl olanak tanıdığını görebilirsiniz.


MapReduce makalesi (GFS ile birlikte), Apache Hive (Hadoop üzerinde oluşturulmuş veri ambarı altyapısı), Apache Pig (Hadoop için üst düzey veri akış dili), Apache gibi Apache Hadoop etrafında oluşturulmuş tüm araç ve kitaplık ekosisteminin geliştirilmesine ilham verdi. Spark (bellek içi veri işleme motoru), Apache HBase (dağıtılmış NoSQL veritabanı) ve diğerleri.


Bigtable: Yapılandırılmış Veriler için Dağıtılmış Depolama Sistemi

Bigtable belgesi, Google'da yapılandırılmış verileri yönetmek için dağıtılmış bir depolama sistemini temsil eder. MapReduce ve GFS, Google'ın verileri geniş ölçekte ve uygun maliyetli bir şekilde işlemesine izin verdikten sonra, bir sonraki adım verilere güvenilir ve yüksek düzeyde kullanılabilir bir şekilde erişim sağlamaktı. BigTable, web indeksleme, Google Earth ve Google Finans gibi uygulamalar için esnek, yüksek performanslı bir çözüm sağlamayı başardı.


MapReduce'un "büyük veri" çağında devrim yaratması gibi, BigTable kağıdı da "NoSQL" çağının itici gücüydü. Bigtable makalesinde tanıtılan tasarım ilkelerinin ve mimari kavramların birçoğu "Apache HBase", "Cassandra", "MongoD" vb. teknolojilerde kullanılmıştır. Bu uygulamalardan bazıları farklı veri modelleri kullanabilse de (örneğin, MongoDB), yatay ölçeklenebilirlik, hata toleransı ve otomatik parçalama gibi ortak ilkeleri paylaşırlar.


Dynamo: Amazon'un Yüksek Erişilebilir Anahtar-Değer Mağazası

Dynamo makalesi, Amazon tarafından geliştirilen, yüksek oranda kullanılabilir bir anahtar/değer mağazasının tasarımını ve uygulamasını sunmaktadır. Dynamo, alışveriş sepetinizdeki ürünler gibi son derece dinamik verilere gerçek zamanlı erişim ihtiyacını giderdi. Makale, yüksek kullanılabilirlik ve performans elde etmek için rahat tutarlılık garantilerine olanak tanıyan dağıtılmış sistem tasarımının temel ilkesi olarak "nihai tutarlılık" kavramını tanıttı (merhaba CAP teoremi!).


Makalenin kendisinde şu ifadeler yer alıyor: "Bigtable ile karşılaştırıldığında Dynamo, ağ bölümleri veya sunucu arızaları sonrasında bile güncellemelerin reddedilmediği yüksek kullanılabilirliğe öncelikli olarak odaklanarak yalnızca anahtar/değer erişimi gerektiren uygulamaları hedefliyor."


BigTable'a benzer şekilde Dynamo makalesi, Riak, Voldemort, Cassandra gibi sonraki teknolojileri ve hatta Apache Kafka gibi olay akışı teknolojilerini oldukça etkiledi.


Cassandra—Merkezi Olmayan Yapılandırılmış Depolama Sistemi

Facebook'un hızlı büyümesi, büyük miktarlarda veriyi işleyebilen ve çok sayıda eşzamanlı kullanıcıyı destekleyebilen bir veritabanı çözümünü gerektirdi. BigTable ve Dynamo kendi başlarına oldukça etkiliyken Cassandra diğerlerinden bir adım öne çıkan ilk teknolojiydi. Makaleyi yayınlamanın yanı sıra Apache Lisansı altında açık kaynaklı bir katkı olarak yayınlayan Facebook, bu tür teknolojiye tüm endüstrinin erişimini sağlamada etkili oldu.


Cassandra, kullanıcıların uygulama gereksinimlerine göre güçlü tutarlılık (BigTable gibi) ile nihai tutarlılık (Dinamo gibi) arasında seçim yapmasına olanak tanıyan ayarlanabilir bir tutarlılık modeli sunarak kendisini önceki ikisinden farklılaştırdı.


ZooKeeper: İnternet ölçekli sistemler için bekleme gerektirmeyen koordinasyon

Bu makale Apache ZooKeeper'ı tanıtmakta ve dağıtılmış sistemlerde oldukça güvenilir ve ölçeklenebilir koordinasyon hizmetleri sağlamaya yönelik tasarım ilkelerini ve algoritmalarını sunmaktadır. ZooKeeper'ın piyasaya sürülmesinden önce, yazılım geliştiricileri genellikle dağıtılmış sistemlerde dağıtılmış koordinasyon ve fikir birliği için kendi özel çözümlerini uygulamak zorundaydı.


ZooKeeper, dağıtılmış kilitler, lider seçimi ve konfigürasyon yönetimi gibi temel özellikleri sunan, dağıtılmış koordinasyon için merkezi bir hizmet önerdi. Bu, karmaşık koordinasyon mantığını ZooKeeper'a aktararak dağıtılmış uygulamaların geliştirilmesini basitleştirmeye olanak sağladı. Zookeeper'ı kullanmanın en yaygın kullanım durumlarından biri hizmet keşfi içindir.


Apache Kafka: Günlük İşleme için Dağıtılmış Mesajlaşma Sistemi

Bu belgede , olay akışlarının yüksek verimli, hataya dayanıklı işlenmesi için tasarlanmış dağıtılmış bir mesajlaşma sistemi olan Apache Kafka tanıtılmaktadır. Kafka'nın bir araştırma makalesi olarak yayınlanması ve bir Apache projesi olarak açık kaynak olarak yayınlanması, onu yüksek düzeyde ölçeklenebilir ve hataya dayanıklı, gerçek zamanlı veri işleme ve olay odaklı mimariler için standart bir mesajlaşma sistemi haline getirdi.


Kafka, büyük hacimli veri akışlarını gerçek zamanlı olarak işlemek için tasarlanmış, yüksek düzeyde ölçeklenebilir ve hataya dayanıklı bir mesajlaşma sistemini tanıttı. Kafka, büyük hacimli verileri düşük gecikme ve yüksek verimle işlemek için toplu işleme ve akış işlemeyi birleştiren Lambda mimarisinin geliştirilmesinde oldukça etkili oldu.


Esnek Dağıtılmış Veri Kümeleri: Bellek İçi Küme Bilişimi için Hataya Dayanıklı Bir Soyutlama

Bu belgede , dağıtılmış kümeler arasında hataya dayanıklı, bellek içi veri işlemeyi mümkün kılan Apache Spark'ın temel soyutlaması olan Esnek Dağıtılmış Veri Kümeleri (RDD'ler) tanıtılmaktadır. Spark'ın bellek içi yürütme motoru, özellikle yinelemeli algoritmalar, makine öğrenimi ve etkileşimli analitikler için (disk tabanlı yürütme modeline sahip olan) MapReduce'a kıyasla önemli ölçüde daha hızlı performans sağlar.


Bu makaleler, depolama sistemleri, fikir birliği algoritmaları, hata toleransı ve ölçeklenebilirlik dahil olmak üzere dağıtılmış sistemlerdeki geniş bir konu yelpazesini kapsamaktadır. Bunları okumak, dağıtılmış sistemleri oluşturma ve yönetme ilkeleri ve uygulamaları konusunda sağlam bir temel sağlayacaktır.


Dağıtılmış sistemlerdeki yolculuğunuza başlıyorsanız ve daha fazlasını öğrenmek istiyorsanız veya zaten bir uzmansanız ve yalnızca temel bilgilerinizi tazelemek istiyorsanız, öğrenmenin, dağıtılmış sistemlerle ilgili bu temel makalelerden bazılarını okumaktan daha iyi bir yolu yoktur.