Uygulamam yoğun şekilde AWS hizmetlerine dayanıyor ve bunlara dayanarak en uygun çözümü arıyorum. Web Uygulaması, belirli bir miktarda kaynağın gerçekleştirilmesini gerektiren, zamanlanmış bir işi tetikler (sonsuza kadar tekrarlanır). Görevin tek koşulu normalde maksimum 1 dakika sürecektir.AWS hizmetlerini kullanarak uzun süren görevleri zamanlama
Güncel fikir, SQS ve yumurtlama çalışanlarını sıra boyutuna bağlı olarak EC2 örneklerinde geçirmektir. (bu bölüm az ya da çok açıktır) Ancak, belirli aralıklarla işleri gerçekten tetiklemek için uygun bir çözüm bulmaya çalışıyorum. 10000 iş ile uğraştığımızı varsayalım. Yani bir zamanlayıcı 10k cronjobs (işin kendisi oldukça basit, sadece SQS üzerinden iş tanımını geçerek) çalıştırmak için çılgın bir fikir gibi görünüyor. Öyleyse asıl soru, programlayıcıyı otomatik olarak nasıl kaydeder (zamanlayıcı yeniden başlatıldığında, yeni örnek oluşturulurken verilen senaryolar vb.)? Veya programlayıcı bir uygulama olarak gereksizdir ve AWS Lambda işlevlerine (veya zamanlamayı sağlayan diğer hizmetlere) güvenmek akıllıca olur mu? Lambda fonksiyonlarının kullanılması ile ilgili problem belirli bir sınırlamadır ve tek fonksiyon tarafından sağlanan 128MB bellek aslında çok fazladır (20MB, fazlasıyla yeterlidir)
Alternatif olarak, çalışanın kendisi belirli bir süre bekleyebilir ve bildirebilir. Zamanlayıcı, işi bir kez daha tetiklemelidir. Frekans 1 saat ise Diyelim ki:
1. Scheduler sends job to worker 1
2. Worker 1 performs the job and after one hour sends it back to Scheduler
3. Scheduler sends the job again
burada ancak o işçinin olasılığı hangi olur hafif bir zamanlayıcı elde etmek çalışıyorum
Alt Hattı ölçekli olsun edilecektir edilir sorunu. Otomatik ölçeklendirme gerektirmez ve yalnızca iş tanımlarını iletmek için bir merkez görevi görür. Ve kesinlikle servis yeniden başlatıldığında daraltılmamalıdır.
"uzun çalışan görevler" (İşiniz bittiğinde S3 dışına işi silmek için unutmayın) .. "maksimum 1 dk sürer": öneri için/ –