Upload
emre-akis
View
816
Download
3
Embed Size (px)
Citation preview
Yüksek Performanslı Dağıtık
Mesajlaşma Sistemi
Emre Akış @akisemre
2
Özet
• Neden Apache Kafka kullanalım ?
• Aslında nedir?
• Nasıl çalışır ?
• Ekosistem
3
Büyük Veri (Big Data)
• Bir bilgisayara sığmayan veri
• Dağıtık sistemlere hoş geldiniz
4
Gerçek Zamanlı Veri Analitiği
• Olaylar (Events) (örn: “clickstream”ler)
• Sensörler
• Şeylerin interneti (Internet of Things - IoT)
• Veri akımları (Data streams)
5
Mesajlaşma Kuyruğu
FIFO – İlk giren ilk çıkar
6
Dağıtık Mesajlaşma Kuyruğu
• Ölçeklenebilir
• Güvenilir
• Yüksek performans (okumada,yazmada)
7
Neden Apache Kafka Kullanalım ?
• Temiz ve basit mimari
• Kullanımı kolay
• Kurulması kolay
• Yüksek performans
• Ölçeklenebilirlik
• Yüksek kullanılabilirlik (high availability)
• Kalıcılık (bir süreliğine)
8
Küme (Cluster)
Dil bağımsız TCP protokolü
Küme => grup halindeki sunucular (brokerlar)
9
Konu (Topic)
• Mesajların gönderildiği kategori ismi• Bölümlendirilmiş log• Her bölüm– Sıralı– Değişmez sıralı– Sona eklemeli
offset => sıralı bir sayı
10
Bölüm Dağılımı (Partition Distribution)
• Küme içindeki sunucular arasında dağıtılmış• Hata toleransı için kopyalanmış (ayarlanabilir)• Her bölümün bir lideri olur (okuma,yazma)• Diğerleri lideri takip eder (lideri kopyala)• Bölüm hatası durumunda takipçilerden biri
yeni lider olur
11
Üretici (Producer)
• Hangi mesaj hangi bölüme karar verir
– Round-robin
– Semantik bölümleme (semantic partitioning)
12
Tüketici (Consumer)
• Queue vs. Publish/Subscribe• Geleneksel kuyruk sıralama vs. bölüm başına
sıralama
13
Garantiler
• Bir bölümdeki mesajlar, üreticinin gönderdiği sıradadır.
• Tüketiciler mesajları logdaki kayıt sırasında okurlar.
14
İstemciler
• Java• Python• Ruby• Go• C/C++• .NET• Clojure• Node.js
• Scala• JRuby• Perl• Erlang• PHP• Rust• HTTP Rest
https://cwiki.apache.org/confluence/display/KAFKA/Clients
15
Ekosistem
• Samza• Spark Streaming• Storm• Flink• Kafka Streams
https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem
16
Eski Sistem
Clickstream
Tampon Yazma
Toplayıcı Uygulama
İstemci-1
İstemci-2
Okum
a
Oku
ma
17
Yeni Sistem
Clickstream
Yazma
Toplayıcı Uygulama
İstemci-1Okum
a İstemci-2
Okuma
(1) (2)
Tam
pon
Yazm
a
18
Kullanım Senaryoları
• Messaging • Website activity tracking (at Linkedin)• Metrics • Log aggregation • Stream processing (with Storm or Samza)• Event sourcing (state changes are logged by time)• Commit log (like database transaction log – log
compaction)
19
Kimler Kullanıyor ?
• Yahoo
• Netflix
• Spotify
• Uber
• Goldman Sachs
• Tumblr
• PayPal
• Box
• Airbnb
• Mozilla
• Cisco
• Etsy
• Foursquare
• StumbleUpon
• Coursera
• Oracle
• …
https://cwiki.apache.org/confluence/display/KAFKA/Powered+By
20
Kaynaklar• http://kafka.apache.org/• https://cwiki.apache.org/confluence/display/KAFKA/Index• https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem• http://www.confluent.io/blog• http://
www.slideshare.net/miguno/apache-kafka-08-basic-training-verisign
• http://devveri.com/big-data/apache-kafka (Türkçe yazım)• http://
www.slideshare.net/EmreAkis1/apache-kafka-yksek-performansl-datk-mesajlama-sistemi-trke (sunum)
21
Soru & Cevap