21
Yüksek Performanslı Dağıtık Mesajlaşma Sistemi Emre Akış @akisemre

Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

Embed Size (px)

Citation preview

Page 1: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

Yüksek Performanslı Dağıtık

Mesajlaşma Sistemi

Emre Akış @akisemre

Page 2: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

2

Özet

• Neden Apache Kafka kullanalım ?

• Aslında nedir?

• Nasıl çalışır ?

• Ekosistem

Page 3: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

3

Büyük Veri (Big Data)

• Bir bilgisayara sığmayan veri

• Dağıtık sistemlere hoş geldiniz

Page 4: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

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)

Page 5: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

5

Mesajlaşma Kuyruğu

FIFO – İlk giren ilk çıkar

Page 6: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

6

Dağıtık Mesajlaşma Kuyruğu

• Ölçeklenebilir

• Güvenilir

• Yüksek performans (okumada,yazmada)

Page 7: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

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)

Page 8: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

8

Küme (Cluster)

Dil bağımsız TCP protokolü

Küme => grup halindeki sunucular (brokerlar)

Page 9: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

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ı

Page 10: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

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

Page 11: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

11

Üretici (Producer)

• Hangi mesaj hangi bölüme karar verir

– Round-robin

– Semantik bölümleme (semantic partitioning)

Page 12: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

12

Tüketici (Consumer)

• Queue vs. Publish/Subscribe• Geleneksel kuyruk sıralama vs. bölüm başına

sıralama

Page 13: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

13

Garantiler

• Bir bölümdeki mesajlar, üreticinin gönderdiği sıradadır.

• Tüketiciler mesajları logdaki kayıt sırasında okurlar.

Page 14: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

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

Page 15: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

15

Ekosistem

• Samza• Spark Streaming• Storm• Flink• Kafka Streams

https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem

Page 16: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

16

Eski Sistem

Clickstream

Tampon Yazma

Toplayıcı Uygulama

İstemci-1

İstemci-2

Okum

a

Oku

ma

Page 17: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

17

Yeni Sistem

Clickstream

Yazma

Toplayıcı Uygulama

İstemci-1Okum

a İstemci-2

Okuma

(1) (2)

Tam

pon

Yazm

a

Page 18: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

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)

Page 19: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

19

Kimler Kullanıyor ?

• LinkedIn

• Yahoo

• Twitter

• Netflix

• Spotify

• Pinterest

• Uber

• Goldman Sachs

• Tumblr

• PayPal

• Box

• Airbnb

• Mozilla

• Cisco

• Etsy

• Foursquare

• StumbleUpon

• Coursera

• Oracle

• …

https://cwiki.apache.org/confluence/display/KAFKA/Powered+By

Page 21: Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe

21

Soru & Cevap