Elinize sağlık çok faydalı yayın. birkaç sorum olucak. Stream lerin state nasıl kurunuyor. Ayrıca command ve(ya) event ordering garantisi nasıl sağlanıyor. Yani bir variant'ın içindeki listing ile ilgili 2 farklı değişim geldiğinde önceliğinin garantisi sağlanıyor mu. Teşekkürler
@TrendyolTech Жыл бұрын
Merhaba umarım cevaplar açıklayıcı olmuştur farklı bir soru daha olur ise buradan yada linkedin@furkaandogan üzerinden sorabilirsiniz. 1 - Stream sorusu için Stream ler için temelde Created, InProgress ve Completed state lerini düşünebiliriz. Bir stream state i completed değil ve son 15dk dır update almamış ise bizim için yarıda kalmış demektir bunları scheduler ile takip edip tekrardan başlatıyoruz Bir stream isteği için genel adımlar olarak şunları yapıyoruz; - Gelen istek özelinde uniq bir hash oluşturuyoruz (aynı request için hep aynı hash oluşacaktır) Bu hash i stream iş parçacıklarında grouping için kullanıyoruz - Stream isteğini iş parçacıklarına böl parça için özel hash oluştur created state de store et ve command ı queue gönder - Stream iş parçacığı başladığında state ini InProgress çekip her bir process de last position (en son gönderdiği content sırası) güncelle - Stream iş parçacağı bittiğinde state ini Completed çekip güncelle - Stream request ile oluşturulan (grouping) hash ile tüm iş parçacıkları bitmiş ise stream in tamamen bittiğini bildir 2 - Listing event ordering için Burada yaptığımız işlem listing bloklama işlemi. Bir listing birden fazla kuralla bloklanabilir. Bu kuralların işlenme sırası önemli değil. Her durumda listingin satılabilirliği kapanacak. O yüzden kuralların sıralı işlenmesiyle alakalı bir endişemiz yok.