Olay Teslim Garantileri (Azure Stream Analytics)
Azure Stream Analytics sorgu dili, olay akışları üzerinde karmaşık hesaplamalar yapmak için SQL söz dizimini genişletir. Stream Analytics ile Olay Teslimi ile ilgili tartışılması gereken bazı kavramlar vardır:
- Tam olarak bir kez işleme
- Tam olarak bir kez teslim
- Yinelenen kayıtlar
Aşağıda ayrıntılarıyla açıklanan bu kavramlara ek olarak, veri kaybı yaşanmadığından emin olmak için işin başlangıç seçeneğini de göz önünde bulundurmak önemlidir.
Tam olarak bir kez işleme
Tam olarak bir kez işleme garantisi, bir dizi giriş verildikten sonra sistemin her zaman aynı sonuçları döndürdüğü anlamına gelir. Bu, yinelenebilirlik için çok önemlidir ve işin yeniden başlatılması durumunda bile veya aynı girişte paralel olarak çalışan birden çok işte geçerlidir. Azure Stream Analytics tam olarak bir kez işlemeyi garanti eder.
Tam olarak bir kez teslim
Tam olarak bir kez teslim garantisi, tam olarak bir kez işlemeden gelen tüm çıkışların tam olarak bir kez çıkış havuzuna teslim edilmesi anlamına gelir, bu nedenle yinelenen çıkış yoktur. Bunun için çıkış bağdaştırıcısındaki işlem özelliklerinin elde edilmesi gerekir.
Azure Stream Analytics, çıkış havuzlarına en az bir kez teslimi garanti eder ve bu da tüm sonuçların çıkışını garanti eder, ancak yinelenen sonuçlar oluşabilir. Ancak Azure Cosmos DB veya Azure SQL gibi çeşitli çıkışlarla tam olarak bir kez teslim yapılabilir.
Yinelenen kayıtlar
En az bir kez teslim garantisi nedeniyle Stream Analytics işi çalıştırıldığında, çıkış verilerinde zaman zaman yinelenen kayıtlar fark edilebilir. Azure Stream Analytics çıkış bağdaştırıcıları çıkış olaylarını işlem yoluyla yazmadığından bu yinelenen kayıtlar beklenir. Bu 'yinelenen kayıt' senaryosu, aşağıdaki koşullardan biri oluşursa sonuçlanabilir:
- İş çalışırken Azure örneği yükseltilir
- Stream Analytics işi yükseltildi veya iş çıkışına bağlantı veya güvenilirlikle ilgili bir sorun oluştu
- İşi çalıştıran Azure örneğinde kesinti var
- Stream Analytics işi , son durdurulduğunda seçeneğiyle başlatılır
Çıkış olaylarının aşağı akış tüketicisinin olayların mantıksal kimliğini kullanarak olayları kaldırması gerekir. Örneğin, olayları atlayan bir pencerede gruplara göre toplanıyorsanız, olayın mantıksal kimliği gruplar ve atlayan pencerenin bitiş saatidir. Geçiş sorgusu çalıştırıyorsanız, yinelenenleri çözmek için olayda benzersiz bir kimlik taşımanız gerekebilir.
Azure Stream Analytics ile tam bir kez teslimi destekleyen çıkış
Azure Cosmos DB
Azure Cosmos DB'yi kullanan Azure Stream Analytics, tam olarak bir kez teslimi garanti eder. Azure Stream Analytics upsert kullandığından, kullanıcı herhangi bir eyleme ihtiyaç duyulmaz. Azure Cosmos DB'ye Azure Stream Analytics çıkışı hakkında daha fazla bilgi edinin.
SQL
SQL çıkışını kullanırken, aşağıdaki gereksinimler karşılanırsa kullanıcılar tam olarak bir kez teslim gerçekleştirebilir:
- tüm çıkış akış olaylarının doğal bir anahtarı vardır; örneğin, bir alan veya alan birleşimi tarafından benzersiz olarak tanımlanabilir.
- çıkış SQL tablosu, çıkış olaylarının doğal anahtarı kullanılarak oluşturulmuş benzersiz bir kısıtlamaya (veya birincil anahtara) sahiptir.
Sql çıkışı, benzersiz bir kısıtlama ihlaline neden olan olayları atlayarak tabloya yerleştirilen kısıtlamaları karşıladığı için yinelemeleri önlemek için yeterlidir.
Azure Tablosu
Bir Azure Depolama Tablosundaki tüm varlıklar, ve PartitionKey
alanlarının birleştirilerek RowKey
benzersiz olarak tanımlanır. Azure Stream Analytics varlıkları yukarı ekler, bu nedenle bir tablo varlığının değeri ilgili bileşime sahip RowKey
/PartitionKey
en son çıkış olayı olur. Bu nedenle, tam olarak bir kez teslim elde etmek için her çıkış olayının benzersiz RowKey
/PartitionKey
bir bileşimi olduğundan emin olun. Bu yapılırsa, yinelenen olaylar önceki sürümlerin üzerine yazılır. (Varlık için son değiştirme zamanı olan sistem tanımlı Timestamp
alan bu durumda da değişir.)