Söyleşide: Debezium ve CDC hakkında Gunnar Morling

Portakalkafa

Global Mod
Global Mod
Java topluluğunda, Java Özellik İsteklerine (JSR) ve açık kaynak projelerine katılımları yoluyla geliştirmeyi yönlendiren birçok ilginç kişi vardır. Bazılarını burada yavaş yavaş tanıtmak ve kendileriyle projelerinden bahsetmek istiyorum. Bu sefer Gunnar Morling ile değişiklik verisi yakalama ve Debezium açık kaynak projesi hakkında konuştum.


Thorben Janssen:
Sohbet etmek için buraya geri geldiğiniz için teşekkürler. Bazıları, Bean Validation 2.0 belirtimi hakkındaki önceki röportajınızı kaçırmış olabilir. Lütfen kendinizi tekrar tanıtır mısınız?

Günnar Morling:
Red Hat için açık kaynak yazılım geliştiricisiyim.Başlangıçta Hibernate ekibinin bir parçası olarak Hibernate Validator ve Hibernate Search gibi projelerde çalıştım ve Bean Validation 2.0 (JSR 380) geliştirilmesine öncülük ettim. Bu arada, Java EE platformunun bir parçası olarak, fasulye doğrulama belirtimi şu anda Jakarta EE’ye aktarılıyor ve gelecekte Eclipse Foundation’ın himayesinde daha da geliştirilecek.

İki yılı aşkın bir süredir değişim verilerini yakalamak için açık kaynaklı bir platform olan Debezium üzerinde çalışıyorum. Belki bir veya diğer okuyucu beni JavaLand gibi konferanslardan veya MapStruct ve Deptective gibi diğer projelerdeki çalışmalarımdan zaten tanıyor.

Janssen: Mikro hizmetler giderek daha popüler hale geldikçe, farklı veri kaynakları arasında veri alışverişi için modeller hakkında da daha fazla konuşma yapıldı. Bunlardan biri Change Data Capture (CDC). Tam olarak neyle ilgili ve arkasındaki temel fikir nedir?

mırıltı:
Değişiklik verilerini yakalama fikri kolayca açıklanabilir: bir veritabanında bir şey değiştiğinde, örneğin bir müşteri oluşturulduğunda, bir sipariş güncellendiğinde veya bir teslimat iptal edildiğinde, bu değişiklik kaydedilir ve etkilenen tüketicilere bir olay olarak dağıtılır. Bu olaylar, söz konusu veri kaydının eski ve yeni durumunun yanı sıra değişiklik zaman damgası, işlem kimliği ve diğer bazı şeyler gibi meta verileri açıklar. Gevşek bağlı anlamda, değişiklik olayları tipik olarak Apache Kafka gibi mesaj aracıları aracılığıyla tüketicilere eşzamansız olarak iletilir.

Janssen: CDC için ideal bir uygulama senaryosu nedir?

mırıltı:
CDC’nin kullanım durumları son derece çeşitlidir:


Bir yandan, olaylara doğrudan tepki verebilir ve örneğin önbellekteki karşılık gelen girişleri geçersiz kılabilirsiniz. Akış sorguları da bu kategoriye girer: önceden tanımlanmış sorgular (ör. “Mobilya ürün kategorisi için son 60 dakikada birikmiş sipariş değeri nedir?”), örneğin “Satın alma siparişi oluşturuldu” gibi ilgili bir değişiklik olayı meydana geldiğinde otomatik olarak çalıştırılır. . . Böyle bir akış sorgusunun sürekli güncellenen sonuçları, örneğin bir gösterge tablosunu gerçek zamanlı olarak güncellemek veya örneğin bir ürün stoğu belirli bir eşiğin altına düştüğünde bir uyarı uygulamak için kullanılabilir.

Öte yandan, değişiklik olayı verileri, diğer veri depolarını güncellemek ve kaynak veritabanıyla tutarlı tutmak için de kullanılabilir. Örneğin bu, Elasticsearch’te bir tam metin arama dizini, bir veri ambarı veya analitik amaçlı başka bir veritabanı olabilir. Ancak bir Komut Sorgusu Sorumluluk Ayırma (CQRS) mimarisinde optimize edilmiş denetim günlükleri veya okuma verisi modelleri de CDC aracılığıyla oluşturulabilir.

Mikro hizmetler bağlamında, veri değişikliklerini farklı hizmetler arasında yaymak için değişiklik verisi yakalama kullanılabilir. Hizmetler daha sonra, örneğin, diğer hizmetlerden kendi yerel veritabanlarına bir veri kopyası oluşturabilir, bu da hizmetler arasında senkronize çağrıları önleyebilir.

Janssen: Debezium projesi ile CDC modelinin bir uygulamasını sunuyorsunuz. Tam olarak nasıl çalışır ve hangi veri kaynaklarıyla kullanabilirim?

mırıltı:
Debezium, günlük tabanlı CDC olarak bilinen şeyi uygular; bu, değişiklik olaylarının kaynağının veritabanı işlem günlükleri olduğu anlamına gelir. Bu, yoklama (yani, yeni veya değiştirilmiş kayıtları belirlemek için tekrar tekrar sorgular çalıştırma) gibi alternatif yaklaşımlara göre önemli avantajlar sunar:

  • Aynı kayıtta hızlı bir şekilde art arda yapılan güncellemeler ve silmeler de dahil olmak üzere tüm değişikliklerin yakalanması garanti edilir.
  • Değişiklik olayları, diğer sorguların performansını olumsuz etkilemeden günlükten çok verimli bir şekilde belirlenir.
  • “Son Güncelleme” sütunu gibi hiçbir veri şeması değişikliğine gerek yoktur.
  • Konfigürasyona ve veritabanına bağlı olarak, değiştirilmiş bir veri kaydının önceki durumu ve ayrıca değişikliğin zaman damgası, buna neden olan sorgu vb. gibi meta veriler kaydedilebilir.
Debezium, diğer şeylerin yanı sıra bağlayıcı yönetimine (yapılandırma, başlatma, kapatma vb.), Kafka Connect örneklerini kümeleyerek izleme ve kullanılabilirliğe izin veren, Kafka bağlayıcılarını uygulamaya ve çalıştırmaya yönelik bir çerçeve olan Kafka Connect’i temel alır. Hata toleransı da dikkate alınır: örneğin, bir bağlayıcı çökerse veya bir güncelleme nedeniyle basitçe yeniden başlatılması gerekirse, hiçbir değişiklik olayı kaybolmaz, ancak günlük ayrıntılı olarak son konumundan okunur. Kafka Connect bağlamında, veri değişikliklerini diğer veritabanlarına, Elasticsearch’e, Hadoop kümelerine vb. göndermek için Debezium ile birlikte kullanılabilen çeşitli sözde havuz bağlayıcıları vardır. örneğin.

Debezium, Kafka Connect aracılığıyla dağıtımın yanı sıra, kullanıcıların değişiklik olaylarını örneğin Amazon Kinesis’te yayınlamak için kullandıkları herhangi bir Java uygulamasında bir kitaplık olarak da kullanılabilir.

Debezium, MySQL, PostgreSQL, SQL Server ve MongoDB gibi çeşitli veritabanlarını destekler. Topluluk ayrıca şu anda Apache Cassandra için bir bağlayıcı üzerinde çalışıyor.

Janssen: Debezium kullanmak istersem ne yapmalıyım?

mırıltı:
Başlangıç noktası, kapsayıcı görüntüler olarak gerekli bileşenleri (MySQL, Apache Kafka, Kafka Connect, Debezium gibi bir veritabanı) sağlayan ve bir bağlayıcı yapılandırmadan Kafka’nın oyunlarındaki değişiklik olaylarını görüntülemeye kadar olan adımları açıklayan Debezium öğreticisini okumak olabilir.

Kafka ve Kafka Connect’i çalıştırmak için bir Kubernetes operatörü sağlayan Strimzi projesi, Kubernetes/OpenShift tabanlı üretken kullanım için önerilir. Gerektiğinde Red Hat’ten ticari destek alınabilir; bu aynı zamanda Debezium’un kendisi için de geçerlidir (şu anda geliştirici önizlemesi olarak mevcuttur).

Janssen: Debezium şu anda 0.9 sürümünde mevcuttur. Halihazırda verimli kullanım için uygun mu? Sürüm 1.0 için hala eksik olan nedir?

mırıltı:
Topluluk, büyük ölçekli üretimde çeşitli Debezium konektörlerini zaten kullanıyor. Kullanıcılar dağıtımları bazen yüzlerce veritabanıyla bildirir. Bu nedenle, bir geliştirme ekibi olarak, yeni sürümlerde geriye dönük uyumluluk sağlamaya ve güncellemeyi mümkün olduğunca sorunsuz hale getirmeye çok dikkat ediyoruz. Şu anda, çeşitli bağlayıcıların olay biçimlerinin bazı standartlaştırmalarını ve Cassandra bağlayıcısının erken bir sürümünü içeren 0.10 sürümü üzerinde çalışıyoruz.

Sırada Debezium 1.0’ın olması bekleniyor ve burada ana odak noktası, bağlayıcı yapılandırma seçeneklerini standartlaştırmaya ve bağlayıcı kararlılığını daha da iyileştirmek için otomatikleştirilmiş test paketini genişletmeye olacak.

Gelecekteki olası gelişmeler için bazı moda sözcükler, CloudEvents standardı ile entegrasyon, diğer mesaj simsarları ile entegrasyon, denormalize edilmiş veri görünümleri oluşturma desteği ve diğer birkaçıdır. Topluluk odaklıyız ve yol haritasını sürekli olarak ayarlıyoruz.

Janssen: Proje hakkında daha fazla bilgiyi nereden bulabilirim?

mırıltı:
Ana iletişim noktamız web sitemizdir. Bağlayıcılar buradan indirilebilir; hızlı bir şekilde başlamanıza yardımcı olacak yukarıdaki referans belgeleri ve öğretici var. Blogda, yeni sürümler ve belirli CDC kullanım durumlarıyla ilgili demolar gibi diğer konular hakkında bilgi veriyoruz.

Topluluk, gerekirse bir posta listesi ve sohbet odası aracılığıyla sorular için kullanılabilir ve elbette bir tane bulabilirsiniz. @debezio Twitter’dan.

Janssen: Kendinizi nerede bulabilirsiniz?

mırıltı:
Bu kanallardayım ve ayrıca aşağıdaki Twitter’dayım @gunnarmorling ulaşılabilir

Janssen: Röportaj için teşekkürler ve Debezium ile devam eden başarı.


()




Haberin Sonu



 
Üst