Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kılavuzda, arka plan işi geliştirme önerileri açıklanmaktadır. Arka plan işleri, kullanıcı etkileşimi gerekmeden otomatik olarak çalıştırılır. Birçok uygulama, kullanıcı arabiriminden bağımsız olarak çalışan arka plan işleri gerektirir.
Arka plan işlerine bazı örnekler arasında, toplu işlemler, yoğun işleme görevleri ve iş akışları gibi uzun süren işlemler yer alır. Uygulama işi başlatır ve kullanıcılardan gelen etkileşimli istekleri işler. Örneğin, bir uygulamanın kullanıcıların karşıya yüklediği görüntülerin küçük resimlerini oluşturması gerekiyorsa, küçük resim oluşturmak ve depolama alanına kaydetmek için bir arka plan işi gerçekleştirilebilir. Kullanıcının işlemin tamamlanmasını beklemesi gerekmez. Başka bir örnek olarak, müşteri siparişi işleyen bir arka plan iş akışı başlatan bir sipariş verir. Arka plan işi çalışırken müşteri web uygulamasına göz atmaya devam eder. Arka plan işi tamamlandıktan sonra depolanan sipariş verilerini güncelleştirir ve siparişi onaylamak için müşteriye bir e-posta gönderir.
Kullanılabilirliği artıran ve etkileşimli yanıt süresini kısaltan, uygulama kullanıcı arabirimindeki yükü en aza indirmeye yardımcı olan arka plan işleri.
Arka plan işi olarak hangi görevin atanyacağını seçmek için, görevin kullanıcı etkileşimi olmadan çalışıp çalışmadığını ve kullanıcı arabiriminin görevin tamamlanmasını beklemesi gerekip gerekmediğini düşünün. Kullanıcının veya kullanıcı arabiriminin çalışırken beklemesini gerektiren görevler genellikle uygun arka plan işleri değildir.
Arka plan işleri gereksinimini değerlendirme
Arka plan işlerine örnek olarak şunlar verilebilir:
Matematiksel hesaplamalar veya yapısal model analizi gibi YOĞUN CPU kullanan işler.
Bir dizi depolama işlemi çalıştırma veya dosyaları dizine alma gibi G/Ç yoğunluklu işler.
Gecelik veri güncellemeleri veya zamanlanmış işleme gibi toplu iş görevleri.
Siparişin yerine getirilmesi veya servislerin ve sistemlerin sağlanması gibi uzun süreli iş akışları.
Görevi işleme için daha güvenli bir yere aktaran hassas veri işleme. Örneğin, bir web uygulaması içinde hassas verileri işlemek istemeyebilirsiniz. Bunun yerine, verileri korumalı depolamaya erişimi olan ayrı bir arka plan işlemine aktarmak için Gatekeeper deseni gibi bir desen kullanabilirsiniz.
Doğru tetikleyicileri seçme
Şu işlemlerle arka plan işlerini başlatın:
Olay temelli tetikleyiciler: Genellikle bir kullanıcı eylemi veya iş akışındaki bir adım olan bir olay görevi tetikler.
Zamanlama destekli tetikleyiciler: Süreölçer esasındaki bir zamanlama görevi çağırır. İş yinelenen aralıkla veya tek çalışma için zamanlanabilir.
Olay temelli tetikleyiciler
Bir eylem, arka plan görevini başlatan, olay odaklı bir eylemi tetikler. Olay temelli tetikleyici örnekleri şunlardır:
Kullanıcı arabirimi veya farklı bir iş, WebQueue-Worker mimari stilinde açıklandığı gibi bir iletiyi kuyruğa yerleştirir. İleti, sipariş veren bir müşteri gibi daha önce gerçekleştirilen bir eylem hakkındaki verileri içerir. Arka plan işi bu kuyruğu izler ve yeni bir iletinin gelişini algılar. Mesajı okur ve arka plan işlemi için giriş olarak mesajın verilerini kullanır. Bu desene zaman uyumsuz ileti tabanlı iletişim adı verilir.
Kullanıcı arabirimi veya farklı bir iş, depolama alanında bulunan bir değeri kaydeder veya güncelleştirir. Arka plan işi depolamayı izler ve değişiklikleri algılar. Verileri okur ve onu arka plan işinin girdisi olarak kullanır.
Kullanıcı arabirimi veya farklı bir iş HTTPS URI'sı veya web hizmeti olarak açıkta olan bir API gibi bir uç nokta istekte bulunur. İsteğin bir parçası olarak, kullanıcı arabirimi veya iş, arka plan görevinin gerektirdiği verileri aktarır. Uç nokta veya web hizmeti, verileri girişi olarak kullanan arka plan görevini çağırır.
Olay odaklı çağırmaya uygun diğer görevlere örnek olarak görüntü işleme, iş akışları, uzak hizmetlere bilgi gönderme, e-posta iletileri gönderme ve çok kiracılı uygulamalarda yeni kullanıcılar sağlama verilebilir.
Zamanlama temelli tetikleyiciler
Bir zamanlayıcı, arka plan görevini başlatan, zamanlama odaklı bir eylemi tetikler. Zamanlama temelli tetikleyici örnekleri şunlardır:
Uygulama içinde veya uygulamanın işletim sisteminin bir parçası olarak yerel olarak çalışan bir zamanlayıcı düzenli olarak bir arka plan görevi çağırır.
Azure Logic Apps gibi farklı bir uygulamada çalışan zamanlayıcı düzenli olarak bir API'ye veya web hizmetine istek gönderir. API veya web hizmeti arka plan görevini çağırır.
Ayrı bir işlem veya uygulama, bir zaman gecikmesi sonrasında veya belirli bir zamanda arka plan görevini çağıran bir süreölçer başlatır.
Zamanlama temelli çağırmaya uygun diğer görevlere örnek olarak toplu işlem yordamları (müşterilerin son davranışlarına göre ilgili ürün listelerini güncelleştirme gibi), rutin veri işleme görevleri (dizinleri güncelleştirme veya birikmiş sonuçlar oluşturma gibi), günlük raporlar için veri analizi, veri saklama temizleme ve veri tutarlılığı denetimleri verilebilir.
Tek örnek olarak çalışması gereken zamanlama temelli bir görev kullanıyorsanız, aşağıdaki noktaları gözden geçirin:
Windows zamanlanmış görevlerini kullanan bir sanal makine (VM) gibi zamanlayıcıyı çalıştıran işlem örneği ölçeklendirilirse, zamanlayıcının birden çok örneğini çalıştırmış olursunuz. Zamanlayıcının birden çok örneği, görevin birden çok örneğini başlatabilir. Daha fazla bilgi için bkz. Yazılım sistemlerinde idempotent ne anlama gelir?
Görevler zamanlayıcı olayları arasındaki süreden daha uzun çalışıyorsa, zamanlayıcı önceki görev çalışırken görevin başka bir örneğini başlatabilir.
verileri iş yüküne döndürme
Arka plan işleri, kullanıcı arabiriminden veya arka plan işini çağıran işlemden ayrı bir işlemde veya hatta ayrı bir konumda zaman uyumsuz olarak çalışır. İdeal olarak, arka plan işleri çalıştır ve unut işlemleridir. Çalışma zamanı ilerleme durumunun kullanıcı arabirimi veya arama işlemi üzerinde bir etkisi yoktur; bu da çağırma işleminin görevlerin tamamlanmasını beklemediği anlamına gelir. Kullanıcı arabirimi ve arama işlemi, görevin ne zaman sona erdüğünü algılamıyor.
İlerleme veya tamamlanma durumunu belirtmek için arama göreviyle iletişim kurmak için bir arka plan görevine ihtiyacınız varsa, bir mekanizma uygulamanız gerekir. Bazı örnekler şunlardır:
Kullanıcı arabirimi veya arayan görevi tarafından erişilebilir olan, bu değeri izleyebilen veya denetleyebilen depolama alanına bir durum göstergesi değeri yazın. Arka plan görevinin arayana döndürdüğü diğer veriler aynı depoya yerleştirilebilir.
Kullanıcı arabiriminin veya çağıranın izlediği bir yanıt kuyruğu oluşturun. Arka plan görevi kuyruğa durumu belirten iletiler gönderebilir. Arka plan görevinin çağırana döndürdüğü veriler iletilere yerleştirilebilir. Azure Service Bus için bu özelliği uygulamak amacıyla
ReplyToveCorrelationIdözelliklerini kullanın.Arka plan görevinden, kullanıcı arabirimi veya arayanın durum bilgilerini alabilmesi için erişebileceği bir API veya uç nokta açığa çıkarın. Yanıt, arka plan görevinin arayana döndürdüğü verileri içerebilir.
Önceden tanımlanmış noktalarda veya tamamlandığında durumu belirtmek için bir API aracılığıyla kullanıcı arabirimine veya çağıranı geri çağırmak için arka plan görevini yapılandırın. Yerel olarak tetiklenen olayları veya yayımlama ve abone olma mekanizmasını kullanabilirsiniz. İstek veya olay yükü, arka plan görevinin çağırana döndürdüğü verileri içerebilir.
Arka plan işlerini bölümleme
Var olan bir işlem örneğine arka plan işleri eklerseniz, bu değişikliklerin işlem örneğinin kalite özniteliklerini ve arka plan işini nasıl etkilediğini göz önünde bulundurun. Görevleri mevcut işlem örneğiyle birlikte mi yoksa farklı bir işlem örneğine mi ayıracaklarına karar vermek için şu faktörleri göz önünde bulundurun:
Kullanılabilirlik: Arka plan görevleri, özellikle kullanıcı arabirimi ve doğrudan kullanıcı etkileşimi içeren bölümler gibi uygulamanın diğer bölümleriyle aynı kullanılabilirlik düzeyine ihtiyaç duymayabilir. İşlemler kuyruğa alınabildiğinden arka plan görevleri gecikme süresine, yeniden denenen bağlantı hatalarına ve kullanılabilirliği etkileyen diğer faktörlere karşı daha yüksek toleransa sahip olabilir. Ancak, kuyrukları engelleyebilecek ve uygulamanın tamamını etkileyebilecek yedeklenen istekleri önlemek için yeterli kapasite olmalıdır.
Ölçeklenebilirlik: Arka plan görevlerinin büyük olasılıkla kullanıcı arabirimine ve uygulamanın etkileşimli bölümlerine kıyasla farklı ölçeklenebilirlik gereksinimleri vardır. Talep artışlarını karşılamak için kullanıcı arabirimini ölçeklendirmeniz gerekebilir. Bekleyen arka plan görevleri, daha az yoğun zamanlarda ve daha az sayıda işlem örneği ile çalışabilir.
Dayanıklılık: Yalnızca arka plan görevlerini barındıran bir işlem örneği başarısız olursa, uygulamanın tamamını önemli ölçüde etkilemeyebilir. Bu görevler için istekler kuyruğa alınabilir veya görev kullanılabilir olana kadar ertelenebilir. İşlem örneği veya görevleri uygun bir aralık içinde yeniden başlatılabiliyorsa, uygulama kullanıcılarını etkilemeyebilir.
Güvenlik: Arka plan görevlerinin kullanıcı arabirimine veya uygulamanın diğer bölümlerine göre farklı güvenlik gereksinimleri veya kısıtlamaları olabilir. Görevler için farklı bir güvenlik ortamı belirtmek için ayrı bir işlem örneği kullanın. Güvenlik ve ayırmayı en üst düzeye çıkarmak için, arka plan işlem örneklerini kullanıcı arabiriminden yalıtmak için Gatekeeper gibi desenleri de kullanabilirsiniz.
Performans: Görevin performans gereksinimleriyle özel olarak eşleşen arka plan görevleri için işlem örneği türünü seçin. Görevler kullanıcı arabirimiyle aynı işleme özelliklerine ihtiyaç duymazsa daha düşük maliyetli bir işlem seçeneği kullanabilirsiniz. Görevler daha fazla kapasite ve kaynak gerektiriyorsa daha büyük bir örnek de kullanabilirsiniz.
Yönetilebilirlik: Arka plan görevleri, ana uygulama koduna veya kullanıcı arabirimine kıyasla farklı bir geliştirme ve dağıtım ritmine sahip olabilir. Güncelleştirmeleri ve sürüm oluşturmayı basitleştirmek için arka plan görevlerini ayrı bir işlem örneğine dağıtın.
Maliyet: Arka plan görevlerini çalıştırmak için işlem örnekleri eklerseniz barındırma maliyetleri artar. Daha fazla kapasite ve ek maliyetler arasındaki dengeyi dikkatlice göz önünde bulundurun.
Daha fazla bilgi için bkz. Lider Seçimi düzeni ve Rakip Tüketiciler düzeni.
Kaynak çakışmasını önleme
Arka plan işinin birden çok örneğiniz varsa, bunlar veritabanları ve depolama gibi kaynaklara ve hizmetlere erişim için rekabet edebilir. Bu eşzamanlı erişim kaynak çekişmesiyle sonuçlanabilir ve bu da hizmet kullanılabilirliği çakışmasına neden olabilir ve depolama alanındaki verilerin bütünlüğüne zarar verebilir. Kötümser kilitleme yaklaşımını kullanarak kaynak çekişmesi sorununu çözün. Bu yaklaşım, bir görevin rakip örneklerinin bir hizmete eşzamanlı olarak erişmesini veya verileri bozmasını engeller.
Çakışmaları çözmek için bir diğer yaklaşım da arka plan görevlerini tekil olarak tanımlamaktır; böylece yalnızca bir örnek çalışır. Ancak bu yaklaşım, birden çok örnekli yapılandırmanın sağladığı güvenilirlik ve performans avantajlarını ortadan kaldırır. Bu dezavantaj özellikle kullanıcı arabirimi birden fazla arka plan görevini meşgul tutmak için yeterli çalışma sağladığında geçerlidir.
Arka plan görevinin otomatik olarak yeniden başlatabileceğinden ve talepteki zirveleri işlemek için yeterli kapasiteye sahip olduğundan emin olun. Yeterli kaynak içeren bir işlem örneği ayırın, talep azaldığında çalıştırılacak istekleri depolayan bir kuyruğa alma mekanizması uygulayın veya bu tekniklerin bir bileşimini kullanın.
Birden çok görevi düzenleme
Arka plan görevleri karmaşık olabilir ve çalışmasını gerektiren birden çok görev içerebilir. Bu senaryolarda, görevi birden fazla tüketicinin çalıştırabileceği daha küçük kesikli adımlar veya alt görevlere bölmek yaygındır. Birden çok iş için ayrı ayrı adımlar sıklıkla yeniden kullanılabilir olduğundan, birden çok iş daha verimli ve daha esnektir. Ayrıca adım sırasını eklemek, kaldırmak veya değiştirmek de kolaydır.
Birden çok görevin ve adımın koordinasyonu zor olabilir ancak çözümünüzde yol gösteren üç ortak desen vardır:
Bir görevi birden çok yeniden kullanılabilir adıma ayrıştırma. Bir uygulama, işlediği bilgiler üzerinde farklı karmaşıklıkta çeşitli görevleri gerçekleştirmek için gerekebilir. Böyle bir uygulamayı uygulamak için basit ama esnek olmayan bir yaklaşım, bu işlemeyi tekli bir modül olarak gerçekleştirmektir. Ancak bu yaklaşım, kodu yeniden düzenleme, iyileştirme veya uygulama başka yerlerde aynı işlemeden bölümler gerektiriyorsa yeniden kullanım için fırsatları azaltmak olasılığı yüksektir. Daha fazla bilgi için Kanallar ve Filtreler düzenine bakın.
Bir görev için adımların düzenlemesini yönetin. Bir uygulama, bazıları uzak servisleri çağırma veya uzak kaynaklara erişim sağlayabilen birçok adımı kapsayan görevler gerçekleştirebilir. Bazen ayrı adımlar birbirinden bağımsızdır, ancak bunlar görevi uygulayan uygulama mantığı tarafından düzenlenir. Daha fazla bilgi için bkz. Zamanlayıcı Aracısı Gözetmen Düzeni.
Başarısız görev adımları için kurtarmayı yönetin. Adımlardan biri veya birkaçı başarısız olursa, bir uygulamanın, bir dizi adımın gerçekleştirdiği ve sonunda tutarlı bir işlemi tanımlayan çalışmayı geri almaları gerekebilir. Daha fazla bilgi için bkz. Telafi İşlemi düzeni.
İşleri dayanıklı hale getirme
Uygulama için güvenilir servisler sağlamak üzere esnek arka plan görevleri oluşturun. Arka plan görevlerini planlayıp tasarlarken aşağıdaki noktaları göz önünde bulundurun:
Arka plan görevlerinin verileri bozulmadan veya uygulamada tutarsızlık göstermeden yeniden başlatmaları gerektiği. Uzun süren veya çok aşamalı görevler için, denetim noktalarını kullanmayı düşünün. İşlerin durumunu kalıcı depolama alanına veya kuyruktaki iletiler olarak kaydetmek için denetim noktalarını kullanın. Örneğin, durum bilgilerini kuyruktaki bir iletide depolayabilir ve bu durum bilgilerini görev ilerleme durumuyla artımlı olarak güncelleştirebilirsiniz. Görev, baştan yeniden başlatmak yerine bilinen son denetim noktasından işlenebilir.
Service Bus kuyrukları için bu amaçla ileti oturumlarını kullanın. İleti oturumları ile SetState ve GetState yöntemlerini kullanarak uygulama işleme durumunu kaydedin ve alın. Güvenilir çok adımlı işlemler ve iş akışları tasarlama hakkında daha fazla bilgi için bkz. Scheduler Aracı Gözetmen düzeni.
Arka plan görevleriyle iletişim kurmak için kuyrukları kullandığınızda, kuyruklar, uygulama olağandan daha fazla yük altındayken görevlere gönderilen istekleri saklamak amacıyla tampon görevi görebilir. Görevler daha az meşgul dönemlerde kullanıcı arabirimini yakalayabilir ve yeniden başlatmalar kullanıcı arabirimini engellemez. Daha fazla bilgi için Kuyruk Tabanlı Yük Dengeleme kalıbı bölümüne bakın. Bazı görevler diğerlerinden daha önemliyse, önce bu görevlerin çalıştığından emin olmak için Öncelik Sırası düzenini uygulamayı göz önünde bulundurun.
Messages
sıra dışı gelen iletiler, sürekli hataya neden olan iletiler (zehirli iletiler) ve birden çok kez teslim edilen iletiler gibi tutarsızlıkları işlemek için iletiler tarafından başlatılan veya iletileri işleyen arka plan görevlerini yapılandırın. Aşağıdaki önerileri gözden geçirin:
Bazen iletilerin belirli bir sırada işlenmesi gerekir. Örneğin, mevcut veri değerine göre verileri değiştiren iletiler (örneğin, var olan bir değere değer ekleme). İletiler her zaman gönderildikleri sırayla gelmez. Ayrıca, bir arka plan görevinin farklı örnekleri, her örnekteki değişen yükler nedeniyle iletileri farklı bir sırada işleyebilecektir.
Belirli bir sırada işlenmesi gereken iletiler için, arka plan görevlerinin iletileri doğru sırada işlemek için kullanabileceği bir sıra numarası, anahtar veya başka bir gösterge ekleyin. Service Bus için, doğru teslim sırasını garanti etmek için ileti oturumlarını kullanın. İleti sırasının önemli olmayacak şekilde tasarlanması daha verimlidir. Daha fazla bilgi için bkz. ileti sıralama ve zaman damgaları.
Genellikle arka plan görevi kuyruktaki iletilere göz atar ve bu da iletileri diğer ileti tüketicilerinden geçici olarak gizler. Görev iletiyi başarıyla işledikten sonra iletiyi siler. Bir arka plan görevi bir iletiyi işlerken başarısız olursa, göz atma zaman aşımı sona erdikten sonra bu ileti kuyrukta yeniden görünür. Görevin farklı bir örneği iletiyi işler veya özgün örneğin sonraki işlem döngüsü iletiyi işler.
Mesaj sürekli olarak tüketicide bir hataya neden oluyorsa, kuyruk dolduğunda görevi, kuyruğu ve nihayetinde uygulamanın kendisini bloke eder. Zehirli iletileri algılamak ve kuyruktan kaldırmak çok önemlidir. Service Bus kullanıyorsanız, zehirli iletileri ilişkili bir teslim edilemeyen ileti kuyruğuna otomatik olarak veya el ile taşıyın.
Kuyruklar en az bir kez teslim mekanizmasıdır, ancak aynı iletiyi birden çok kez teslim edebilir. Bir arka plan görevi bir iletiyi işledikten sonra ancak kuyruktan silmeden önce başarısız olursa, ileti yeniden işlenmek üzere kullanılabilir.
Arka plan görevleri idempotent olmalıdır, yani görev aynı iletiyi birden fazla kez işlediğinde uygulamanın verilerinde hataya veya tutarsızlığa neden olmaz. Bazı işlemler doğası gereği idempotenttir, örneğin bir depolanan değer belirli bir yeni değere ayarlanırsa. Ancak bazı işlemler tutarsızlıklara neden olur. Örneğin, depolanan değerin iletinin ilk gönderildiği zaman ile aynı olduğunu doğrulamadan mevcut bir depolanmış değere bir değer eklenirse. Yinelenen iletileri otomatik olarak kaldırmak için Service Bus kuyruklarını yapılandırın. Daha fazla bilgi için bkz . Etkili ileti işleme.
Azure Depolama kuyrukları ve Service Bus kuyrukları gibi bazı mesajlaşma sistemleri, kuyruktaki bir iletinin kaç kez okunduğunu gösteren bir dequeue count özelliğini destekler. Bu veriler, yinelenen iletileri ve zehirli iletileri işlemek için kullanışlıdır. Daha fazla bilgi için bkz. Zaman uyumsuz mesajlaşma kılavuzu ve Idempotency şablonları.
İşleri ölçeklenebilir hale getirme
Arka plan görevleri, sistem yük altındayken uygulama veya gecikme işlemini engellememelerini sağlamak için yeterli performansa sahip olmalıdır. Genellikle, arka plan görevlerini barındıran bilgi işlem örneklerini ölçeklendirdiğinizde performans iyilenir. Arka plan görevleri planlayıp tasarlarken, ölçeklenebilirlik ve performansla ilgili aşağıdaki noktaları göz önünde bulundurun:
Azure Sanal Makineler ve Azure App Service'in Web Apps özelliği dağıtımları barındırabilir. Hem ölçeği genişletme hem de daraltma için otomatik ölçeklendirmeyi destekler. Otomatik ölçeklendirme talebe ve yüke veya önceden tanımlanmış bir zamanlamaya göre belirlenir. Uygulamanın yeterli performans özelliklerine sahip olduğundan emin olmak ve çalışma zamanı maliyetlerini en aza indirmek için otomatik ölçeklendirmeyi kullanın.
Bazı arka plan görevleri, bir uygulamanın diğer bölümlerine kıyasla farklı bir performans özelliğine sahiptir, örneğin kullanıcı arabirimi veya veri erişim katmanı gibi bileşenler. Bu senaryoda, arka plan görevlerini ayrı bir işlem hizmetinde barındırarak kullanıcı arabirimi ve arka plan görevlerinin yükü yönetmek için bağımsız olarak ölçeklendirilmesini sağlayın. Birden çok arka plan görevinin önemli ölçüde farklı performans özellikleri varsa, bunları bölün ve her türü bağımsız olarak ölçeklendirin. Bu teknik çalışma zamanı maliyetlerini artırabilir.
Yük altında performans kaybını önlemek için, işlem zincirinin tek bir noktasının performans sorununa neden olmaması için depolama kuyruklarını ve diğer kaynakları ölçeklendirmeniz de gerekebilir. Depolamanın en yüksek aktarım hızı ve uygulamanın ve arka plan görevlerinin bağlı olduğu diğer hizmetler gibi diğer sınırlamaları göz önünde bulundurun.
Ölçeklendirme için arka plan görevleri tasarlama. Örneğin, arka plan görevleri iletileri izlemek veya uygun kuyruğa ileti göndermek için kullanılan depolama kuyruklarının sayısını dinamik olarak algılamalıdır.
Varsayılan olarak, bir Web İşi ilişkili Web Apps örneğiyle ölçeklendirilir. Ancak, bir Web İşinin yalnızca tek bir örnek olarak çalışmasını istiyorsanız, JSON verilerini
{ "is_singleton": true }içeren bir Settings.job dosyası oluşturabilirsiniz. Azure'ı, ilişkili web uygulamasının birden çok örneği olsa bile yalnızca bir WebJob örneği çalıştırmaya zorlayan bu yöntemdir. Bu teknik, yalnızca tek bir örnek olarak çalışması gereken zamanlanmış işler için kullanışlıdır.Arka plan işleri, özellikle arka plan görevleri birbirine veya diğer veri kaynaklarına bağlıysa, veri eşitleme ve işlem koordinasyonu için güçlükler oluşturabilir. Örneğin, arka plan işleri veri tutarlılığı sorunlarını, yarış koşulları, kilitlenmeleri veya zaman aşımlarını ele alabilir.
Arka plan görevlerinin sonuçları kullanıcıya sunulursa, arka plan işleri kullanıcı deneyimini etkileyebilir. Örneğin, arka plan işleri kullanıcının bir bildirimi beklemesini, sayfayı yenilemesini veya görevin durumunu el ile denetlemesini gerektirebilir. Bu davranışlar kullanıcı etkileşiminin karmaşıklığını artırabilir ve kullanıcı deneyimini olumsuz etkileyebilir.
Dezavantaj: Arka plan işleri sisteme daha fazla bileşen ve bağımlılık getirir, bu da çözümün karmaşıklığını ve bakım maliyetlerini artırabilir. Örneğin, arka plan işleri ayrı bir kuyruk hizmeti, çalışan hizmeti, izleme hizmeti ve yeniden deneme mekanizması gerektirebilir.
Azure hizmetlerinin kolaylaştırılması
Aşağıdaki bölümlerde arka plan işlerini barındırmak, çalıştırmak, yapılandırmak ve yönetmek için kullanabileceğiniz Azure hizmetleri açıklanmaktadır.
Konak ortamları
Arka plan görevlerini barındırabilen birkaç Azure platformu hizmeti vardır:
Web Apps ve Web İşleri: Bir web uygulamasında çalıştırabileceğiniz farklı betikleri veya programları temel alan özel işleri çalıştırmak için App Service'in Web İşleri özelliğini kullanın.
Azure İşlevleri: Uzun süre çalışmayan arka plan işleri için işlev uygulamalarını kullanın. İş yükünüzü az kullanılan bir App Service planında barındırdığınızda işlev uygulamalarını da kullanabilirsiniz.
Azure Logic Apps: Birden çok hizmet ve sistem arasında düzenleme gerektiren arka plan işleri için mantıksal uygulamaları kullanın.
Sanal Makineler: Bir Windows hizmetiniz varsa veya Windows Görev Zamanlayıcı'yı kullanmak istiyorsanız, arka plan görevlerinizi ayrılmış bir VM'de barındırabilirsiniz.
Azure Batch: Batch, işlem yoğunluklu çalışmayı yönetilen bir VM koleksiyonunda çalışacak şekilde zamanlamak için kullanabileceğiniz bir platform hizmetidir. İşlem kaynaklarını otomatik olarak ölçeklendirebilir.
Azure Kubernetes Service (AKS): AKS, Azure'da Kubernetes için yönetilen bir barındırma ortamı sağlar.
Azure Container Apps: Container Apps ile kapsayıcıları temel alan sunucusuz mikro hizmetler oluşturabilirsiniz.
Aşağıdaki bölümlerde, sizin için en iyi seçeneği belirlemenize yardımcı olmak için bu seçeneklerin her biri için dikkat edilmesi gereken noktalar sağlanır.
Web Uygulamaları ve Web İşleri
Bir web uygulamasında özel işleri arka plan işleri olarak çalıştırmak için Web İşleri özelliğini kullanabilirsiniz. WebJob, web uygulamanız bağlamında sürekli çalışan bir işlem olarak çalışır. Web İşi, Logic Apps'ten gelen bir tetikleyici olayına veya depolama bloblarındaki veya ileti kuyruklarındaki değişiklikler gibi dış faktörlere yanıt olarak da çalıştırılabilir. WebJobs talep üzerine başlatılabilir ve durdurulabilir ve düzgün bir şekilde kapatılabilir. Sürekli çalışan bir WebJob başarısız olursa, otomatik olarak yeniden başlatılır. Yeniden deneme ve hata eylemlerini yapılandırabilirsiniz.
Bir WebJob'u yapılandırdığınızda:
İşin olay temelli bir tetikleyiciye yanıt vermesini istiyorsanız, sürekli çalıştırılacak şekilde yapılandırın. Betik veya program, site/wwwroot/app_data/jobs/continuous adlı klasörde depolanır.
İşin zamanlama temelli bir tetikleyiciye yanıt vermesini istiyorsanız, zamanlamaya göre çalıştır olarak yapılandırın. Betik veya program, site/wwwroot/app_data/jobs/triggered adlı klasörde depolanmaktadır.
bir işi yapılandırırken İsteğe bağlı çalıştır seçeneğini belirlerseniz, işi başlattığınızda zamanlamada çalıştır seçeneğiyle aynı kodu çalıştırır.
WebJob, web uygulamasının korumalı alanında çalışır. Ortam değişkenlerine erişimi vardır ve bağlantı dizeleri gibi bilgileri web uygulamasıyla paylaşabilir. WebJob, çalıştığı makinenin benzersiz tanımlayıcısına erişebilir. adlı AzureWebJobsStorage bağlantı dizesi, uygulama verileri için Depolama kuyruklarına, bloblara ve tablolara erişim sağlar. Ayrıca mesajlaşma ve iletişim için Service Bus'a erişim sağlar. adlı AzureWebJobsDashboard bağlantı dizesi, Web İşi eylem günlüğü dosyalarına erişim sağlar.
Web İşleri aşağıdaki özelliklere sahiptir:
Güvenlik: Web uygulamasının dağıtım kimlik bilgileri, Web İşleri için koruma sağlar.
Desteklenen dosya türleri: Komut betikleri (.cmd), toplu iş dosyaları (.bat), PowerShell betikleri (.ps1), Bash kabuk betikleri (.sh), PHP betikleri (.php), Python betikleri (.py), JavaScript kodu (.js) ve yürütülebilir programları (.exe ve .jar) kullanarak Web İşleri tanımlayın.
Dağıtım: Betikleri ve yürütülebilir dosyaları Azure portalı, Visual Studio veya Web İşleri SDK'sını kullanarak dağıtabilir veya doğrudan aşağıdaki konumlara kopyalayabilirsiniz:
Tetiklenen dağıtım için: site/wwwroot/app_data/jobs/triggered/<job name>
Sürekli dağıtım için: site/wwwroot/app_data/jobs/continuous/<job name>
Günlük dosyaları:
Console.Outolarak işlenir veya işaretlenir.Console.ErrorolarakERRORdeğerlendirilir. İzleme ve tanılama bilgilerine erişmek için portalı kullanın. Günlük dosyalarını doğrudan web sitesinden indirin. Günlük dosyaları aşağıdaki konumlara kaydedilir:Tetiklenen dağıtım için: Vfs/data/jobs/triggered/<job name>
Sürekli dağıtım için: Vfs/data/jobs/continuous/<job name>
Yapılandırma: Portalı, REST API'yi ve PowerShell'i kullanarak Web İşleri'ni yapılandırın. WebJob için yapılandırma bilgilerini sağlamak amacıyla, WebJob betiğiyle aynı kök dizinde bulunan settings.job adlı bir yapılandırma dosyası kullanın. Örneğin:
{ "stopping_wait_time": 60 }{ "is_singleton": true }
Web Apps ve Webjobs ile ilgili dikkat edilmesi gerekenler
Varsayılan olarak, WebJobs, web uygulamasıyla birlikte ölçeklendirilir. Web İşleri'ni tek bir örnekte çalışacak şekilde yapılandırmak için yapılandırma özelliğini
is_singletonolarak ayarlayıntrue. Tek örnekli Web İşleri, yeniden dizinleme veya veri analizi gibi birden çok örneği ölçeklendirmek veya aynı anda çalıştırmak istemediğiniz görevler için kullanışlıdır.WebJobs'lerin web uygulamasının performansı üzerindeki etkisini en aza indirmek için, uzun süre çalışan veya kaynak yoğun WebJobs'leri barındırmak amacıyla yeni bir App Service planında boş bir web uygulaması örneği oluşturun.
Azure Functions
Azure İşlevleri sunucusuzdur ve kısa bir süre boyunca çalışan olay temelli tetikleyiciler için en uygundur. Ayrıca, bir işlevi belirtilen zamanlarda çalışacak şekilde yapılandırdığınızda zamanlayıcı tetikleyicileri aracılığıyla zamanlanmış işleri çalıştırmak için Azure İşlevleri'ni de kullanabilirsiniz.
Karmaşık iş akışlarını ve uzun süre çalışan işlemleri yönetmek için Azure Dayanıklı İşlevleri'ni kullanın. Dayanıklı İşlevler, durum bilgisi olan iş akışlarını sunucusuz bir ortamda tanımlamanızı sağlar. Bu, özellikle koordinasyon ve durum yönetimi gerektiren arka plan işleri için yararlı olabilir.
Azure İşlevleri ile ilgili dikkat edilmesi gerekenler
Arka plan görevinin bir olaya yanıt olarak kısa bir süre boyunca çalışmasını bekliyorsanız, görevi tüketim planında çalıştırmayı göz önünde bulundurun. Çalışma zamanını en uzun süreye yapılandırabilirsiniz. Daha uzun süre çalışan bir işlev daha fazla maliyetlidir. Daha fazla bellek tüketen yoğun CPU kullanan işler daha pahalı olabilir. Göreviniz kapsamında hizmetler için ek tetikleyiciler kullanırsanız, bunlar ayrı olarak faturalandırılır.
Premium plan, kısa olan ancak sürekli çalışan birkaç göreviniz varsa uygundur. Daha fazla belleğe ve CPU'ya ihtiyaç duyduğundan bu plan daha pahalıdır. Bir avantaj olarak, sanal ağ tümleştirmesi gibi diğer özellikleri kullanabilirsiniz.
İş yükünüz ayrılmış planda zaten çalışıyorsa, ayrılmış plan arka plan işleri için uygundur. Az kullanılan VM'leriniz varsa, ayrılmış planı aynı VM'de çalıştırabilir ve işlem maliyetlerini paylaşabilirsiniz.
Daha fazla bilgi için bakınız:
Azure Logic Apps
Azure Logic Apps, iş akışlarını otomatikleştirmek ve çeşitli hizmetleri tümleştirmek için güçlü bir platform sağlar. Bunlar özellikle birden çok hizmet ve sistem arasında düzenleme gerektiren arka plan işlerini barındırmak için uygundur.
Azure Logic Apps'te iş akışları oluşturmaya yönelik bir görsel tasarımcı, çeşitli hizmetleri tümleştirmeye yönelik geniş bir bağlayıcı kitaplığı, olay temelli tetikleyiciler, karmaşık koordinasyon için durum bilgisi olan iş akışları ve geçici hatalardan dayanıklılık ve kurtarma sağlamak için yerleşik hata işleme ve yeniden denemeler bulunur.
Azure Logic Apps ile ilgili dikkat edilmesi gerekenler
Logic Apps, zaman uyumsuz veya yarı uzun süre çalışan API çağrıları gibi yanıt için düşük gecikme süresi gerektirmeyen senaryolarda en iyi şekilde çalışır. Kullanıcı arabirimini engelleyen bir çağrı gibi düşük gecikme süresi gerekiyorsa Azure İşlevleri veya Azure App Service'e dağıtılan bir web API'si gibi farklı bir teknoloji kullanın.
Azure Logic Apps, yürütülen eylem sayısına ve kullanılan bağlayıcılara göre ücretlendirildiğiniz kullandıkça öde fiyatlandırma modelini izler. Verimli iş akışları tasarlayarak ve Logic Apps'inizde kullanılan eylem ve bağlayıcı sayısını en aza indirerek maliyetleri iyileştirin.
Logic Apps, gelen isteklerin sayısına ve iş akışlarının karmaşıklığına göre otomatik olarak ölçeklendirilir. Ancak, özellikle arka plan görevleriniz yüksek frekanslı tetikleyiciler veya büyük hacimli veriler içeriyorsa Logic Apps için kısıtlama sınırlarına ve kotalarına dikkat edin.
Daha fazla bilgi için bakınız:
Virtual Machines
Arka plan görevlerini web uygulamalarına dağıtılmamaları için uygulayabilirsiniz. Örneğin, Windows hizmetlerini, üçüncü taraf yardımcı programlarını veya yürütülebilir programları kullanarak görevleri uygulayabilirsiniz. Uygulamayı barındıran ortamdan farklı bir çalışma zamanı ortamı için yazılmış programları da kullanabilirsiniz. Örneğin, bir Windows veya .NET uygulamasından çalıştırmak istediğiniz bir Unix veya Linux programı kullanabilirsiniz. Azure VM için çeşitli işletim sistemleri arasından seçim yapın ve hizmetinizi veya yürütülebilir dosyanızı bu VM'de çalıştırın.
Daha fazla bilgi için bakınız:
Arka plan görevini ayrı bir VM'de başlatmak için şunları yapabilirsiniz:
Görevi doğrudan uygulamanızdan isteğe bağlı olarak çalıştırmak için görevin kullanıma açık olduğu bir uç noktaya istek gönderin. İstek, görevin gerektirdiği verileri aktarır. Uç nokta görevi çağırır.
Görevi zamanlamaya göre çalışacak şekilde yapılandırmak için seçtiğiniz işletim sisteminden bir zamanlayıcı veya zamanlayıcı kullanın. Örneğin, Windows'da, betikleri ve görevleri çalıştırmak için Windows Görev Zamanlayıcı'yı kullanabilirsiniz. VM'de SQL Server yüklüyse, betikleri ve görevleri çalıştırmak için SQL Server Aracısı'nı kullanın.
Görevin izlediği kuyruğa ileti ekleyerek veya görevin kullanıma sunduğu bir API'ye istek göndererek görevi başlatmak için Logic Apps'i kullanın.
Arka plan görevlerini nasıl başlatabileceğiniz hakkında daha fazla bilgi için önceki Tetikleyiciler bölümüne bakın.
Sanal Makineler ile ilgili dikkat edilmesi gerekenler
Azure VM'de arka plan görevlerini dağıtırken aşağıdaki noktaları göz önünde bulundurun:
Başlatma, dağıtım, zamanlama ve kaynak ayırma üzerinde esneklik ve hassas denetim sağlamak için arka plan görevlerini ayrı bir Azure VM'sinde barındırabilirsiniz. Ancak vm'yi yalnızca arka plan görevleri için dağıtırsanız çalışma zamanı maliyetleri artar.
Portaldaki görevleri izleme olanağı ve başarısız görevler için otomatik yeniden başlatma özelliği yoktur. Ancak VM'nin durumunu izlemek ve yönetmek için Azure Resource Manager cmdlet'lerini kullanabilirsiniz. İşlem düğümlerinde işlemleri ve iş parçacıklarını denetleme olanağı yoktur. Genellikle, bir VM kullanıyorsanız, görevdeki araçlardan ve VM'deki işletim sisteminden veri toplayan bir mekanizma uygulamak zorundasınız. Bu amaçla Azure için System Center Yönetim Paketi'ni kullanabilirsiniz.
HTTP uç noktaları aracılığıyla kullanıma sunulan izleme yoklamaları oluşturmayı göz önünde bulundurun. Sistem durumu denetimleri gerçekleştirmek ve işlem bilgileri ile istatistikler toplamak için bu yoklamaların kodunu yapılandırabilirsiniz. Ayrıca, hata bilgilerini harmanlayıp bir yönetim uygulamasına döndürmek için yoklamaları da kullanabilirsiniz.
Daha fazla bilgi için bakınız:
Azure Batch
Onlarca, yüzlerce veya binlerce VM'de büyük, paralel yüksek performanslı bilgi işlem (HPC) iş yükleri çalıştırmanız gerekiyorsa Batch'i göz önünde bulundurun.
VM'leri hazırlamak, VM'lere görev atamak, görevleri çalıştırmak, ilerleme durumunu izlemek ve iş yüküne yanıt olarak VM'lerin ölçeğini otomatik olarak genişletmek için Batch'i kullanın. Batch ayrıca iş zamanlaması sağlar ve Linux ve Windows VM'lerini destekler.
Parti İşleme Dikkat Edilecek Hususlar
Batch, içsel olarak paralel iş yükleri için uygundur. Batch'i kullanarak sonunda bir azaltma adımıyla paralel hesaplamalar yapabilir veya düğümler arasında ileti geçirme gerektiren paralel görevler için İleti Geçirme Arabirimi (MPI) uygulamalarını çalıştırabilirsiniz.
Batch işi bir düğüm havuzunda veya VM'lerde çalışır. Bir havuzu yalnızca gerektiğinde ayırabilir ve iş bittikten sonra silebilirsiniz. Düğümler boşta olmadığından bu yaklaşım kullanımı en üst düzeye çıkarır, ancak işin düğümleri ayırmanızı beklemesi gerekir. Alternatif olarak, önceden bir havuz oluşturabilirsiniz. Bu yaklaşım, bir işin başlatılması için gereken süreyi en aza indirir, ancak boşta duran düğümlere neden olabilir.
Daha fazla bilgi için bakınız:
- Batch'teki düğümler ve havuzlar
- Batch nedir?
- Batch'teki işler ve görevler
- Azure'da HPC
- Batch hizmeti iş akışı ve kaynakları
Azure Kubernetes Service
Kapsayıcılı uygulamaları kolayca dağıtabilmeniz ve yönetebilmeniz için, barındırılan Kubernetes ortamınızı yönetmek için AKS kullanın.
Kapsayıcılar arka plan işlerini çalıştırmak için kullanışlıdır. Bazı avantajlar şunlardır:
Kapsayıcılar yüksek yoğunluklu barındırmayı destekler. Bir kapsayıcıdaki arka plan görevini yalıtabilir ve her vm'ye birden çok kapsayıcı yerleştirebilirsiniz.
İç yük dengeleme gerçekleştirmek, iç ağı yapılandırmak ve diğer yapılandırma görevlerini gerçekleştirmek için kapsayıcı düzenleyicisini kullanın.
Gerektiğinde kapsayıcıları başlatabilir ve durdurabilirsiniz.
Azure Container Registry ile, güvenlik, gizlilik ve yakınlık avantajları sağlamak için kapsayıcılarınızı Azure sınırları içine kaydedebilirsiniz.
AKS ile ilgili dikkat edilmesi gerekenler
AKS, kapsayıcı düzenleyicinin nasıl kullanılacağının anlaşılmasını gerektirir.
Daha fazla bilgi için bakınız:
Azure Konteyner Uygulamaları
Container Apps ile kapsayıcıları temel alan sunucusuz mikro hizmetler oluşturabilirsiniz. Container Uygulamaları
Genel amaçlı konteynerleri, özellikle konteynerlerde dağıtılan birçok mikro hizmeti kapsayan uygulamaları çalıştırmak için optimize edilmiştir.
Kubernetes ve Dapr, Kubernetes Event-driven Autoscaling (KEDA) ve Envoy gibi açık kaynak teknolojileri tarafından desteklenir.
Hizmet bulma ve trafik bölme gibi özelliklerle Kubernetes stili uygulamaları ve mikro hizmetleri destekler.
Trafik tabanlı ölçeklendirme ve sıfıra kadar ölçekleme dahil olmak üzere, kuyruklar gibi olay kaynaklarından veri çekimi destekleyerek, olay odaklı uygulama mimarilerini etkinleştirir.
Uzun süre çalışan işlemleri destekler ve arka plan görevlerini çalıştırabilir.
Container Apps ile ilgili dikkat edilmesi gerekenler
Container Apps, temel alınan Kubernetes API'lerine doğrudan erişim sağlamaz. Kubernetes API'lerine ve kontrol düzlemine erişmeniz gerekiyorsa AKS kullanın. Kubernetes stili uygulamalar oluşturmak istiyorsanız ve yerel Kubernetes API'lerine ve küme yönetimine doğrudan erişim gerekmiyorsa, tam olarak yönetilen bir deneyim için Container Apps'i kullanın. Container Apps, kapsayıcı mikro hizmetleri oluşturmak için en uygun yöntemdir.
Daha fazla bilgi için bakınız:
İlgili bağlantılar
- Telafi İşlemi Deseni
- Rakip Tüketiciler deseni
- Lider Seçimi düzeni
- Kanallar ve Filtreler düzeni
- Öncelik Sırası düzeni
- Kuyruk Tabanlı Yük Dengeleme düzeni
- Zamanlayıcı Ajan Denetleyici kalıbı
Güvenilirlik denetim listesi
Öneriler kümesinin tamamına bakın.