SlideShare a Scribd company logo
1 of 26
Download to read offline
PUB/SUB
@volkanaltan DevNote, 30 Kasım 2018
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
• ?
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

What's hot

Berkeley Packet Filters
Berkeley Packet FiltersBerkeley Packet Filters
Berkeley Packet FiltersKernel TLV
 
Happy Eyeballs v2 - RFC8305
Happy Eyeballs v2 - RFC8305Happy Eyeballs v2 - RFC8305
Happy Eyeballs v2 - RFC8305APNIC
 
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSPostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSTomas Vondra
 
NFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function FrameworkNFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function FrameworkMichelle Holley
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GEmbarcados
 
linux device driver
linux device driverlinux device driver
linux device driverRahul Batra
 
B4XPages - Cross platform development
B4XPages - Cross platform developmentB4XPages - Cross platform development
B4XPages - Cross platform developmentB4X
 
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_FinalGopi Krishnamurthy
 
Git Tutorial
Git TutorialGit Tutorial
Git TutorialMDLicht
 
Apache Bookkeeper and Apache Zookeeper for Apache Pulsar
Apache Bookkeeper and Apache Zookeeper for Apache PulsarApache Bookkeeper and Apache Zookeeper for Apache Pulsar
Apache Bookkeeper and Apache Zookeeper for Apache PulsarEnrico Olivelli
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the DisruptorTrisha Gee
 
Databricks and Logging in Notebooks
Databricks and Logging in NotebooksDatabricks and Logging in Notebooks
Databricks and Logging in NotebooksKnoldus Inc.
 
Log analysis using elk
Log analysis using elkLog analysis using elk
Log analysis using elkRushika Shah
 
Automated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesAutomated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesGraham Dumpleton
 
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...Tonny Adhi Sabastian
 

What's hot (20)

Berkeley Packet Filters
Berkeley Packet FiltersBerkeley Packet Filters
Berkeley Packet Filters
 
Happy Eyeballs v2 - RFC8305
Happy Eyeballs v2 - RFC8305Happy Eyeballs v2 - RFC8305
Happy Eyeballs v2 - RFC8305
 
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSPostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFS
 
NFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function FrameworkNFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function Framework
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2G
 
linux device driver
linux device driverlinux device driver
linux device driver
 
B4XPages - Cross platform development
B4XPages - Cross platform developmentB4XPages - Cross platform development
B4XPages - Cross platform development
 
Embedded Linux - Building toolchain
Embedded Linux - Building toolchainEmbedded Linux - Building toolchain
Embedded Linux - Building toolchain
 
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
Apache Bookkeeper and Apache Zookeeper for Apache Pulsar
Apache Bookkeeper and Apache Zookeeper for Apache PulsarApache Bookkeeper and Apache Zookeeper for Apache Pulsar
Apache Bookkeeper and Apache Zookeeper for Apache Pulsar
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the Disruptor
 
Databricks and Logging in Notebooks
Databricks and Logging in NotebooksDatabricks and Logging in Notebooks
Databricks and Logging in Notebooks
 
Log analysis using elk
Log analysis using elkLog analysis using elk
Log analysis using elk
 
Write miss
Write missWrite miss
Write miss
 
Ceph on arm64 upload
Ceph on arm64   uploadCeph on arm64   upload
Ceph on arm64 upload
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
 
Intro to Embedded OS, RTOS and Communication Protocols
Intro to Embedded OS, RTOS and Communication ProtocolsIntro to Embedded OS, RTOS and Communication Protocols
Intro to Embedded OS, RTOS and Communication Protocols
 
Automated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesAutomated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and Kubernetes
 
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
 

Similar to Pub/Sub Temelleri, RabbitMQ ve Apache Kafka

Pub/Sub Temelleri Ve Apache Kafka
Pub/Sub Temelleri Ve Apache KafkaPub/Sub Temelleri Ve Apache Kafka
Pub/Sub Temelleri Ve Apache KafkaVolkan Altan
 
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - TürkçeApache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - TürkçeEmre Akış
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices ArchitectureDilaver Demirel
 
Event Driven Architecture And Message Queues by Orçun Çolak
Event Driven Architecture And Message Queues by Orçun ÇolakEvent Driven Architecture And Message Queues by Orçun Çolak
Event Driven Architecture And Message Queues by Orçun ÇolakOrçun Çolak
 
OSI Standartları.pptx
OSI Standartları.pptxOSI Standartları.pptx
OSI Standartları.pptxCanBerkARMAN
 
Dağıtık Veritabanı Sistemleri
Dağıtık Veritabanı SistemleriDağıtık Veritabanı Sistemleri
Dağıtık Veritabanı Sistemleriİsmail ŞEN
 
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
 
Apache Kafka Nedir?
Apache Kafka Nedir?   Apache Kafka Nedir?
Apache Kafka Nedir? AnkaraCloud
 
OSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptxOSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptxFurkanimek12
 

Similar to Pub/Sub Temelleri, RabbitMQ ve Apache Kafka (20)

Pub/Sub Temelleri Ve Apache Kafka
Pub/Sub Temelleri Ve Apache KafkaPub/Sub Temelleri Ve Apache Kafka
Pub/Sub Temelleri Ve Apache Kafka
 
Sukru_TRSUG2016
Sukru_TRSUG2016Sukru_TRSUG2016
Sukru_TRSUG2016
 
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - TürkçeApache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Event Driven Architecture And Message Queues by Orçun Çolak
Event Driven Architecture And Message Queues by Orçun ÇolakEvent Driven Architecture And Message Queues by Orçun Çolak
Event Driven Architecture And Message Queues by Orçun Çolak
 
Openstack Magnum CaaS
Openstack Magnum CaaSOpenstack Magnum CaaS
Openstack Magnum CaaS
 
OSI Standartları.pptx
OSI Standartları.pptxOSI Standartları.pptx
OSI Standartları.pptx
 
Dağıtık Veritabanı Sistemleri
Dağıtık Veritabanı SistemleriDağıtık Veritabanı Sistemleri
Dağıtık Veritabanı Sistemleri
 
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
 
linux-enterprise-cluster
linux-enterprise-clusterlinux-enterprise-cluster
linux-enterprise-cluster
 
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
 
Apache Kafka Nedir?
Apache Kafka Nedir?   Apache Kafka Nedir?
Apache Kafka Nedir?
 
OSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptxOSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptx
 

Pub/Sub Temelleri, RabbitMQ ve Apache Kafka

  • 1. PUB/SUB @volkanaltan DevNote, 30 Kasım 2018 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 • ?
  • 5. 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
  • 6. (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.

  • 7. 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
  • 8. 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.
  • 9. 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
  • 10. 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
  • 11. 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)
  • 12. 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):
  • 13. 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?
  • 14. 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
  • 16. 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
  • 17. 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)
  • 18. 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.
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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