Zephyrnet Logosu

Amazon Kinesis Data Streams isteğe bağlı kapasite modu artık 1 GB/saniye alma kapasitesine kadar ölçeklendiriliyor | Amazon Web Hizmetleri

Tarih:

Amazon Kinesis Veri Akışları akış verilerini her ölçekte yakalamayı, işlemeyi ve depolamayı kolaylaştıran sunucusuz bir veri akışı hizmetidir. Müşteriler daha fazla türde veri toplayıp aktardıkça, değişken ve öngörülemeyen veri trafiğini kaldırabilecek daha basit, esnek veri akışları istediler. Kasım 2021'de Amazon Web Services, isteğe bağlı kapasite modu Dakikada gigabaytlarca yazma ve okuma iş hacmi sunabilen ve veri akışı kapasitesini manuel olarak güncellemenin operasyonel ağrı noktasını azaltmaya yardımcı olan Kinesis Data Streams için. Tek bir tıklama ile yeni bir isteğe bağlı veri akışı oluşturabilir veya mevcut bir veri akışını isteğe bağlı moda dönüştürebilirsiniz ve hiçbir zaman sunucuları, depolamayı veya iş hacmini tedarik etmek ve yönetmek zorunda kalmazsınız. Varsayılan olarak, isteğe bağlı kapasite modu otomatik olarak 200 MB/sn'ye kadar yazma verimini ölçeklendirebilir.

Müşterilerin isteğe bağlı kapasite modunu benimsemesi bizi cesaretlendirdi, ancak müşteriler iş yüklerini ölçeklendirdikçe bazıları 200 MB/sn veri alma sınırına ulaştı ve bir çözüm istedi. Ekip, bu sınırı yükseltmek için müşteri geri bildirimlerinden geriye doğru çalıştı. Mart 2023 itibariyle, Kinesis Data Streams, isteğe bağlı yazma hızı sınırını 1 GB/sn'ye yükseltir200 MB/sn'lik mevcut sınırdan beş kat artış. Bu, tüm kullanım durumlarınız için çalışan gerçekten sunucusuz ve esnek bir veri akışı hizmetine sahip olmak gibidir. Kapasite artışına ihtiyacınız varsa, iletişime geçebilirsiniz. AWS Desteği isteğe bağlı akışların, istenen her hesap için 1 GB/sn yazma hızına kadar ölçeklenmesini sağlamak için. Tedarik edilen kaynaklar yerine tüketilen aktarım hızı için ödeme yaparsınız, bu da maliyetleri ve performansı dengelemeyi kolaylaştırır. Genel olarak, veri hacminiz tahmin edilemeyecek şekilde artabilirse veya parça sayısını yönetmek istemiyorsanız isteğe bağlı akışları kullanın.

Bu gönderide, verimli bir veri akışı çözümü oluşturmak için Kinesis Data Streams isteğe bağlı ölçeklendirmeyi ve en iyi uygulamaları nasıl kullanacağımızı keşfedeceğiz. Yazma hızı istisnalarını önlemek ve Kinesis Data Streams'in alma kapasitesini isteğe bağlı kapasite modunda 1 GB/sn'ye ölçeklendirmek için farklı senaryoları tartışıyoruz.

Kinesis Data Streams isteğe bağlı ölçeklendirme

Parça, Kinesis Data Streams'in temel aktarım hızı birimi olarak hizmet eder. Bir parça, yazma için 1 MB/sn ve 1,000 kayıt/sn ve okumalar için 2 MB/sn destekler. Parça sınırları, öngörülebilir performans sağlayarak son derece güvenilir bir veri akışı iş akışı tasarlamayı ve çalıştırmayı kolaylaştırır. İsteğe bağlı kapasite modunda, ölçeklendirme bireysel parça düzeyinde gerçekleşir. Ortalama alma parça kullanımı 50 dakika içinde %0.5'ye (500 MB/sn veya 1 kayıt/sn) ulaştığında, parça iki parçaya bölünür. Bir bölüm anahtarı olarak rasgele değerler kullanırsanız, akışın tüm parçaları eşit trafiğe sahip olur ve bunlar aynı anda ölçeklenir. Bölüm anahtarı olarak işletmeye özel bir anahtar kullanırsanız, parçaların trafiği düzensiz olacaktır. Bu senaryoda, yalnızca ortalama %50 kullanımı aşan parçalar ölçeklendirilecektir. Ölçeklendirilen parça sayısına bağlı olarak, parçaları bölmek 15 dakika kadar sürer.

İsteğe bağlı kapasite modunda yeni bir Kinesis veri akışı oluşturduğumuzda, varsayılan olarak Kinesis Data Streams, 4 MB/s yazma ve 8 MB/s okuma hızı sağlayan dört parça sağlar. İş yükü arttıkça Kinesis Data Streams, parça düzeyinde alma verimini izleyerek akıştaki parça sayısını artırır. İsteğe bağlı kapasite modunda 4 MB/sn'lik varsayılan alma aktarım hızı ve parça düzeyinde ölçeklendirme, çoğu kullanım durumunda işe yarar. Ancak, bazı özel senaryolarda, üreticiler WriteThroughputExceeded ve Rate Exceeded isteğe bağlı kapasite modunda bile hatalar. Aşağıdaki bölümlerde bu senaryolardan birkaçını ve bu hatalardan kaçınma stratejilerini tartışacağız.

kullanarak kayıt şablonları oluşturup kaydedebilir ve verileri kolayca Kinesis Data Streams'e gönderebilirsiniz. Amazon Kinesis Veri Oluşturucu (KDG) veri akışı çözümünü test etmek için. Alternatif olarak, modern yük testi çerçevesini de kullanabilirsiniz. keçiboynuzu büyük ölçekli Kinesis Veri Akışları yük testi yapmak için. Bu gönderi için, farklı kullanım durumlarımız için Kinesis Data Streams'te mesajlar üretmek ve almak için Locust aracını kullanıyoruz.

Senaryo 1: 4 MB/sn'den daha büyük bir temel alma verimi gereklidir

Bu senaryoyu simüle etmek için aşağıdakileri çalıştırın AWS Komut Satırı Arayüzü oluşturmak için (AWS CLI) komutu kds-od-default-shards isteğe bağlı kapasite modunda veri akışı:

aws kinesis create-stream --stream-name kds-od-default-shards --stream-mode-details StreamMode=ON_DEMAND --region us-east-1

Zaman kds-od-default-shards veri akışı etkin, veri akışındaki parça sayısını kontrol etmek için aşağıdaki AWS CLI komutunu çalıştırın:

aws kinesis describe-stream-summary --stream-name kds-od-default-shards --region us-east-1

OpenShardCount değerinin 4 olduğunu gözlemleyebilirsiniz, yani kds-od-default-shards veri akışının alım kapasitesi 4 MB/sn'dir.

Ardından, temeli yaklaşık 25 MB/sn'lik kayıtlara ayarlamak için Locust aracını kullanıyoruz. Aşağıda gösterildiği gibi Amazon Bulut İzleme metrik grafiği, kayıtlar ilk birkaç dakika için kısıtlanıyor. Sonra kds-od-default-shards veri akışı, parça sayısını 25 MB/sn'lik alım verimini destekleyecek şekilde ölçeklendirir ve kayıtların kısıtlanması durdurulur. Ayrıca yeniden çalıştırabilirsiniz describe-stream-summary Veri akışındaki artan parça sayısını kontrol etmek için AWS CLI komutu.

BDB-3047-senaryo-1-gelen-veri

BDB-3047-senaryo-1-kayıt-kısma

Alım hızı temel seviyemizi (25 MB/sn) önceden bildiğimiz ve herhangi bir yazma kısıtlaması gözlemlemek istemediğimiz bir senaryoda, parça sayısını (30) belirterek tedarik modunda bir akış oluşturabiliriz. aşağıdaki AWS CLI komutunda gösterildiği gibi (sildiğinizden emin olun) kds-od-default-shards aşağıdaki komutu çalıştırmadan önce Kinesis Data Streams konsolundan manuel olarak):

aws kinesis create-stream --stream-name kds-od-default-shards --stream-mode-details StreamMode=PROVISIONED --shard-count 30 --region us-east-1

Zaman kds-od-default-shards veri akışı etkinse, veri akışının kapasite modunu isteğe bağlı moda dönüştürmek için aşağıdaki AWS CLI komutunu çalıştırın:

aws kinesis update-stream-mode --stream-arn arn:aws:kinesis:us-east-1:<AccountId>:stream/kds-od-default-shards --stream-mode-details StreamMode=ON_DEMAND --region us-east-1

Ardından, 25 MB/sn'lik kayıtları şu adrese gönderiyoruz: kds-od-default-shards veri akışı. Aşağıdaki CloudWatch metrik grafiğinde gösterildiği gibi, yazma kısıtlaması gözlemleyemeyiz ve kds-od-default-shards veri akışı, alım hacmindeki artışın üstesinden gelmek için parça sayısını ölçeklendirir.

BDB-3047-senaryo-1-gelen-veri1

BDB-3047-senaryo-1-kayıt-kısma1

Veri akışına bir süre 25 MB/s trafik gönderdikten sonra, OpenShardCount değerinin artık 30'un üzerine çıktığını görmek için aşağıdaki AWS CLI komutunu çalıştırabiliriz:

aws kinesis describe-stream-summary --stream-name kds-od-default-shards --region us-east-1

Senaryo 2: Akıştaki parça sayısından daha fazla alma verimi gerektiren önemli bir alım artışı bekleniyor

Senaryoyu simüle etmek için aşağıdaki AWS CLI komutunu çalıştırın. kds-od-significant-spike isteğe bağlı kapasite modunda veri akışı:

aws kinesis create-stream --stream-name kds-od-significant-spike --stream-mode-details StreamMode=ON_DEMAND --region us-east-1

Daha önce belirtildiği gibi, varsayılan olarak, kds-od-significant-spike veri akışı, isteğe bağlı modda oluşturulduğundan, başlangıçta dört parçaya sahip olacaktır. Veri akışı etkin olduğunda, başlangıçta 4 MB/sn veri aktarım hızı göndeririz ve veri aktarım hızını her 30-50 dakikada bir %5-10 oranında artırırız. Aşağıdaki CloudWatch metrik grafiğinde gösterildiği gibi, kds-od-significant-spike veri akışı, alım hacmindeki artışın üstesinden gelmek için parça sayısını ölçeklendirir.

Yaklaşık 15 dakika sonra, OpenShardCount değerini (x) bulmak için aşağıdaki AWS CLI komutunu çalıştırın. kds-od-significant-spike veri akışı. Ardından, veri akışında 2–2 dakika boyunca (x * 3) MB/sn alım verimini gönderin ve alım verimini önceki seviyeye düşürün:

aws kinesis describe-stream-summary --stream-name kds-od-significant-spike --region us-east-1

Aşağıdaki CloudWatch ölçüm grafiğinde gösterildiği gibi, kayıtlar birkaç dakikalığına kısıtlanıyor ve ardından kısıtlama ortadan kalkıyor.

BDB-3047-senaryo-2-gelen-veri

BDB-3047-senaryo-2-kayıt-kısma

Tipik olarak, alışveriş tatilleri ve ürün lansmanları gibi planlanmış etkinlikleri yürütürken önemli bir artış senaryosuyla karşılaşırız. Bu tür senaryoların üstesinden gelmek için, kapasite modunu talep üzerine modundan tedarik edilene proaktif olarak değiştirebiliriz. Parça sayısını yapılandırabilir ve tahmin ettiğimiz alım kapasitesini seçebiliriz. Tedarik edilen kapasite modunda parça sayısını arzu ettiğimiz en yüksek kapasiteye başarıyla ölçeklendirdikten sonra, kapasite modunu tekrar isteğe bağlı moda değiştirebiliriz.

Senaryo 3: Tek bir bölüm anahtarı, 1 MB/sn'den daha fazla hız vermeye başlar

Bölme anahtarları, kayıtları bir akışın farklı parçalarına ayırmak ve yönlendirmek için kullanılır. Veri akışına veri eklerken veri üreticisi tarafından bir bölüm anahtarı belirtilir. Örneğin, iki parçalı (parça 1 ve parça 2) bir akışımız olduğunu varsayalım. Veri üreticisini iki bölüm anahtarı (A anahtarı ve B anahtarı) kullanacak şekilde yapılandırabiliriz, böylece A anahtarına sahip tüm kayıtlar parça 1'e ve B anahtarına sahip tüm kayıtlar parça 2'ye eklenir. Bir bölüm anahtarı seçmek çok önemlidir karar vermeli ve kayıtların akışın tüm parçaları arasında eşit dağılımını sağlamak için bölüm anahtarını dikkatli bir şekilde seçmeliyiz. Tek bir bölüm anahtarı A'ya bağlı iletiler, tek bir parçaya (parça 1) gönderilir ve herhangi bir durumda, tek bir bölüm anahtarı A'ya bağlı iletiler, farklı parçalar arasında dağıtılamaz. Daha önce de belirtildiği gibi, varsayılan olarak, bir parça yazma için 1 MB/sn ve 1,000 kayıt/sn destekler ve belirli bir bölüm anahtarı için 1 MB/sn'den fazlasını zorlamaya çalıştığımız uç durum senaryosuyla karşılaşabiliriz. Bu senaryoda, üreticiler kısıtlamalar yaşamaya ve süresiz olarak yeniden denemeye devam edecek.

Senaryoyu simüle etmek için aşağıdaki AWS CLI komutunu çalıştırın. kds-od-partition-key-throttle isteğe bağlı kapasite modunda veri akışı:

aws kinesis create-stream --stream-name kds-od-partition-key-throttle --stream-mode-details StreamMode=ON_DEMAND --region us-east-1

Daha önce belirtildiği gibi, varsayılan olarak, bu akış isteğe bağlı modda oluşturulduğundan, veri akışı başlangıçta dört parçaya sahip olacaktır. Veri akışı aktif olduğunda, belirli bölüm anahtarı A için sürekli olarak 1.5 MB/s alma verimi gönderiyoruz. Aşağıdaki CloudWatch metrik grafiğinde gösterildiği gibi, 1.5 MB/s gönderiyor olsak bile tek bir parçadan azaltmanın devam ettiğini gözlemleyebiliriz. alma verimi ve kds-od-partition-key-throttle veri akışının toplam alım kapasitesi 4 MB/sn'dir.

BDB-3047-senaryo-3-gelen-veri

BDB-3047-senaryo-3-kayıt-kısma

Bu senaryodan kaçınmak için, bölüm anahtarımızı dikkatli bir şekilde seçmeli ve bu özel bölüm anahtarının veri akışında sürekli olarak 1 MB/sn'den fazla alma verimi göndermeyeceğinden emin olmalıyız.

İsteğe bağlı kapasite modunda Kinesis Data Streams'in alma kapasitesini 1 GB/sn'ye ölçeklendirin

Test etmek için, isteğe bağlı kapasite modunda Kinesis Data Streams'e yaklaşık 100 MB/sn temel alma aktarım hızıyla başlıyoruz, ardından Locust yük testi aracını kullanarak alma aktarım hızı oranını her 30-50 dakikada bir %5-10 artırıyoruz.

Senaryoyu kurmak için önce kds-od-1gb-stream sağlanan kapasite modunda veri akışı sağlayın ve sağlanan parçalar alanı için 120 değerini sağlayın:

aws kinesis create-stream --stream-name kds-od-1gb-stream --stream-mode-details StreamMode=PROVISIONED --shard-count 120 --region us-east-1

Zaman kds-od-1gb-stream veri akışı etkinse, kapasite modunu aşağıdaki kodda gösterildiği gibi isteğe bağlı olarak değiştirin. Kapasite modunu tedarik edilenden isteğe bağlı olarak değiştirdiğimizde, isteğe bağlı kapasite modunda bile veri akışı için parça sayısı (120) aynı kalır.

aws kinesis update-stream-mode --stream-arn arn:aws:kinesis:us-east-1:<AccountId>:stream/kds-od-1gb-stream --stream-mode-details StreamMode=ON_DEMAND --region us-east-1

Zaman kds-od-1gb-stream veri akışı isteğe bağlı modda, deneyi başlatın. Locust aracını kullanarak yaklaşık 100 MB/sn temel alım verimi gönderiyoruz ve her 30-50 dakikada bir alım verimini %5-10 artırıyoruz. Aşağıdaki CloudWatch metrik grafiğinde gösterildiği gibi, kds-od-1gb-stream veri akışı, isteğe bağlı kapasite modunda sorunsuz bir şekilde 1 GB/sn'ye ölçeklendi. Veri akışı talep üzerine kapasite modunda ölçeklenirken üreticilerin herhangi bir yazma kısıtlamasıyla karşılaşmadıklarını da gözlemleyebiliyoruz.

BDB-3047-ölçekten 1 GB'a

Temizlemek

Devam eden maliyetlerden kaçınmak için Kinesis Data Streams konsolunu kullanarak bu gönderinin bir parçası olarak oluşturduğunuz tüm veri akışlarını silin.

Sonuç

Bu gönderi, en iyi uygulamaları kullanan birkaç senaryoyla Kinesis Data Streams'in isteğe bağlı ölçeklendirme politikasını gösterdi ve isteğe bağlı kapasite modunda alma kapasitesinin 1 GB/sn'ye nasıl ölçeklendirileceğini gösterdi. Önceki sınır olan 200 MB/sn'den beş kat daha büyük bir isteğe bağlı yazma aktarım hızı sınırına sahip olabilirsiniz. Bilinmeyen iş yükleriyle yeni veri akışları oluşturuyorsanız, öngörülemeyen uygulama trafiğiniz varsa veya kapasiteyi yönetmemeyi tercih ediyorsanız isteğe bağlı modu seçin. İsteğe bağlı ve sağlanan kapasite modları arasında 24 saatlik hareketli dönem başına iki kez geçiş yapabilirsiniz. Lütfen yorumlar bölümünde herhangi bir geri bildirim bırakın.


Yazarlar Hakkında

Nihar Şet Amazon Web Services'ta Amazon Kinesis Data Streams ekibinde Kıdemli Ürün Yöneticisidir. Karmaşık müşteri sorunlarını çözen ve müşterilerin iş hedeflerine ulaşmasını sağlayan sezgisel ürün deneyimleri geliştirme konusunda tutkulu.

Pratik Patel Kıdemli Teknik Hesap Yöneticisi ve akış analitiği uzmanıdır. AWS müşterileriyle birlikte çalışır ve en iyi uygulamaları kullanarak çözümlerin planlanması ve oluşturulmasına yardımcı olmak ve müşterilerin AWS ortamlarını proaktif olarak operasyonel olarak sağlıklı tutmak için sürekli destek ve teknik rehberlik sağlar.

Nisha Dektawala İş Ortağı Çözümleri Mimarı ve veri analitiği uzmanıdır. Well-Architected yenilikçi endüstri çözümlerinin oluşturulmasında teknik rehberlik ve destek sağlayan güvenilir danışmanları olarak küresel danışmanlık ortaklarıyla birlikte çalışır.

spot_img

En Son İstihbarat

spot_img