Skip to content

Latest commit

 

History

History
188 lines (140 loc) · 6.19 KB

File metadata and controls

188 lines (140 loc) · 6.19 KB

Flink CDC Docker Ortamı

Docker Compose kullanarak SQL Server ve PostgreSQL entegrasyonu ile kapsamlı bir Apache Flink CDC (Change Data Capture) ortamı.

CDC ve Flink Nedir?

Change Data Capture (CDC) bir veritabanında gerçekleşen veri değişikliklerini oluştukları anda izleyen ve yakalayan bir teknolojidir. Periyodik olarak değişiklikleri kontrol etmek yerine, CDC veri eklendiğinde, güncellendiginde veya silindiginde gerçek zamanlı bildirimler sağlar.

Apache Flink sistemde akış halindeki veriyi gerçek zamanlı olarak işleyen bir akış işleme framework'üdür. Düşük gecikme ve yüksek güvenilirlik ile saniyede milyonlarca olayı işleyebilir.

Birlikte: CDC veritabanı değişikliklerini anlık yakalar, Flink ise bu değişiklikleri gerçek zamanlı olarak işleyerek veriyi dönüştürür ve diğer sistemlere yönlendirir.

Mimari

architecture

Bu proje aşağıdaki teknolojiler kullanarak gerçek zamanlı veri akışı ve CDC yeteneklerini göstermektedir:

  • Apache Flink 1.20.0 - Akış işleme motoru
  • SQL Server 2022 - CDC etkin kaynak veritabanı
  • PostgreSQL 15 - İşlenmiş veriler için hedef veritabanı
  • CloudBeaver - Web tabanlı veritabanı yönetim aracı

Bileşenler

Flink Kümesi

  • JobManager: İş yürütme ve kaynak yönetimini koordine eder
  • TaskManager1 & TaskManager2: Akış görevlerini yürütür (her biri 16 slot)
  • Job Submitter: JAR dosyalarını otomatik olarak yükler ve çalıştırır

Veritabanları

  • SQL Server: customers ve sellers tabloları için CDC etkin kaynak veritabanı
  • PostgreSQL: Dönüştürülmüş veri depolama için hedef veritabanı

Flink İşleri

  1. Veri Üretici İşi (mssql_job): Test için sentetik veri üretir
  2. CDC İşleme İşi (cdc_job): CDC olaylarını işler ve PostgreSQL'e yükler

Hızlı Başlangıç

Ön Koşullar

  • Docker ve Docker Compose
  • Java 11+ (JAR dosyalarını derlemek için)
  • Maven 3.6+ (projeleri derlemek için)

Kurulum

  1. Projeyi klonlayın ve dizine gidin:
git clone <repository-url>
cd cdc_docker
  1. Tüm ortamı başlatın:
docker compose up

Bu kadar! Docker Compose yapılandırması gereken her şeyi içerir:

  • Önceden derlenmiş Flink işleri flink_jobs_jars/ dizininde mevcuttur
  • Tüm servisler (Flink kümesi, SQL Server, PostgreSQL, CloudBeaver) otomatik başlar
  • Flink işleri otomatik olarak submit edilir ve çalıştırılır
  • Tam MSSQL → PostgreSQL veri entegrasyon pipeline'ı hemen başlar
  1. Servisleri doğrulayın:

İsteğe Bağlı - İşleri yeniden derle (sadece kaynak kodu değiştirirseniz):

# Veri üreticiyi derle
cd mssql_job
mvn clean package
cp target/mssql-data-generator-1.0-SNAPSHOT.jar ../flink_jobs_jars/

# CDC işini derle
cd ../cdc_job
mvn clean package
cp target/cdc_job-1.jar ../flink_jobs_jars/cdc_job-1.jar
cd ..

Yapılandırma

SQL Server CDC Kurulumu

Ortam otomatik olarak:

  • Veritabanında CDC'yi etkinleştirir
  • SQL Server Agent'ı başlatır (CDC için gerekli)
  • customers ve sellers tablolarını oluşturur
  • Her iki tablo için CDC'yi yapılandırır
  • Gerçek zamanlı değişiklik takibi için CDC capture job'larını kurar

PostgreSQL Kurulumu

  • CDC metadata sütunları ile hedef tabloları oluşturur
  • Flink işleri için bağlantıyı yapılandırır

Otomatik Bağımlılıklar

Sistem gerekli JAR dosyalarını otomatik olarak indirir:

  • PostgreSQL JDBC Sürücüsü
  • SQL Server JDBC Sürücüsü
  • Flink SQL Gateway API

Kullanım

İzleme

  • Flink Dashboard: İş durumu, metrikler ve logları izleyin
  • CloudBeaver: Hem kaynak hem hedef veritabanlarını sorgulayın
  • Docker Logları: Sorun giderme için container loglarını görüntüleyin

Veri Akışı

  1. Veri Üretici SQL Server'da INSERT/UPDATE/DELETE işlemleri oluşturur
  2. CDC değişiklikleri gerçek zamanlı olarak yakalar
  3. Flink veriyi işler ve dönüştürür
  4. İşlenmiş veri, işlem metadata'sı ile PostgreSQL'e yüklenir

Örnek Sorgular

PostgreSQL'de CDC verilerini kontrol edin:

-- Müşteri değişikliklerini görüntüle
SELECT * FROM customers ORDER BY cdc_timestamp DESC LIMIT 10;

-- Satıcı değişikliklerini görüntüle
SELECT * FROM sellers ORDER BY cdc_timestamp DESC LIMIT 10;

-- İşlem türüne göre sayıları
SELECT operation, COUNT(*) FROM customers GROUP BY operation;

Sorun Giderme

Yaygın Sorunlar

  1. Port çakışmaları: 8081, 1433, 5432, 8978 portlarının müsait olduğundan emin olun
  2. Bellek sorunları: Gerekirse Docker bellek tahsisini artırın
  3. İş hataları: Web UI'da Flink loglarını kontrol edin

Loglar

# Belirli servis loglarını görüntüle
docker compose logs jobmanager
docker compose logs taskmanager1
docker compose logs mssql
docker compose logs postgresql

# Logları gerçek zamanlı takip et
docker compose logs -f flink-job-submitter

Servisleri Yeniden Başlat

# Belirli servisi yeniden başlat
docker compose restart jobmanager

# Tüm servisleri yeniden başlat
docker compose down && docker compose up -d

# Temiz yeniden başlatma (volume'ları kaldırır)
docker compose down -v && docker compose up -d

Geliştirme

Yeni İş Ekleme

  1. JAR dosyasını oluşturun ve flink_jobs_jars/ dizinine yerleştirin
  2. flink-job-submitter servisini yeniden başlatın
  3. Flink UI'da iş yürütmesini izleyin

Veritabanı Şemasını Değiştirme

  1. SQL Server değişiklikleri için init.sql'i güncelleyin
  2. PostgreSQL değişiklikleri için init_postgres.sql'i güncelleyin
  3. Container'ları yeniden derleyin ve başlatın

Performans Ayarlama

Flink Yapılandırması

  • TaskManager slotları: Örnek başına 16 (toplam 32)
  • Paralellik: İş başına yapılandırılabilir
  • Checkpointing: Varsayılan olarak devre dışı

Veritabanı Optimizasyonu

  • SQL Server: CDC temizleme yapılandırılmış
  • PostgreSQL: Sık sorgulanan sütunlarda indeksler