SlideShare a Scribd company logo
1 of 28
Download to read offline
PUB/SUB
@volkanaltan Meetup, 23 Şubat 2019
Apache Kafka® is a distributed streaming platform
Mesajlaşma
AJANDA
• Publish/subscribe temelleri
• RabbitMQ temelleri
• Apacke Kafka mimarisi
• Hangi araç ne zaman kullanılır?
• Örnek proje: Clickstream / Event projesi
NEDEN?
Kaynak: dotnetKonf 2018
• Senkron acılar son bulsun
• Beklemeye son
• ?
SENKRON SÜREÇ
OLAY BAZLI SÜREÇ
TARİH
Kaynak: RabbitMQ In Action
PUB/SUB NEDİR?
• Pub/Sub, ölçeklenebilir ve gevşek birleşmiş sistemlerin dağıtımına
iyi uyarlanmış bir dağıtık etkileşim modelidir
(CORE FUNCTİONALİTİES)
TEMEL FONKSİYONLAR
• Entity decoupling (Varlık ayrımı)

Yayıncılar (publishers) ve tüketiciler (consumers) birbirlerinin farkında
olmalarına gerek yoktur. Pub/Sub altyapısı ortadaki etkileşimi kaldırır.
• Time decoupling (Zaman ayrıştırması)

Pub/Sub’ın (tarafların) etkileşime aktif olarak katılmasına veya aynı
anda aktif olmalarına gerek yoktur.
• Synchronization decoupling (Senkronizasyon ayrışması)

Producer (üretici) veya Consumer (tüketici) ile pub/sub altyapısı
arasındaki etkileşimin, üretici veya tüketici thread lerini eşzamanlı
olarak engellemesi gerekmez. Bu da işlemci kaynaklarının maksimum
kullanımını olanak tanır.

TEMEL FONKSİYONLAR
• Topic based

Bu abonelik modelinde publisher mesajı statik olarak etiketler, daha sonra hangi iletinin hangi
tüketiciye gittiğine karar veren filtreleme işleminde çok verimli bir şekilde kullanılabilir. Çoğu
sistem topic adlarında wilcard kullanılmasına izin vermektedir. Bu da filtreleme yeteneklerini
artırır ama işlemci maliyeti artar.
• Content based

Etiketleme için producer’e ihtiyaç duymaz, İletideki tüm veri ve meta verileri filtreleme için
kullanılabilir. Filtreler genellikle name-value çiftlerinden oluşur temel karşılaştırma operatörleri
kullanılabilir (AND, OR, vs.) Bu karmaşık filtreler, yüksek bir işlemci maliyeti getirir.
Pub/sub sistemlerin bir diğer temel işlevi, bir üreticiden gelen bir
paketin tüketiciye ulaşıp ulaşmayacağına karar veren yönlendirme
mantığıdır (routing logic), bu abonelik modeli olarak da bilinir. Farklı
olaylar karşısında gidilecek yollar, performansla ilgili bir çok abonelik
şemalarının doğmasına neden olmuştur. İki ana routing logic
QUALİTY-OF-SERVİCE GARANTİSİ
Önceki slide da bahsi geçen pub/sub sistemin temel fonksiyonlarına
ek olarak, gerekli ve istenen garantiler olarak tanımlanır.
Basit olması açısından en önemli pub/sub QoS garantilerini beş ayrı
kategoride ele alacağız. Bu bölümde önemli bir varsayım modern
pub/sub sisteminin distributed (dağıtık) olmasıdır. Scalability
(ölçeklenebilirlik) için dağıtık olma gereklidir ama aynı zamanda tek
başına yeterli değil. Dağıtık depolamanın implementasyonu
beraberinde bir takım teknik sorunları getiriyor.
CORRECTNESS (DOĞRULUK)
QUALİTY-OF-SERVİCE
• at most once (“best effort”: no duplicates)

Bu modda normal çalışma koşulları altında paketler teslim edilir.
Başarısızlık durumunda paket kaybı söz konusu, bunun üstünde bir
çabayla yapılacak kontrol verimi düşürür. Bu nedenle en iyi moddur.
• at least once (no-loss )

Bu modda sistem paketlerin kaybolmadığından emin olur. Başarısızlık
durumunda peketin birden fazla kez gönderilmesine neden olabilir.
• exactly once (no-loss ve no-duplicates)

Uçtan uca bir taahhüt gerektirir. Bu nedenle maliyetlidir.

Delivery Guarantees
CORRECTNESS (DOĞRULUK)
QUALİTY-OF-SERVİCE
• no ordering

Sıra garantisi olmaması performans için ideal bir durumdur.
• partitioned ordering

Bu modda, sırayla tüketilmesi gereken her ileti akışı için tek bir
bölüm(partition) tanımlanabilir. Üstteki gruba göre daha
maliyetlidir.
• global order

Senkronizasyon yükü nedeniyle farklı kanallar arasında global
order garantisi vermek önemli ek kaynaklar gerektirir. Aynı
zamanda ciddi performans kayıpları söz konusudur.
Ordering Guarantees
QUALİTY-OF-SERVİCE
• Dağıtık bir sistemin bir veya birkaçı donanım bileşeni yazılımı başarısız olsa bile hizmetlerini sunma
yeteneğini gösterir.
Reliability(Güvenilirlik)
• Sistemin ayakta olma (uptime) kapasitesini en üst düzeye çıkarma kavramıdır.
Availability (Erişilebilirlik)
• Mesajlaşma sistemlerinde, transactionlar, iletileri atomik unit (birimler) halinde
gruplandırmak için kullanılır. Birimler için tam bir ileti disizi gönderilir (alınır) veya
hiçbiri gönderilmez. Örnek olarak, birkaç anlamsal olarak ilişkili mesaj
yayınlayan (produce) bir üretici emisyon sırasında başarısız olursa, tüketicilerin
(consumer) kısmı tutarsız verileri görmesini istemeyebilir. 

Benzer şekilde, görev açısından kritik bir uygulama, bir veya birkaç ileti consume
etmek, işlemek ve sonrasında commitlemek isteyebilir. Eğer consumer
committen önce başarasız olursa, recovery sonrası bütün mesajlar kullanılabilir
olur.
Transactions (İşlemler)
QUALİTY-OF-SERVİCE
• Ölçeklenebilirlik kavramı, bir sistemin giderek artan miktarda
görevi desteklemek için sürekli gelişebilme yeteneğini ifade eder.
Bu durumda pub/sub sistemi için scalability birden fazla boyuta
sahiptir. Bunlar, consumers/producers, topics ve mesajlar.
Scalability (Ölçeklenebilirlik)
• Verimlilik. İki yaygın verimlilik ölçüsü gecikme süresi (veya yanıt
süresi) ve (throughput) işlem hacmi (veya bant genişliği) 'dir
Efficiency (Verimlilik):
GÖZDEN GEÇİRME
• Pub / Sub mesajlaşma, geliştiricilerin oldukça işlevsel ve mimari açıdan karmaşık uygulamalar oluşturmasını
kolaylaştırır.
• Pub / Sub ile, yayıncılar ve aboneler ayrıştırılır ve birbirlerinin varlığından habersizdirler.
• Aboneler belirli konulara ilgi gösterir ve yayıncılar bir konuya mesaj gönderir.
• Mesaj daha sonra derhal tüm abonelere teslim edilir veya topic’e gönderilir.
• Mesaj ve mesaj boyutu ne olacak?
• Araçlar neler olacak?
RABBİTMQ
• RabbitMQ, yüksek performanslı kurumsal mesajlaşma için ortaya çıkan
standart olarak AMQP protokolünü kullanan güçlü ve ölçeklendirilebilir
bir yapıdır.
• Açık kaynak, Güzel döküman, Lightweight (docker image 125 MB)
• Birden fazla protokolü destekler (Direk veya plugin ler üzerinden)

STOMP, MQTT, AMQP
• Çok sayıda dil için destek (Java, Node.js, Erlang, PHP, Ruby vs..)
• Erlang ile yazılmıştır
RABBİTMQ
APACHE
• ZooKeeper kullanır
• Mesaj Bus değildir ama onun her işini yapar
• Akan datayı sorunlara karşı dayanaklı bir şekilde saklar
• Akan datayı oluştuğu anda işleme imkanı verir
Apache Kafka® is a distributed streaming platform
CORE APIS
KAVRAMLAR
• Producer (Verinin Kafka
Cluster'a ulaşmasını sağlar)
• Consumer (Kafka Cluster
üzerinden verileri çeker)
• Connector (Herhangi data
kaynağından okuyup Kafka'ya
gönderilmesini sağlar)
• Streams (Sınırsız ve sürekli
akan datada işlem yapma
olanağı sağlar)
PRODUCER
• Her bir mesajın topic'e maplenmesini ve lider partitiona
yazılmasını sağlar. Özel bir ayara ihtiyaç duymaz default olarak
sadece lead partition'a yazıp bırakır.
• Mesajlar Batch (toplu) olarak gönderilebilir,
• Sıralama gönderdiğiniz şekilde gider ancak yazamazsa tekrar et
gibi özel ayar girilirse hangi denemede yazacağı bilinmediğinden
sıra değişmiş olabilir. Default kapalıdır.
CONSUMER
• Özel ayarlara ihtiyaç duyar
• Her bir consumer Group id verilerek bir grup hâline getirilir. Gruba
giren çıkan consumer oldukça partition sahiplik ataması yeniden
yapılır. Bunu Broker lardan biri Group koordinatörlüğü ile yapar.
Böylece partitionlar eşit bir şekilde dağıtılır. Buna rebalancing
deniyor.
• Yeni bir Group ID oluşturulursa partitionlardaki data tüketimi ilk
mesajdan değil o andan başlar. Her grubun koordinatörü işlenmiş
offsetleri saklamak için dahili __consumer_offsets den seçilir
CONNECTOR VE STREAMS
• Herhangi bir data kaynağından (Solr, Db, Redis) data stream edip
istenilen başka bir şeye istenilen hızda atmayı tek satır kod ile
sağlayan framework.
• Streams: Data akarken üzerinde işlemler yapmaya olanak sağlayan
API
• Streams: KStream: INSERT , KTable: UPDATE, null data gelirse
DELETE işlemi yapılır
TOPİCS VE LOGS
• Topic, kategori veya feed adı
olarak düşünülebilir
• Her Topic en az bir partitiondan
oluşur
• Her partition, sıralı ve değişmez
bir şekilde kayıt dizisinden oluşur.
Her bir kaydı tanımlayan benzersiz
ID atanır. Buna offset deniyor.
• Her Consumer Group topic'e
abone olduğunda kendi
metadatası tutulur Consumer
Offset'ine istediği gibi müdahâle
edebilir
TOPİCS VE LOGS
• Log size ve
Consumer Offset
arasındaki fark Lag
olarak yansımakta
ve geri kalma
durumunuzu
yansıtmakta
• Tek Consumer
bütün partitionlara
atanmış durumda,
Her partition için
bir consumer da
olabilirdi
TOPİCS VE LOGS
• Her Topic'in birden fazla
consumer'ı olabilir, aynıda anda
birden fazla topic'e atanabilir
• Bir partition aynı consumer
grup içinde yalnız bir
consumer'a atanır
• Kayıt saklama süresi default 7
gündür, saklanan data boyutu
performansı olumsuz etkilemez
• Replication sayısına göre
(Broker'a bağlıdır) data
dağıtımı sağlanır
DİKKAT EDİLECEK HUSUSLAR
• Her bir topic için doğru partition sayısı (5,10,100,1000 vs.)
• Sistemin monitor edilmesi (Monit, Munin, PRTG, Zabbix)
• Topic lerin monitor edilmesi (Kafka Manager, kafka offset monitor,
confluent control center)
• Yapısal configlerin değiştirilmemesi (compact,delete)
• Yeterli disk alanı seçilmesi
KAYNAKLAR
• https://arxiv.org/pdf/1709.00333.pdf
• RabbitMQ in Action
• https://kafka.apache.org
• https://www.cloudamqp.com
• https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-
how-apache-kafka-does-it/
• https://www.rabbitmq.com
• https://www.reddit.com/r/apachekafka/
• https://www.slideshare.net/old_sound/dissecting-the-rabbit
SORULAR

More Related Content

Similar to Pub/Sub Temelleri Ve Apache Kafka

Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır? Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır? Mustafa AKIN
 
Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup Mustafa AKIN
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19Cihan Özhan
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data PresentationSerkan Özal
 
Buluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziBuluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziGokhan Boranalp
 
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAğ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAlonelaz
 
Bilgisayar Ağları
Bilgisayar AğlarıBilgisayar Ağları
Bilgisayar AğlarıFaik GÜNAY
 
Windows Clusters
Windows ClustersWindows Clusters
Windows Clustersoduth
 
OSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptxOSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptxFurkanimek12
 
Apache Kafka Nedir?
Apache Kafka Nedir?   Apache Kafka Nedir?
Apache Kafka Nedir? AnkaraCloud
 
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...Tolga Kaprol
 
Sql server2012 12-Muhtesem Yenilik
Sql server2012 12-Muhtesem YenilikSql server2012 12-Muhtesem Yenilik
Sql server2012 12-Muhtesem YenilikMedyasoft
 
Bulutbilisim sunum
Bulutbilisim sunumBulutbilisim sunum
Bulutbilisim sunumugurbudak
 
Bilgisayar Mimarisi 09, Feza BUZLUCA
Bilgisayar Mimarisi 09, Feza BUZLUCABilgisayar Mimarisi 09, Feza BUZLUCA
Bilgisayar Mimarisi 09, Feza BUZLUCAFeza BUZLUCA
 
Openbravo Gelişmiş Depo Otomasyonu Yazılımı
Openbravo Gelişmiş Depo Otomasyonu YazılımıOpenbravo Gelişmiş Depo Otomasyonu Yazılımı
Openbravo Gelişmiş Depo Otomasyonu YazılımıMehmet Demirel
 
Microsoft Exchange Server 2010 Genel
Microsoft Exchange Server 2010 GenelMicrosoft Exchange Server 2010 Genel
Microsoft Exchange Server 2010 GenelÇözümPARK
 

Similar to Pub/Sub Temelleri Ve Apache Kafka (20)

12factor apps
12factor apps12factor apps
12factor apps
 
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır? Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
 
Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup
 
Devnot - Dev Summit 2018
Devnot - Dev Summit 2018Devnot - Dev Summit 2018
Devnot - Dev Summit 2018
 
Microsoft Azure Temelleri - Modul 1
Microsoft Azure Temelleri - Modul 1Microsoft Azure Temelleri - Modul 1
Microsoft Azure Temelleri - Modul 1
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data Presentation
 
Buluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziBuluta Ilk Adım Analizi
Buluta Ilk Adım Analizi
 
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAğ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
 
Bilgisayar Ağları
Bilgisayar AğlarıBilgisayar Ağları
Bilgisayar Ağları
 
Windows Clusters
Windows ClustersWindows Clusters
Windows Clusters
 
linux-enterprise-cluster
linux-enterprise-clusterlinux-enterprise-cluster
linux-enterprise-cluster
 
OSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptxOSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptx
 
Apache Kafka Nedir?
Apache Kafka Nedir?   Apache Kafka Nedir?
Apache Kafka Nedir?
 
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
 
Sql server2012 12-Muhtesem Yenilik
Sql server2012 12-Muhtesem YenilikSql server2012 12-Muhtesem Yenilik
Sql server2012 12-Muhtesem Yenilik
 
Bulutbilisim sunum
Bulutbilisim sunumBulutbilisim sunum
Bulutbilisim sunum
 
Bilgisayar Mimarisi 09, Feza BUZLUCA
Bilgisayar Mimarisi 09, Feza BUZLUCABilgisayar Mimarisi 09, Feza BUZLUCA
Bilgisayar Mimarisi 09, Feza BUZLUCA
 
Openbravo Gelişmiş Depo Otomasyonu Yazılımı
Openbravo Gelişmiş Depo Otomasyonu YazılımıOpenbravo Gelişmiş Depo Otomasyonu Yazılımı
Openbravo Gelişmiş Depo Otomasyonu Yazılımı
 
Microsoft Exchange Server 2010 Genel
Microsoft Exchange Server 2010 GenelMicrosoft Exchange Server 2010 Genel
Microsoft Exchange Server 2010 Genel
 

Pub/Sub Temelleri Ve Apache Kafka

  • 1. PUB/SUB @volkanaltan Meetup, 23 Şubat 2019 Apache Kafka® is a distributed streaming platform Mesajlaşma
  • 2. AJANDA • Publish/subscribe temelleri • RabbitMQ temelleri • Apacke Kafka mimarisi • Hangi araç ne zaman kullanılır? • Örnek proje: Clickstream / Event projesi
  • 3. NEDEN? Kaynak: dotnetKonf 2018 • Senkron acılar son bulsun • Beklemeye son • ?
  • 7. PUB/SUB NEDİR? • Pub/Sub, ölçeklenebilir ve gevşek birleşmiş sistemlerin dağıtımına iyi uyarlanmış bir dağıtık etkileşim modelidir
  • 8. (CORE FUNCTİONALİTİES) TEMEL FONKSİYONLAR • Entity decoupling (Varlık ayrımı)
 Yayıncılar (publishers) ve tüketiciler (consumers) birbirlerinin farkında olmalarına gerek yoktur. Pub/Sub altyapısı ortadaki etkileşimi kaldırır. • Time decoupling (Zaman ayrıştırması)
 Pub/Sub’ın (tarafların) etkileşime aktif olarak katılmasına veya aynı anda aktif olmalarına gerek yoktur. • Synchronization decoupling (Senkronizasyon ayrışması)
 Producer (üretici) veya Consumer (tüketici) ile pub/sub altyapısı arasındaki etkileşimin, üretici veya tüketici thread lerini eşzamanlı olarak engellemesi gerekmez. Bu da işlemci kaynaklarının maksimum kullanımını olanak tanır.

  • 9. TEMEL FONKSİYONLAR • Topic based
 Bu abonelik modelinde publisher mesajı statik olarak etiketler, daha sonra hangi iletinin hangi tüketiciye gittiğine karar veren filtreleme işleminde çok verimli bir şekilde kullanılabilir. Çoğu sistem topic adlarında wilcard kullanılmasına izin vermektedir. Bu da filtreleme yeteneklerini artırır ama işlemci maliyeti artar. • Content based
 Etiketleme için producer’e ihtiyaç duymaz, İletideki tüm veri ve meta verileri filtreleme için kullanılabilir. Filtreler genellikle name-value çiftlerinden oluşur temel karşılaştırma operatörleri kullanılabilir (AND, OR, vs.) Bu karmaşık filtreler, yüksek bir işlemci maliyeti getirir. Pub/sub sistemlerin bir diğer temel işlevi, bir üreticiden gelen bir paketin tüketiciye ulaşıp ulaşmayacağına karar veren yönlendirme mantığıdır (routing logic), bu abonelik modeli olarak da bilinir. Farklı olaylar karşısında gidilecek yollar, performansla ilgili bir çok abonelik şemalarının doğmasına neden olmuştur. İki ana routing logic
  • 10. QUALİTY-OF-SERVİCE GARANTİSİ Önceki slide da bahsi geçen pub/sub sistemin temel fonksiyonlarına ek olarak, gerekli ve istenen garantiler olarak tanımlanır. Basit olması açısından en önemli pub/sub QoS garantilerini beş ayrı kategoride ele alacağız. Bu bölümde önemli bir varsayım modern pub/sub sisteminin distributed (dağıtık) olmasıdır. Scalability (ölçeklenebilirlik) için dağıtık olma gereklidir ama aynı zamanda tek başına yeterli değil. Dağıtık depolamanın implementasyonu beraberinde bir takım teknik sorunları getiriyor.
  • 11. CORRECTNESS (DOĞRULUK) QUALİTY-OF-SERVİCE • at most once (“best effort”: no duplicates)
 Bu modda normal çalışma koşulları altında paketler teslim edilir. Başarısızlık durumunda paket kaybı söz konusu, bunun üstünde bir çabayla yapılacak kontrol verimi düşürür. Bu nedenle en iyi moddur. • at least once (no-loss )
 Bu modda sistem paketlerin kaybolmadığından emin olur. Başarısızlık durumunda peketin birden fazla kez gönderilmesine neden olabilir. • exactly once (no-loss ve no-duplicates)
 Uçtan uca bir taahhüt gerektirir. Bu nedenle maliyetlidir.
 Delivery Guarantees
  • 12. CORRECTNESS (DOĞRULUK) QUALİTY-OF-SERVİCE • no ordering
 Sıra garantisi olmaması performans için ideal bir durumdur. • partitioned ordering
 Bu modda, sırayla tüketilmesi gereken her ileti akışı için tek bir bölüm(partition) tanımlanabilir. Üstteki gruba göre daha maliyetlidir. • global order
 Senkronizasyon yükü nedeniyle farklı kanallar arasında global order garantisi vermek önemli ek kaynaklar gerektirir. Aynı zamanda ciddi performans kayıpları söz konusudur. Ordering Guarantees
  • 13. QUALİTY-OF-SERVİCE • Dağıtık bir sistemin bir veya birkaçı donanım bileşeni yazılımı başarısız olsa bile hizmetlerini sunma yeteneğini gösterir. Reliability(Güvenilirlik) • Sistemin ayakta olma (uptime) kapasitesini en üst düzeye çıkarma kavramıdır. Availability (Erişilebilirlik) • Mesajlaşma sistemlerinde, transactionlar, iletileri atomik unit (birimler) halinde gruplandırmak için kullanılır. Birimler için tam bir ileti disizi gönderilir (alınır) veya hiçbiri gönderilmez. Örnek olarak, birkaç anlamsal olarak ilişkili mesaj yayınlayan (produce) bir üretici emisyon sırasında başarısız olursa, tüketicilerin (consumer) kısmı tutarsız verileri görmesini istemeyebilir. 
 Benzer şekilde, görev açısından kritik bir uygulama, bir veya birkaç ileti consume etmek, işlemek ve sonrasında commitlemek isteyebilir. Eğer consumer committen önce başarasız olursa, recovery sonrası bütün mesajlar kullanılabilir olur. Transactions (İşlemler)
  • 14. QUALİTY-OF-SERVİCE • Ölçeklenebilirlik kavramı, bir sistemin giderek artan miktarda görevi desteklemek için sürekli gelişebilme yeteneğini ifade eder. Bu durumda pub/sub sistemi için scalability birden fazla boyuta sahiptir. Bunlar, consumers/producers, topics ve mesajlar. Scalability (Ölçeklenebilirlik) • Verimlilik. İki yaygın verimlilik ölçüsü gecikme süresi (veya yanıt süresi) ve (throughput) işlem hacmi (veya bant genişliği) 'dir Efficiency (Verimlilik):
  • 15. GÖZDEN GEÇİRME • Pub / Sub mesajlaşma, geliştiricilerin oldukça işlevsel ve mimari açıdan karmaşık uygulamalar oluşturmasını kolaylaştırır. • Pub / Sub ile, yayıncılar ve aboneler ayrıştırılır ve birbirlerinin varlığından habersizdirler. • Aboneler belirli konulara ilgi gösterir ve yayıncılar bir konuya mesaj gönderir. • Mesaj daha sonra derhal tüm abonelere teslim edilir veya topic’e gönderilir. • Mesaj ve mesaj boyutu ne olacak? • Araçlar neler olacak?
  • 16. RABBİTMQ • RabbitMQ, yüksek performanslı kurumsal mesajlaşma için ortaya çıkan standart olarak AMQP protokolünü kullanan güçlü ve ölçeklendirilebilir bir yapıdır. • Açık kaynak, Güzel döküman, Lightweight (docker image 125 MB) • Birden fazla protokolü destekler (Direk veya plugin ler üzerinden)
 STOMP, MQTT, AMQP • Çok sayıda dil için destek (Java, Node.js, Erlang, PHP, Ruby vs..) • Erlang ile yazılmıştır
  • 18. APACHE • ZooKeeper kullanır • Mesaj Bus değildir ama onun her işini yapar • Akan datayı sorunlara karşı dayanaklı bir şekilde saklar • Akan datayı oluştuğu anda işleme imkanı verir Apache Kafka® is a distributed streaming platform
  • 19. CORE APIS KAVRAMLAR • Producer (Verinin Kafka Cluster'a ulaşmasını sağlar) • Consumer (Kafka Cluster üzerinden verileri çeker) • Connector (Herhangi data kaynağından okuyup Kafka'ya gönderilmesini sağlar) • Streams (Sınırsız ve sürekli akan datada işlem yapma olanağı sağlar)
  • 20. PRODUCER • Her bir mesajın topic'e maplenmesini ve lider partitiona yazılmasını sağlar. Özel bir ayara ihtiyaç duymaz default olarak sadece lead partition'a yazıp bırakır. • Mesajlar Batch (toplu) olarak gönderilebilir, • Sıralama gönderdiğiniz şekilde gider ancak yazamazsa tekrar et gibi özel ayar girilirse hangi denemede yazacağı bilinmediğinden sıra değişmiş olabilir. Default kapalıdır.
  • 21. CONSUMER • Özel ayarlara ihtiyaç duyar • Her bir consumer Group id verilerek bir grup hâline getirilir. Gruba giren çıkan consumer oldukça partition sahiplik ataması yeniden yapılır. Bunu Broker lardan biri Group koordinatörlüğü ile yapar. Böylece partitionlar eşit bir şekilde dağıtılır. Buna rebalancing deniyor. • Yeni bir Group ID oluşturulursa partitionlardaki data tüketimi ilk mesajdan değil o andan başlar. Her grubun koordinatörü işlenmiş offsetleri saklamak için dahili __consumer_offsets den seçilir
  • 22. CONNECTOR VE STREAMS • Herhangi bir data kaynağından (Solr, Db, Redis) data stream edip istenilen başka bir şeye istenilen hızda atmayı tek satır kod ile sağlayan framework. • Streams: Data akarken üzerinde işlemler yapmaya olanak sağlayan API • Streams: KStream: INSERT , KTable: UPDATE, null data gelirse DELETE işlemi yapılır
  • 23. TOPİCS VE LOGS • Topic, kategori veya feed adı olarak düşünülebilir • Her Topic en az bir partitiondan oluşur • Her partition, sıralı ve değişmez bir şekilde kayıt dizisinden oluşur. Her bir kaydı tanımlayan benzersiz ID atanır. Buna offset deniyor. • Her Consumer Group topic'e abone olduğunda kendi metadatası tutulur Consumer Offset'ine istediği gibi müdahâle edebilir
  • 24. TOPİCS VE LOGS • Log size ve Consumer Offset arasındaki fark Lag olarak yansımakta ve geri kalma durumunuzu yansıtmakta • Tek Consumer bütün partitionlara atanmış durumda, Her partition için bir consumer da olabilirdi
  • 25. TOPİCS VE LOGS • Her Topic'in birden fazla consumer'ı olabilir, aynıda anda birden fazla topic'e atanabilir • Bir partition aynı consumer grup içinde yalnız bir consumer'a atanır • Kayıt saklama süresi default 7 gündür, saklanan data boyutu performansı olumsuz etkilemez • Replication sayısına göre (Broker'a bağlıdır) data dağıtımı sağlanır
  • 26. DİKKAT EDİLECEK HUSUSLAR • Her bir topic için doğru partition sayısı (5,10,100,1000 vs.) • Sistemin monitor edilmesi (Monit, Munin, PRTG, Zabbix) • Topic lerin monitor edilmesi (Kafka Manager, kafka offset monitor, confluent control center) • Yapısal configlerin değiştirilmemesi (compact,delete) • Yeterli disk alanı seçilmesi
  • 27. KAYNAKLAR • https://arxiv.org/pdf/1709.00333.pdf • RabbitMQ in Action • https://kafka.apache.org • https://www.cloudamqp.com • https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres- how-apache-kafka-does-it/ • https://www.rabbitmq.com • https://www.reddit.com/r/apachekafka/ • https://www.slideshare.net/old_sound/dissecting-the-rabbit