StackOverflow'ta ilginç bir problemle karşı karşıyayız.
Bir sürü küçük "yakında yapılması gerekenler" görevimiz var. Bir örnek "İlgili Sorular" listelerini güncelliyor. Geçmişte yaptığımız şey, bu görevleri bazı kullanıcıların sayfa yüklerine geri döndürmek.
Bu asla ideal değildi, ama gerçekten farkedilmedi. Şimdi SO, 1.000.000 soru işaretini geçti, bu şanssız kullanıcılar bunu hissetmeye başlıyor.
Doğal çözüm, bu görevleri aslında arka plana itmek. Bunu yapmanın iki geniş yolu var.
1. Özel bir iş parçacığı havuzu / Work-Queue olarak IIS'de
Temel olarak, bir kaç ( ThreadPool olmayan , IIS ile çakışmayacak şekilde) konuları açıyoruz ve Funcs'a attığımız bazı koleksiyonlara hizmet veriyoruz .
Buradaki en büyük profesyonel sadelik. Herhangi bir şeyi paylaşmak konusunda endişelenmek zorunda değiliz, ne de bazı dış hizmetlerin açık ve yanıtlı olduğundan emin olmak zorunda değiliz.
Ayrıca tüm ortak kodumuza da erişebiliyoruz.
Con, arka plan iplikleri kullanmamamız gerektiğidir. Benim tanıdığım itirazların tümü (eğer ThreadPool kullanıyorsanız) açlıktan ölmek üzere olan ve rasgele (AppPool geri dönüşümü nedeniyle) ölen iplikler etrafında toplanıyor.
Rastgele iş parçacığı ölümünü bir sorun haline getirmek için mevcut bir altyapımız var (temelde bir görevi saptamak mümkün) ve iş parçacığı sayısını sınırlamak da (ve ThreadPool olmayan iş parçacıklarını kullanmak) da zor değil.
Burada gerçekten adreslenmediği için StackOverflow'a taşındı .
2. Bir Hizmet Olarak
Bazı üçüncü taraf çözümleri veya özel bir çözüm.
Temel olarak, süreç sınırını aşarak bazı hizmetlere bir görev verdik ve unut gitsin. Muhtemelen bazı kodları ham SQL + a bağlantı dizgisine bağladık ya da bunlarla sınırlıyız.
Profesyonel, bunu yapmanın "doğru yolu".
Dezavantajları ne yapabileceğimiz konusunda çok kısıtlı olduğumuz ya da bu hizmeti kod tabanımızla senkronize etmek için bir sistem üzerinde çalışmak zorunda kalacağız. Ayrıca, "IIS'de" seçeneğiyle ücretsiz olarak alacağımız tüm izleme ve hata günlüğü kayıtlarımızı bir şekilde bağlamamız gerekecek.
Hizmet anlayışının başka faydaları veya sorunları var mı?
Özet olarak, 1. yaklaşımı işlenemez hale getiren, öngörülemeyen ve aşılmaz bir problem var mı ve eğer öyleyse, 2. yaklaşımı aramamız gereken iyi üçüncü taraf hizmetleri var mı?