0Pricing
AWS Solutions Architect · Ders

Gerçek Zamanlı Olay İşleme için Kinesis Data Streams

Kinesis Data Streams ile yüksek aktarım hızlı olay akışları üretip tüketin, aktarım hızı için parçaları yönetin ve tüketici olarak Lambda'yı kullanın.

Gerçek Zamanlı Olay İşleme için Kinesis Data Streams, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.

Kinesis Data Akışlarının Temel Kavramları

Kinesis Data Streams (KDS), kalıcı, sıralı ve gerçek zamanlı bir veri akışı hizmetidir. Veriler, bir veya daha fazla parçadan oluşan bir akış içinde düzenlenir. Her parça, sıralı veri kayıtlarından oluşan bir dizidir. Üreticiler, kaydı hangi parçanın alacağını belirleyen bir bölüm anahtarı kullanarak kayıtları parçalara yazar. Tüketiciler, kayıtları parça içinde geldikleri sırayla okuyup işler.

Parça Kapasitesi ve Hacim Sınırları

Her parça, 1 MB/sn veya 1.000 kayıt/sn yazma hacmini ve 2 MB/sn okuma hacmini destekler (bu kapasite, ilgili parçadaki tüm standart tüketiciler arasında paylaşılır). Toplam akış kapasitesi, parça sayısıyla doğrusal olarak ölçeklenir. Şu formülü kullanın: shards_needed = max(write_MB_per_s / 1, read_MB_per_s / 2). Üreticiler yazma sınırına ulaşırsa ProvisionedThroughputExceededException hataları görülür; parçaları bölerek veya bölüm anahtarlarını daha dengeli dağıtarak sorunu çözün.

# Calculate shards needed for a stream:
# - Ingest rate: 5 MB/s writes
# - Read rate: 3 consumers x 2 MB/s = 6 MB/s reads
# shards = max(5/1, 6/2) = max(5, 3) = 5 shards needed

aws kinesis create-stream \
  --stream-name iot-telemetry \
  --shard-count 5

Bölüm Anahtarları ve Veri Dağıtımı

Bölüm anahtarı, Kinesis'in bir kaydı hangi parçanın alacağını belirlemek için (MD5 ile) özetlediği bir dizedir. İyi seçilmiş bir bölüm anahtarı, kayıtları parçalar arasında dengeli dağıtır (yoğun parçaların önlenmesi). IoT için cihaz kimliğini kullanın. Tıklama akışları için oturum kimliğini veya kullanıcı kimliğini kullanın. Düşük kardinaliteli anahtarlardan (örneğin yalnızca 5 değere sahip ülke adı) kaçının; bunlar, bir parçanın orantısız miktarda yazma trafiği almasına ve diğerlerinin boşta kalmasına neden olan yoğun parçalara yol açar.

import boto3, json

client = boto3.client('kinesis', region_name='us-east-1')

# Good: use device_id as partition key for even distribution
event = {'deviceId': 'sensor-42', 'temp': 23.5, 'ts': '2024-01-15T10:00:00Z'}
client.put_record(
    StreamName='iot-telemetry',
    Data=json.dumps(event),
    PartitionKey='sensor-42'  # high-cardinality -> even distribution
)

Standart Tüketiciler ve Enhanced Fan-Out

Standart tüketiciler, yoklama için GetRecords kullanarak parça başına 2 MB/sn okuma hacmini paylaşır. Bir parçada her birinin 2 MB/sn'ye ihtiyaç duyduğu 3 tüketiciniz varsa, toplam 2 MB/sn'yi paylaşırken hızları kısıtlanır. Enhanced Fan-Out (EFO), kaydı yapılmış her tüketiciye kalıcı bir HTTP/2 gönderme bağlantısı (SubscribeToShard) üzerinden kendisine ayrılmış 2 MB/sn'lik bir okuma hattı sağlar. EFO, tüketici-parça saati başına maliyet ekler ancak okuma rekabetini tamamen ortadan kaldırır.

# Register an Enhanced Fan-Out consumer
aws kinesis register-stream-consumer \
  --stream-arn arn:aws:kinesis:us-east-1:123456789012:stream/iot-telemetry \
  --consumer-name real-time-analytics

# List registered consumers
aws kinesis list-stream-consumers \
  --stream-arn arn:aws:kinesis:us-east-1:123456789012:stream/iot-telemetry

Kinesis Tüketicisi Olarak Lambda

Lambda, bir Event Source Mapping aracılığıyla Kinesis Data Streams ile yerel olarak bütünleşir. Lambda akışı yoklar, kayıt gruplarını okur ve işlevinizi çağırır. BatchSize (1–10.000 kayıt), StartingPosition (en eski kayıt için TRIM_HORIZON, en yeni kayıt için LATEST) ve başarısız grupları bölmek için BisectBatchOnFunctionError ayarlarını yapılandırın. Paralelleştirme Faktörü (1–10), hızlı ilerleyen akışlara ayak uydurmak için Lambda'nın parça başına aynı anda birden fazla çağrı başlatmasını sağlar.

# Create a Lambda event source mapping for Kinesis
aws lambda create-event-source-mapping \
  --function-name ProcessIoTEvents \
  --event-source-arn arn:aws:kinesis:us-east-1:123456789012:stream/iot-telemetry \
  --batch-size 100 \
  --starting-position LATEST \
  --parallelization-factor 5 \
  --bisect-batch-on-function-error true \
  --destination-config '{
    "OnFailure": {
      "Destination": "arn:aws:sqs:us-east-1:123456789012:kinesis-dlq"
    }
  }'

Kinesis İstemci Kitaplığı (KCL)

Kinesis Client Library (KCL), dayanıklı Java (veya MultiLangDaemon aracılığıyla çok dilli) Kinesis tüketicileri oluşturmak için kullanılan bir uygulama çatısıdır. KCL; parçaların listelenmesini, kiraların yönetilmesini (parçaların Worker örnekleri arasında dağıtılmasını), ilerlemenin DynamoDB'ye kaydedilmesini ve parçaların bölünüp birleştirilmesinin düzgün şekilde yürütülmesini yönetir. Her KCL Worker bir veya daha fazla parçayı işler ve KCL, Worker'lar ölçeklendiğinde veya başarısız olduğunda parçaları otomatik olarak yeniden dengeler. Üretim tüketici uygulamalarında KCL, ham SDK yoklamasına tercih edilir.

# KCL stores checkpoints in a DynamoDB table automatically
# Each shard has one row tracking the last successfully processed sequence number
# KCL lease table structure:
# leaseKey (shardId) | checkpoint (sequenceNumber) | leaseOwner (workerId)
#
# To start a KCL application (pseudocode):
# KinesisClientLibConfiguration config = new KinesisClientLibConfiguration(
#   'iot-app', 'iot-telemetry', credentialsProvider, 'worker-1');
# Worker worker = new Worker.Builder().config(config).recordProcessorFactory(factory).build();
# worker.run();

Veri Saklama ve Yeniden Oynatma

Kinesis Data Streams, kayıtları varsayılan olarak 24 saat saklar (ek ücret karşılığında 7 güne veya Long-Term Retention ile 365 güne kadar uzatılabilir). SQS'den farklı olarak, tüketilen kayıtlar tüketimden sonra silinmez; saklama süresi dolana kadar kullanılabilir kalır. Bu sayede birden fazla tüketici aynı kayıtları birbirinden bağımsız olarak okuyabilir ve bir tüketicinin denetim noktasını daha önceki bir sıra numarasına sıfırlayarak yeniden oynatma yapılabilir. Bu özellik, hataları düzeltmek veya yeni hizmetlere geçmiş verileri aktarmak için son derece değerlidir.

# Extend stream retention to 7 days
aws kinesis increase-stream-retention-period \
  --stream-name iot-telemetry \
  --retention-period-hours 168

# Get records from the oldest available record (replay)
SHARD_ITERATOR=$(aws kinesis get-shard-iterator \
  --stream-name iot-telemetry \
  --shard-id shardId-000000000000 \
  --shard-iterator-type TRIM_HORIZON \
  --query 'ShardIterator' --output text)

aws kinesis get-records --shard-iterator $SHARD_ITERATOR --limit 100

On-Demand Kapasite Modu

Kinesis Data Streams iki kapasite modunu destekler. Provisioned mode: Parça sayısını manuel olarak yönetir ve parça saati başına ödeme yaparsınız. On-Demand mode: Kinesis, parça kapasitesini gelen hacme göre otomatik olarak ölçeklendirir (varsayılan olarak 200 MB/sn yazma ve 400 MB/sn okuma kapasitesine kadar) ve yazılan ve alınan verinin GB'ı başına ödeme yaparsınız. İsteğe bağlı mod, parça ölçeklendirmesini yönetmek istemediğiniz değişken veya öngörülemeyen trafik modelleri için idealdir.

# Switch an existing stream to On-Demand mode
aws kinesis update-stream-mode \
  --stream-arn arn:aws:kinesis:us-east-1:123456789012:stream/iot-telemetry \
  --stream-mode-details StreamMode=ON_DEMAND

Parçalar İçinde Sıralama Garantileri

Kinesis, bir parça içinde sıralamayı garanti eder; aynı bölüm anahtarına sahip kayıtlar her zaman aynı parçaya gider ve yazıldıkları sırayla okunur. Ancak parçalar arasında sıralama garantisi yoktur. Uygulamanız tüm kayıtlar arasında genel sıralama gerektiriyorsa tek bir parça kullanın (hacmi 1 MB/sn ile sınırlar) veya sıralamanın yalnızca bir bölüm anahtarı grubu içinde gerekli olacağı şekilde yeniden tasarlayın (örneğin cihaz başına sıralama). Bu, SQS FIFO'nun katı tekilleştirme ve sıralama sağladığı durumla karşılaştırıldığında sınavlarda sıkça sorulan bir ayrımdır.

Güvenlik: Şifreleme ve VPC

Kinesis Data Streams, sunucu tarafı şifreleme etkinleştirildiğinde kayıtları AWS KMS (CMK veya AWS tarafından yönetilen anahtar) kullanarak sunucu tarafında bekleme durumunda şifreler. Aktarım halindeki tüm veriler TLS ile şifrelenir. VPC içinde çalışan ve akış verilerini genel internet üzerinden göndermemesi gereken uygulamalar için Kinesis'e yönelik bir VPC Interface Endpoint (PrivateLink) kullanın; böylece trafik tamamen AWS ağ omurgası içinde kalır. Bu, düzenlemelere tabi iş yükleri için önemlidir.

# Enable server-side encryption on a Kinesis stream
aws kinesis start-stream-encryption \
  --stream-name iot-telemetry \
  --encryption-type KMS \
  --key-id arn:aws:kms:us-east-1:123456789012:key/mrk-abc123

Kinesis Data Streams ve SQS ile Kafka Karşılaştırması

SAA-C03 sınavı için Kinesis Data Streams'i alternatifleriyle karşılaştırın. Kinesis ve SQS: Kinesis, bir parça içindeki sıralamayı korur ve birden fazla tüketicinin aynı verileri okumasını destekler; SQS ise iletileri tüketildikten sonra siler. Kinesis ve MSK (Kafka): MSK, yönetilen Apache Kafka'dır; Kafka protokolü uyumluluğuna, gelişmiş konu yapılandırmalarına ihtiyaç duyduğunuzda veya şirket içi Kafka'dan geçiş yaptığınızda kullanın. AWS ile yerel akış ve Lambda, Firehose ve Flink ile daha sıkı bütünleşme için Kinesis'i kullanın. Soruda özellikle Kafka veya Kafka uyumluluğu gereksinimleri belirtilmedikçe Kinesis'i seçin.

Hızlı Kontrol

Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: Kinesis Data Streams, varsayılan 24 saatlik saklama süresi ve yeniden oynatma özelliğiyle parçalara ayrılmış, sıralı ve kalıcı akışlar sağlar, Enhanced Fan-Out, okuma rekabetini ortadan kaldırarak her tüketiciye parça başına ayrılmış 2 MB/sn sağlar ve On-Demand modu, öngörülemeyen trafik için parçaları otomatik olarak ölçeklendirir. Sırada, olay odaklı mimarilerde koreografi ve düzenleme modellerini inceleyeceğiz.

Sıkça Sorulan Sorular

“Gerçek Zamanlı Olay İşleme için Kinesis Data Streams” dersi ücretsiz mi?

Evet — “Gerçek Zamanlı Olay İşleme için Kinesis Data Streams” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.

“Gerçek Zamanlı Olay İşleme için Kinesis Data Streams” dersinde ne öğreneceğim?

Kinesis Data Streams ile yüksek aktarım hızlı olay akışları üretip tüketin, aktarım hızı için parçaları yönetin ve tüketici olarak Lambda'yı kullanın. AWS Solutions Architect ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Gerçek Zamanlı Olay İşleme için Kinesis Data Streams” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AWS Solutions Architect dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. EventBridge: Olay Veri Yolu ve Kurallar
  2. Step Functions: Sunucusuz İş Akışlarını Düzenleme
  3. Gerçek Zamanlı Olay İşleme için Kinesis Data Streams
  4. Koreografi ve Orkestrasyon Örüntüleri
← AWS Solutions Architect Sayfasına Dön