Web-Kuyruk-Çalışan mimari stili

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.

Web kuyruğu-çalışan mimarisi stilinin mantıksal diyagramı

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. Bunlar genellikle üçüncü taraflarca 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.

Avantajlar

  • 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.

En iyi yöntemler

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.

Web-kuyruk-çalışan mimarisi stilinin fiziksel diyagramı

  • Ön uç bir Azure App Service Web uygulaması olarak uygulanır ve çalışan bir Azure Işlevleri uygulaması olarak uygulanır. Web uygulaması ve işlev uygulaması, sanal makine örneklerini sağlayan bir App Service planıyla ilişkilendirilir.

  • Mesaj kuyruğu için Azure Service Bus veya Azure Depolama kuyruklarını kullanabilirsiniz. (Diyagramda bir Azure depolama kuyruğu gösterilmektedir.)

  • Redsıs için Azure önbelleği, oturum durumunu ve düşük gecikmeli erişime ihtiyacı olan diğer verileri depolar.

  • Görüntüler, CSS ya da HTML gibi statik içeriklerin önbelleğe alınması için Azure CDN 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 ayrıntılı bilgi için bkz. App Service web uygulaması başvuru mimarisi.

Diğer konular

  • 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, önce güncel bir sürümü hazırlık yuvasına dağıtıp sonra yeni sürüme geçmenize imkan tanır. Ayrıca, güncelleştirmeyle ilgili bir sorun olması durumunda önceki sürüme dönmenize de imkan tanır.