AWS Lambda, self-managed Kafka için queue moduna geçti
Lambda Kafka ESM artık queue modunu destekliyor. Aynı partition'ı birden fazla poller okuyor, fakat partition sırası korunmuyor.
Bu haberde
AWS, self-managed Lambda Kafka ESM (Event Source Mapping) için queue modunu duyurdu; mod kendi işlettiğiniz Kafka cluster’larında ve Confluent Cloud gibi yönetilen servislerde çalışıyor. Özellik, Apache Kafka 4.2’de GA olan share groups üzerine kurulu. Aynı partition’ı birden fazla event poller eşzamanlı okuyor ve her poller en fazla 10 eşzamanlı invocation başlatıyor.
Kafka share groups nedir, ne işe yarar?
Kafka share groups, Apache Kafka’da kuyruk benzeri tüketim modelidir. Klasik consumer group’ta her partition tek bir consumer’a atanır. Share group’ta ise aynı partition’daki kayıtları birden fazla consumer paylaşarak işler ve kayıtları tek tek onaylar. Bu modelde partition sırası garanti edilmez. Sıranın önemsiz olduğu iş kuyruklarında RabbitMQ veya Amazon SQS gibi ayrı bir kuyruk sistemine alternatif olarak kullanılır.
Partition sayısı artık tavan değil
Şimdiye kadar Lambda Kafka ESM, consumer group protokolüyle çalışıyordu. Her partition grup içinde tek bir consumer’a gidiyordu. Paralelliği artırmak için topic’i daha çok partition’a bölüyor ya da trafiği başka bir kuyruk sistemine taşıyordunuz.
Kafka’da partition sayısı sonradan azaltılamaz. Fazla bölünmüş bir topic bu yüzden kalıcı bir yük olarak kalıyordu. Queue modunda producer, topic yapılandırması ve fonksiyon kodu değişmiyor.
Sıra gerekiyorsa consumer group modunda kalın
Queue modu partition sırasını korumuyor. Aynı key için durum güncelleyen bir tüketiciniz varsa, örneğin hesap bakiyesi veya sipariş durumu işliyorsanız, o ESM’i olduğu gibi bırakın. AWS’nin önerdiği iş yükleri görüntü ve video encode, fraud detection, bildirim gönderimi ve telemetry toplama. Bu işlerde her olay bağımsız bir iş birimi.
Lambda Kafka ESM’in yeni yükünü downstream taşıyacak
Her event poller 10 eşzamanlı invocation başlatabiliyor. Trafik zirvesinde fonksiyonunuz veritabanına veya harici API’ye eskisinden çok daha fazla bağlantı açar. Yükseltmeden önce reserved concurrency ile üst sınır koyun ve downstream bağlantı limitlerini kontrol edin.
Yavaş veya hatalı bir olay artık aynı partition’daki diğer olayları bekletmiyor. Hatalar log’da sırayla değil dağınık görünecek. Korelasyon için olay başına bir ID loglayın. Aynı olay iki kez işlenirse sonucun bozulmaması için fonksiyonu idempotent yazın.
Geçiş sırası
- Cluster’ınızın Kafka 4.2 veya üstü olduğunu ve share groups’un açık olduğunu doğrulayın. Confluent Cloud kullanıyorsanız bu desteği sağlayıcınızla teyit edin.
- Hangi Lambda Kafka ESM tanımlarının sıra beklemediğini belirleyin:
aws lambda list-event-source-mappings --function-name my-function- Yeni ESM’i
ConsumptionModedeğeriQueueolacak şekilde Console, CLI, CloudFormation, SAM veya CDK ile oluşturun. - Provisioned mode kullanıyorsanız EPU (Event Poller Unit) maliyetini de bütçeye ekleyin. Poller sayısı arttıkça EPU sayısı da artar.

