Bu mimarinin temel bileşenleri, istemci isteklerine yanıt veren bir web ön ucu ile yoğun kaynak gerektiren görevleri, uzun çalışan iş akışlarını veya toplu işleri gerçekleştiren bir çalışandır. Web ön ucu, çalışanla bir ileti kuyruğu üzerinden iletişim kurar.
Yaygın olarak bu mimariye eklenen diğer bileşenler şunlardır:
- Bir veya daha fazla veritabanı.
- Hızlı okuma için veritabanından alınan değerlerin depolanacağı bir önbellek.
- Statik içerik sunmak için CDN
- E-posta veya SMS hizmeti gibi uzak hizmetler. Bu özellikler genellikle üçüncü taraflar tarafından sağlanır.
- Kimlik doğrulaması için kimlik sağlayıcısı.
Web ve çalışan bileşenleri durum bilgisine sahip değildir. Oturum durumu dağıtılmış bir önbellekte depolanabilir. Uzun süre çalışan işler çalışan tarafından zaman uyumsuz olarak gerçekleştirilir. Çalışan, kuyruğa gönderilen mesajlarla tetiklenebilir veya toplu işlem için bir zamanlamaya göre çalıştırılabilir. Çalışan, isteğe bağlı bir bileşendir. Uzun süre çalışan işlemler varsa çalışan kullanılmayabilir.
Ön uç bir web API'den oluşabilir. İstemci tarafında, web API AJAX çağrıları yapan tek sayfalı bir uygulama tarafından veya yerel bir istemci uygulaması tarafından kullanılabilir.
Bu mimarinin kullanılacağı durumlar
Web-Kuyruk-Çalışan mimarisi genellikle yönetilen işlem hizmetleri (Azure App Service veya Azure Cloud Services) kullanılarak uygulanır.
Aşağıdakiler için bu mimari stilini göz önünde bulundurun:
- Göreceli olarak basit bir etki alanına sahip olan uygulamalar.
- Uzun süre çalışan iş akışlarına veya toplu işlemlere sahip olan uygulamalar.
- Hizmet olarak altyapı (IaaS) yerine yönetilen hizmetler kullanmak istediğiniz durumlar.
Sosyal haklar
- Anlaşılması kolay olan, görece basit mimari.
- Dağıtımı ve yönetimi kolaydır.
- Görev ayrımı nettir.
- Ön uç, zaman uyumsuz mesajlaşma ile çalışandan bağımsız hale getirilir.
- Ön uç ve çalışan bağımsız olarak ölçeklendirilebilir.
Zorluklar
- Tasarıma dikkat edilmemesi durumunda, ön uç ve çalışan bakımı ve güncelleştirmesi zor olan büyük ve tek parça bileşenlere dönüşebilir.
- Ön uç ve çalışan aynı veri şemalarını veya kod modüllerini kullanıyorsa gizli bağımlılıklar olabilir.
- Web ön ucu, veritabanında başarıyla kalıcı hale getirildikten sonra ancak iletileri kuyruğa yaymadan önce arızalanabilir. Çalışan mantığın kendi bölümünü gerçekleştirmeyeceği için bu durum olası tutarlılık sorunlarına neden olabilir. İşlem giden kutusu düzeni gibi teknikler, bu sorunun azaltılmasına yardımcı olmak için kullanılabilir, ancak giden iletilerin yönlendirmesini ayrı bir kuyruk aracılığıyla ilk "geri döngü" olarak değiştirmeyi gerektirir. Bu teknik için destek sağlayan kitaplıklardan biri NServiceBus İşlem Oturumudur.
En iyi yöntemler
- İstemciye iyi tasarlanmış bir API sunun. Bkz. API tasarımı ile ilgili en iyi uygulamalar.
- Yükteki değişiklikleri yönetmek için otomatik olarak ölçeklendirin. Bkz. En iyi uygulamaları otomatik olarak ölçeklendirme.
- Yarı statik verileri önbelleğe alın. Bkz. Önbelleğe alma ile ilgili en iyi uygulamalar.
- Statik içerik barındırmak için CDN kullanın. Bkz. Azure CDN ile ilgili en iyi uygulamalar.
- Uygun durumlarda çok yönlü kalıcılık kullanın. Bkz. [İş için en iyi veri depounu kullanma][polyglot].
- Ölçeklenebilirliği geliştirmek, çekişmeyi azaltmak ve performansı iyileştirmek için verileri bölümleyin. Bkz. Veri bölümleme ile ilgili en iyi uygulamalar.
Azure App Service’te Web-Kuyruk-Çalışan
Bu bölümde, Azure App Service kullanan, önerilen bir Web-Kuyruk-Çalışan mimarisi açıklanmaktadır.
Bu mimarinin bir Visio dosyasını indirin.
İş Akışı
Ön uç bir Azure Uygulaması Hizmeti web uygulaması olarak uygulanır ve çalışan bir Azure İşlevleri uygulaması olarak uygulanır. Hem web uygulaması hem de işlev uygulaması, VM örneklerini sağlayan bir App Service planıyla ilişkilendirilir.
İleti kuyruğu için Azure Service Bus veya Azure Depolama kuyruklarını kullanabilirsiniz. (Diyagramda bir Azure depolama kuyruğu gösterilmektedir.)
Redis için Azure Cache oturum durumunu ve düşük gecikme süreli erişim gerektiren diğer verileri depolar.
Azure CDN görüntüler, CSS veya HTML gibi statik içeriği önbelleğe almak için kullanılır.
Depolama için uygulamanızın gereksinimlerine en uygun depolama teknolojilerini seçin. Birden çok depolama teknolojisi (çok yönlü kalıcılık) kullanabilirsiniz. Bu fikri göstermek için diyagramda Azure SQL Veritabanı ve Azure Cosmos DB gösterilmektedir.
Daha fazla bilgi için bkz . App Service web uygulaması başvuru mimarisi ve NServiceBus ve Azure Service Bus ile ileti temelli iş uygulamaları oluşturma.
Dikkat edilecek diğer noktalar
Her işlemin çalışan ve kuyruk üzerinden depolamaya gitmesi gerekmez. Web ön ucu doğrudan basit okuma/yazma işlemleri gerçekleştirebilir. Çalışanlar, yoğun kaynak gerektiren görevler veya uzun süre çalışan iş akışları için tasarlanmıştır. Bazı durumlarda çalışana gereksinim bile duymayabilirsiniz.
VM örnek sayısının ölçeğini genişletmek için App Service’te yerleşik olarak sunulan otomatik ölçeklendirme özelliğini kullanın. Uygulama üzerindeki yük tahmin edilebilir düzenleri izliyorsa zamanlama tabanlı otomatik ölçeklendirme kullanın. Yükü tahmin edilebilir değilse, ölçüm tabanlı otomatik ölçeklendirme kurallarını kullanın.
Web uygulamasını ve işlev uygulamasını ayrı App Service planlarına yerleştirmeyi göz önünde bulundurun. Bu şekilde bağımsız olarak ölçeklendirilebilirler.
Üretim ve test için ayrı App Service planları kullanın. Bunun yerine üretim ve test için aynı planı kullanırsanız, testleriniz üretim VM'lerinde çalıştırılır.
Dağıtımları yönetmek için dağıtım yuvaları kullanın. Bu yöntem, güncelleştirilmiş bir sürümü hazırlama yuvasına dağıtmanıza ve ardından yeni sürüme geçiş yapmanıza olanak tanır. Ayrıca, güncelleştirmeyle ilgili bir sorun olması durumunda önceki sürüme dönmenize de imkan tanır.