Giriş

Tamamlandı

Bu modülde, ileti kuyruklarına ve akış işlemeye göz atacağız. Gerçek zamanlı verilerin sürekli akışının kullanılabilirliğinin ve İnternet hizmetlerinin artışıyla birlikte bu veri akışlarının gerçek zamanlıya yakın şekilde işlenmesi zorluğu ortaya çıkmıştır.

Akışlar, hiç kesintisiz sürekli olarak gelen sonsuz küçük ileti dizileri olarak düşünülmelidir. Veriler beklemede değildir ve bu akışların işlenmesinden sorumlu olan akış işleme sistemlerinin sürekli olarak bu verileri kullanması ve işlemesi gerekir.

İleti kuyruğu sistemlerinin ardındaki fikirleri inceleyerek başlayacağız. Ayrıca dağıtılmış akış işleme için faydalı olan, ileti kuyruğu sistemlerinin sağladığı soyutlamalara da göz atacağız. Apache Kafka, son zamanlarda popülerlik kazanan bir dağıtılmış ileti kuyruğu sistemi örneğidir.

Daha sonra akış işleme sistemlerini inceleyecek ve veri akışlarının gerçek zamanlı işlemesini gerçekleştirmek için bu sistemlerin motivasyonlarını anlayacağız. Akış işlemede birincil sorun, durum yönetimi sorunudur. Belirli akış işleme iş yükleri, tek tek akış iletileri üzerinde gerçekleştirilebildiğinden doğal olarak durum bilgisi içermez ve bu sayede kolayca ölçekleri genişletilebilir. Paralel olarak çalışan işlemciler arasında veri veya durum koordinasyonu yoktur.

Durum bilgisi olan akış işleme iş yükleri için iletiler tarafından güncelleştirilen durumun yönetimi gerekir. Durum bilgisi olan akış işlemlerinin yönetilmesi ve ölçeğinin genişletilmesi daha zordur. Bu durum özellikle bir akışa gelen iletilerin sıklığı arttığında veya işlenmesi gereken eşzamanlı akış sayısı arttığında geçerlidir. Akış pencereleme gibi yöntemler, birden çok akış iletisinin toplu olarak işlenmesine olanak sağlar.

Son olarak, son birkaç yılda sektörde tartışılmış olan birkaç büyük bilgi işlem archetype’ına göz atarak öğrendiklerimizi toplamış olacağız. Lambda mimarisinin destekçileri, yüksek aktarım hızına, yüksek gecikme süresine ve yüksek doğruluk oranına sahip bir toplu işlem sistemi kullanarak verilerin durumunu güncelleştirmeye yönelik bir toplu iş katmanı içeren çok katmanlı bir yaklaşım önerir. En son veriler, yüksek doğruluk oranına sahip olmayan, düşük gecikme süreli bir akış işleme sistemi tarafından işlenir. Diğer bir alternatifse, toplu işlemi tamamen kaldırıp gerekli sonuçları üretmek için akış işleme sistemlerini kullanan Kappa mimarisidir.

Öğrenme hedefleri

Bu modülde şunları yapacaksınız:

  • Bir ileti kuyruğunu tanımlama ve temel mimariyi yakalama
  • Bir ileti kuyruğunun özelliklerini yakalama ve avantajlarını ve dezavantajlarını sunma
  • Apache Kafka’nın temel mimarisini açıklama
  • Konuların ve bölümlerin rollerini ve ölçeklenebilirlik ve hataya dayanıklılığın nasıl elde edildiğini tartışma
  • Akış işleme sistemlerinin genel gereksinimlerini tartışma
  • Akış işlemenin evrimini yakalama
  • Apache Samza’nın temel bileşenlerini açıklama
  • Apache Samza’nın durum bilgisi olan akış işlemeyi nasıl gerçekleştirdiğini tartışma
  • Lambda ve Kappa mimarileri arasındaki farkları tartışma
  • LinkedIn kullanım örneğindeki ileti kuyruklarının ve akış işlemenin benimsenmesindeki motivasyonu tartışma

Önkoşullar

  • Bulut hizmeti modelleri ve yaygın bulut sağlayıcıları da dahil olmak üzere bulut bilişimin ne olduğunu anlama
  • Bulut bilişim sağlayan teknolojileri öğrenme
  • Bulut hizmeti sağlayıcılarının bulut için nasıl ödeme ve faturalama yaptığını anlama
  • Veri merkezlerinin ne olduğunu ve neden mevcut olduğunu öğrenme
  • Veri merkezlerinin nasıl ayarlandığını, desteklendiğini ve sağlandığını öğrenme
  • Bulut kaynaklarının nasıl sağlandığını ve ölçüldüğünü anlama
  • Sanallaştırma kavramını öğrenme
  • Farklı sanallaştırma türlerini öğrenme
  • CPU sanallaştırmasını anlama
  • Bellek sanallaştırmasını anlama
  • G/Ç sanallaştırmasını anlama
  • Farklı veri türlerini ve bunların nasıl depolandığını öğrenme
  • Dağıtılmış dosya sistemlerini ve nasıl çalıştıklarını öğrenme
  • NoSQL veritabanları ve nesne depolamayı, ayrıca bunların nasıl çalıştıklarını öğrenme
  • Dağıtılmış programlamanın ne olduğunu ve bulut için neden yararlı olduğunu öğrenme
  • MapReduce’u ve bunun büyük veri bilgi işlemini nasıl etkinleştirdiğini anlama
  • Spark’ı ve bunun MapReduce’tan nasıl farklılık gösterdiğini anlama
  • GraphLab’i ve bunun MapReduce ve Spark’tan nasıl farklılık gösterdiğini anlama