Uygulamaların kullanılabilirliği, uygulamaları ister kişisel ister profesyonel olsun, yalnızca iletişimden daha fazlası için kullandığımızda ve uygulamaların iş olduğu günümüzde olduğu kadar ciddiye alınmamıştı.
Sürekli çevrimiçi olmayan veya kararsız olan uygulamalar, kullanıcılarını ve alaka düzeyini kaybeder ve sonunda eski hale gelir. Bir anda oldu. İnternet asla uyumadığı ve haftanın 24 günü 7 saat çalıştığı için, aynı fikir uygulamalar için de geçerli olmalıdır.
Ölçeklenebilirlik, bunu yapmak ve uygulama kullanılabilirliğini sağlamak için çok önemlidir. Yük dengeleme, kullanılabilirliği sağlamada en önemli bileşenlerden biridir. Birçok kişi hala yük dengelemenin basit bir komut dosyasıyla gerçekleştirilebileceğine inanıyor.
Ancak durum böyle değil. Tek başına tüm dünyadaki programlara - herhangi bir zamanda ve herhangi bir cihazdan - erişim sağlar.
Bu gönderide, diğer şeylerin yanı sıra yük dengelemeye, algoritmalarına ve bunun mikro hizmetlerle ilişkisine derinlemesine bakacağız. Hadi başlayalım!
Yük dengeleme nedir?
Bir web sitesine veya iş uygulamasına olan talep arttıkça, tek bir sunucu yakında tüm yükü kaldıramaz hale gelecektir. Kuruluşlar, talebi karşılamak için iş yükünü çok sayıda sunucuya dağıtır. "Yük dengeleme" olarak bilinen bu yöntem, tek bir sunucunun aşırı yüklenmesini önler, bu da sunucunun yavaşlamasına, isteklerin düşmesine ve hatta çökmesine neden olabilir.
Yük dengeleme, aşırı kaynak yüklemesinden kaynaklanan arızaları önlemek için ağ trafiğini eşit olarak dağıtır. Uygulamalar, web siteleri, veritabanları ve diğer bilgisayar kaynakları daha iyi performans gösterir ve bu yöntem kullanılarak daha fazla kullanılabilir. Ayrıca, kullanıcı isteklerinin doğru ve zamanında işlenmesine yardımcı olur.
Kullanıcı açısından bakıldığında, yük dengeleme, bir istemci ile bir sunucu topluluğu arasında görünmeyen bir aracı görevi görür ve bağlantı isteklerinin kesilmemesini sağlar. Yük dengeleme olmadan talep çok büyük olursa, uygulamalar, web siteleri, veritabanları ve çevrimiçi hizmetler büyük olasılıkla çökecektir.
Yüz binlerce kullanıcı isteği aynı anda tek bir yüksek trafikli web sitesine gönderilebilir. Web sayfalarını metin, resim, video ve ses akışı gibi istenen içerikle doğru şekilde doldurmak için birden çok sunucu gerekir. Yük dengeleme, yüksek trafikli web sitesi sunucu çiftliklerinde, ayrıca DNS sunucularında, veritabanlarında ve Dosya Aktarım Protokolü (FTP) sitelerinde yaygın olarak kullanılır.
Tek bir sunucu aşırı yüklenmişse, bu yetersiz çalışabilir ve hatta çökebilir. Yük dengeleyiciler, kullanıcı isteklerini bir dizi sunucu arasında eşit olarak dağıtarak kesinti olasılığını azaltır. Gruptaki sunuculardan biri arızalanırsa, trafik gruptaki diğer sunuculara yönlendirilir. Yük dengeleyici, sunucu havuzuna eklendiklerinde trafik dağıtım işlemine otomatik olarak yeni sunucular ekler.
Yük dengeleme nasıl çalışır?
Aşağıdaki gibi çalışır:
- Bir istemci, örneğin bir tarayıcı veya uygulama aracılığıyla bir istek aldığında, sunucuya bağlanmaya çalışır.
- Yük dengeleyici bir istek aldığında, bunu algoritma (veya grup) tarafından oluşturulan kalıplara dayalı olarak bir sunucu grubundaki sunuculardan birine yönlendirir.
- Sunucu, bağlantı isteğini alır ve istemciye yük dengeleyici aracılığıyla yanıt verir.
- Yük dengeleyici yanıtı aldığında, istemcinin IP adresini seçilen sunucunun IP adresiyle eşleştirir. Bunu takiben, cevap paketle birlikte iletilir.
- SSL boşaltma, sunucuların buna gerek duymaması için Güvenlik Yuvası Katmanı şifreleme protokolünü kullanarak verilerin şifresini çözme işlemidir.
- Seans bitene kadar işlem tekrarlanır.
Yük Dengeleme Yöntemleri
Bir sunucu grubundaki sunuculardan hangisinin sonraki isteği alacağını seçmek için her yük dengeleme tekniği bir dizi kriter kullanır. Yük dengeleme için beş tipik yaklaşım vardır:
- daire şeklinde imzalanan dilekçe: Bu varsayılan yaklaşımdır ve göründüğü gibi çalışır. Yük dengeleyici, istekleri gruptaki ilk sunucudan başlayarak ve tekrar çağrılmayı beklediği en alta kadar devam ederek dönen bir düzende dağıtır. Bu yöntem, her sunucunun kabaca aynı sayıda bağlantıyı işlemesini sağlar.
- Ağırlıklı Yuvarlak Robin: Bu yaklaşım, her sunucuya genellikle kapasitesiyle orantılı bir ağırlık (veya tercih) atar. Bir sunucu ne kadar çok istek alırsa, ağırlık o kadar yüksek olur. Örneğin, ağırlık değeri iki olan bir sunucu, ağırlık değeri bir olan bir sunucudan iki kat daha fazla istek alır.
- Sabit Oturum: Oturum kalıcılığı olarak da bilinen bu yaklaşım, bir oturum süresince belirli istemcileri ve sunucuları birbirine bağlar. Bağlantıyı kurmak için yük dengeleyici, bir kullanıcı özniteliğini tanımlamak için bir tanımlama bilgisi veya kullanıcının IP adresini kullanır. Bağlantı kurulduktan sonra, oturum bitene kadar kullanıcının istekleri aynı sunucuya yönlendirilir. Bu, kullanıcı deneyimini geliştirirken ağ kaynaklarını optimize eder.
- En Az Bağlantı: Bu strateji, tüm isteklerin eşit bir sunucu yükü ile sonuçlandığını varsayar. Sonuç olarak, en az sayıda isteğe sahip sunucu bir sonraki isteği alır.
- IP Karması: Bu algoritma, istemci ve sunucunun kaynak ve hedef IP adreslerine dayalı olarak benzersiz bir karma anahtar oluşturur. Anahtar, isteği yönlendirmek için kullanılır ve aynı sunucuyla kopan bağlantının yeniden başlatılmasına izin verir.
Donanım Vs. Yazılım Yük Dengeleyicileri
Donanım Yük Dengeleyici
Bir cihaz gibi fiziksel donanım, donanım yük dengeleyicilerini oluşturur. Bunlar, mevcut bağlantıların sayısı, işlemci kullanımı ve sunucu performansı gibi faktörlere bağlı olarak trafiği sunuculara yönlendirir. Donanım yük dengeleyicileri, yeni sürümler ve güvenlik düzeltmeleri kullanıma sunulduğunda bakımı ve güncellenmesi gereken tescilli bellenime sahiptir.
Donanım yük dengeleyicileri genellikle daha yüksek performans ve kontrolün yanı sıra Kerberos kimlik doğrulaması ve SSL donanım hızlandırma gibi daha geniş bir yetenek yelpazesi sunar, ancak bir düzeyde yönetim ve bakım uzmanlığı gerektirirler. Donanım yük dengeleyicileri, yazılım yük dengeleyicilerinden daha az esnek ve ölçeklenebilir olduğundan, donanım yük dengeleyicilerini aşırı sağlama eğilimi vardır.
Yazılım Yük Dengeleyici
Yazılım yük dengeleyicilerinin kurulumu genellikle donanımdaki emsallerine göre daha kolaydır. Ayrıca daha uygun maliyetli ve uyarlanabilirdirler ve yazılım geliştirme ortamlarıyla iyi çalışırlar. Yazılım yöntemi, yük dengeleyiciyi ortamınızın tam gereksinimlerine göre özelleştirmenize olanak tanır. Artan esneklik, yük dengeleyiciyi kurmak için harcanan ek süre pahasına gelebilir.
Yazılım dengeleyiciler, daha kapalı bir yaklaşıma sahip olan donanım dengeleyicilerinden daha fazla değişiklik ve güncelleme yapmak için size daha fazla esneklik sağlar. Önceden paketlenmiş sanal makineler, yazılım yük dengeleyicileri (VM'ler) olarak kullanılabilir. Sanal makineler size biraz zaman kazandıracak, ancak donanım benzerlerinde bulunan tüm işlevselliklere sahip olmayabilirler.
Basit Yük Dengeleme Uygulaması
Spring Cloud kütüphanesini kullanacağız. uygulamalar oluştur diğer uygulamalara yük dengeli bir şekilde bağlanan. Uzaktan servis isteklerini işlerken, istediğimiz tekniği kullanarak yük dengelemeyi kolayca kurabiliriz. Örnek olarak aşağıdaki kodu düşünün. Temel bir sunucu uygulamasıyla başlayacağız.
Sunucunun yalnızca bir HTTP uç noktası olacaktır ve birkaç durumda çalıştırılacaktır. Ardından, istekleri birkaç sunucu örneğine dağıtmak için Load Balancer kullanan bir istemci uygulaması oluşturacağız.
sunucu
Bir temel ile başlıyoruz Bahar botu örnek sunucumuz için uygulama:
Başlamak için, instance_ID adında özelleştirilebilir bir değişken enjekte ediyoruz. Bu, çalışmakta olan çok sayıda örneği ayırt etmemize yardımcı olur. Bunu takiben, bir mesaj ve örnek kimliği döndüren tek bir HTTP GET uç noktası oluşturuyoruz.
Kimliği 1 olan varsayılan bulut sunucusu 8080 numaralı bağlantı noktasında çalışır. İkinci bir bulut sunucusu başlatmak için yalnızca birkaç program parametresi eklememiz gerekir:
müşteri
Şimdi müşteri koduna bir göz atalım. İşte burada Load Balancer devreye giriyor, o yüzden onu uygulamamıza dahil ederek başlayalım:
Bunu takiben ServiceInstanceListSupplier uygulamasını geliştiriyoruz. Bu, Load Balancer'daki en önemli arayüzlerden biridir. Erişilebilir hizmet örneklerini nasıl bulacağımızı belirtir.
Örnek uygulamamızda örnek sunucumuzun iki ayrı örneğini sabit kodlayacağız. Aynı sistemde çalışırlar ancak ayrı bağlantı noktaları kullanırlar:
Şimdi bir LoadBalancerConfiguration sınıfı oluşturun:
Bu sınıfın tek bir amacı vardır: uzak istekler yapmak için yük dengeli bir WebClient oluşturucu oluşturur. Ek açıklamamız, hizmet için hayali bir ad kullanır.
Bunun nedeni, büyük olasılıkla, örnekleri çalıştırmak için kesin ana bilgisayar adlarını ve bağlantı noktalarını önceden bilemeyecek olmamızdır. Sonuç olarak, yer tutucu olarak hayali bir ad kullanıyoruz ve çerçeve, çalışan bir örnek seçtiğinde gerçek bilgilerin yerini alacak.
Ardından, hizmet örneği kaynağımızı somutlaştırmak için kullanılacak bir Yapılandırma sınıfı oluşturalım. Daha önce olduğu gibi aynı takma adı kullandığımızı unutmayın:
Artık gerçek istemci uygulamasını oluşturabiliriz. Daha önceki WebClient bean'i kullanarak örnek sunucuya 10 sorgu gönderelim:
Çıktıdan, iki ayrı örnek arasında yük dengeleme yaptığımızı görebiliriz:
Mikro Hizmetlerde Yük Dengeleme
Mikro hizmet mimarisi, Netflix ve Amazon gibi birkaç şirket tarafından iş uygulamalarını bir dizi gevşek bağlı hizmet olarak geliştirmek için kullanılıyor. Karmaşık uygulamalar için hiper ölçek ve sürekli teslimat, bu dağıtılmış, gevşek bağlantılı mimariye geçmenin nedenlerinden yalnızca ikisidir.
Bu kuruluşların ekipleri, uygulamaları geleneksel yöntemlerden daha hızlı ve daha düşük hata oranıyla üretmek için Çevik ve DevOps stratejilerini uyguladı. Ancak, dağıtılmış mimarinin karmaşıklığı ile uygulamanın talepleri, ölçek gereksinimleri ve pazara sunma süresi sınırlamaları arasında bir denge kurmalısınız.
Uzun yıllardır, uygulama teslim denetleyicileri (ADC'ler), şirket içinde veya bulutta barındırılan kurumsal uygulamalar için hizmet düzeyi gereksinimlerini karşılamada kritik öneme sahiptir. Mikro hizmet tabanlı bir uygulamayla ilgilenen bir istemcinin, istemciyi ve mikro hizmetleri bağımsız olarak büyütmek için onu sağlayan örnekler hakkında bilgi sahibi olması gerekmez.
Bu tam olarak bir ters proxy veya bir yük dengeleyici tarafından sağlanan ayrıştırmadır. Yine yük dengeleme, mikro hizmetlerin talebi, güvenliği ve kullanılabilirliği karşılayabilmesini sağlamaya yönelik çözümdür.
İstemci ve mikro hizmet tabanlı uygulamalar arasındaki geleneksel Kuzey-Güney yük dengelemeyi, yatay ölçeklenebilirlik için Doğu-Batı dağıtımıyla birleştirdiğinizde, önemli bir artış elde edersiniz. Amaç, geliştirme çevikliğinden veya geliştirme çevikliğinden ödün vermeden BT'nin gerektirdiği güvenli ve düzenlenmiş ortamı sürdürmektir. DevOps otomasyonu gereksinimleri.
Faydaları
Yük dengeleme, yüksek trafikli web siteleri ve uygulamaların yanı sıra çok sayıda sorgu alan veritabanları için kaynak kullanımını, veri dağıtımını ve yanıt süresini iyileştirerek çeşitli avantajlar sağlar. Yük dengeleme, yüksek trafik senaryolarında kullanıcı isteklerinin hızlı ve doğru bir şekilde yerine getirilmesini sağlar.
Kullanıcıları, yavaş program ve kaynaklarla uğraşmanın ağırlaşmasından kurtarırlar. Yük dengeleme aynı zamanda kesinti sürelerini önlemeye ve güvenliği basitleştirmeye yardımcı olarak şirketiniz için üretkenlik ve kazanç kaybı riskini azaltır.
- Yük dengeleme, trafiği optimum verimlilikle yönetmenin yanı sıra, talep gerektirdiğinde sunucu ekleme ve kaldırma esnekliği sağlar. Bakım sırasında trafik diğer sunuculara yönlendirildiğinden, kullanıcıları rahatsız etmeden sunucu bakımını yapmak da mümkündür.
- Yük dengeleme, trafiği bir dizi sunucu arasında bölerek yerleşik yedeklilik sağlar. Biri başarısız olursa, yükü hemen diğer sunuculara yönlendirerek kullanıcılar üzerindeki etkiyi en aza indirebilirsiniz.
- Bir uygulamanın veya web sitesinin kullanımı artarsa, artan trafik, etkin bir şekilde ele alınmazsa performansını düşürebilir. Yük dengeleme ile hizmeti kesintiye uğratmadan talebi karşılamak için gerçek veya sanal bir sunucu ekleyebilirsiniz. Yük dengeleyici, yeni sunucuları çevrimiçi olduklarında tanımlar ve bunları zahmetsizce operasyona dahil eder. Bu yöntem, bir web sitesini aşırı yüklenmiş bir sunucudan yenisine taşımak için tercih edilir ve bu genellikle bazı kesintiler içerir.
Sonuç
Yük dengeleme, çağdaş, hataya dayanıklı sistemlerin kritik bir bileşenidir. Çeşitli yük dengeleme yaklaşımlarını kullanarak istekleri birden çok hizmet örneğine dağıtan uygulamaları kolayca oluşturabiliriz. İşletmeler, uygulamaları güvenli bir şekilde sağlamak için karmaşık BT sistemlerini desteklemelidir.
Etki alanları arası mikro hizmet yapılandırması, dağıtımı ve bakımı hataya açık, pahalı ve zaman alıcı olabilir. BT, bu mikro hizmetlerin kurulumunu ve bakımını kolaylaştırmak için çevik ve DevOps süreçleriyle uyumlu otomasyon, görünürlük, analitik ve orkestrasyon en iyi uygulamalarını ve teknolojilerini kullanmalıdır.
Yorum bırak