GitHub'ın 11000'den fazla yıldızı var Ali'nin açık kaynaklı mikro hizmet bileşenleri, Double Eleven promosyonunu arka arkaya 10 yıl boyunca nasıl tutabilir?

Yazar | Su He, Alibaba Cloud Kıdemli Geliştirme Mühendisi

Editör | Tang Xiaoyin

Mühür haritası | Oriental IC'den CSDN indirme

Üretildi | CSDN (ID: CSDNnews)

Salgın sırasında, "kart" birçok insanın internette deneyimlemesi için anahtar kelime haline geldi. Bir maske satın almak için çevrimiçi randevu aldığımda, aniden ödeme yapamadım; çok fazla çevrimiçi kurs istemem istendi ve sistem yanıt vermedi; çevrimiçi ofis / öğretim sırasında görüntülerde veya seslerde takılı kaldım ... Azalan kullanılabilirlik içeren bu senaryolar, kullanıcı deneyimini ciddi şekilde etkiledi Ayrıca şirketin iş verimini de düşürür. "Sıkışmışlık" karşısında, biz geliştiriciler olarak, istikrarsız etkenleri önceden önlemek için önceden bazı önlemler almalıyız ve aynı zamanda ani trafik durumunda kayıpları hızla durdurma yeteneğine sahip olmalıyız.

Son yıllarda, mikro hizmetlerin kararlılığı, geliştiriciler için büyük bir endişe konusu haline geldi. İş, tek bir mimariden dağıtılmış bir mimariye ve dağıtım yöntemlerinde değişikliklere doğru geliştikçe, hizmetler arasındaki bağımlılıklar gittikçe daha karmaşık hale geldi ve iş sistemleri de büyük yüksek kullanılabilirlik zorluklarıyla karşı karşıya.

Hizmetlerin kullanılabilirliği nasıl sağlanır? Bu, tüm yönleri içeren çok geniş bir konudur, önemli araçlardan biri akış kontrolünün bozulmasıdır.

Akış kontrolünü neden düşürmelisiniz?

Trafik çok rastgele ve tahmin edilemez. İlk saniye sakin olabilir ve dalgalar sakin olabilir, ancak sonraki saniyede bir trafik zirvesi olabilir (örneğin, çift 11 sıfır noktası senaryosu). Ancak sistemimizin kapasitesi her zaman sınırlıdır, ani trafik sistemin kapasitesini aşarsa, talebin fazla işlenmesine, biriken istek işlemenin yavaşlamasına, CPU / Yükün yükselmesine ve sonunda sistem çökmesine neden olabilir. Bu nedenle, isteği mümkün olduğunca işlerken hizmetin kesintiye uğramamasını sağlamak için bu trafik artışını sınırlamamız gerekir.

Bir hizmet genellikle başka bir uzak hizmet, veritabanı veya üçüncü taraf API olabilecek diğer modülleri çağırır. Örneğin, ödeme yaparken UnionPay tarafından sağlanan API'yi uzaktan aramanız gerekebilir; bir ürünün fiyatını sorgulamak için veritabanını sorgulamanız gerekebilir. Ancak, bu bağımlı hizmetin kararlılığı garanti edilemez. Bağımlı hizmet kararsızsa ve talebin yanıt süresi uzarsa, hizmeti çağıran yöntemin yanıt süresi de uzar ve iş parçacıkları birikir, bu da sonunda işletmenin iş parçacığı havuzunu tüketebilir ve hizmetin kendisi de değişir. Mevcut değil.

Modern mikro hizmet mimarileri dağıtılmıştır ve birçok hizmetten oluşur. Farklı hizmetler, karmaşık bir arama bağlantısı oluşturmak için birbirini arar. Yukarıdaki problemler bağlantı aramasında genişletilmiş bir etkiye sahip olacaktır. Karmaşık bir bağlantı üzerindeki belirli bir halka kararsızsa, katman katman kademeli olarak ortaya çıkabilir ve sonuçta bağlantının tamamının kullanılamamasına neden olabilir. Bu nedenle, kararsız hizmetlerin derecesini düşürmemiz, kararsız çağrıları geçici olarak kesmemiz ve genel bir çığa yol açan yerel istikrarsızlık faktörlerinden kaçınmamız gerekir.

Öyleyse, hizmetin büyüklüğünün küçük olması ve akım sınırlayıcı korumaya gerek olmaması mı? Mikro hizmetlerin yapısı nispeten basit mi ve bir sigorta koruma mekanizmasına ihtiyaç duymuyor mu?

Aslında bunun, talebin büyüklüğü ve mimarinin karmaşıklığı ile hiçbir ilgisi yoktur. Çoğu durumda, genel işi etkileyen ve büyük kayıplara neden olan çok marjinal bir hizmetin başarısızlığı olabilir. Başarısızlık odaklı tasarımın farkında olmamız, kapasite planlamasında iyi bir iş yapmamız ve güçlü ve zayıf bağımlılıkları çözmemiz, akış kontrolü düşürme kurallarını makul bir şekilde yapılandırmamız ve çevrimiçi sorunlardan sonra sorunları çözmek yerine ön-önleme koruması yapmamız gerekir.

Öyleyse sormak isteyebilirsiniz: Yüksek kullanılabilirlik korumasını hızlı bir şekilde gerçekleştirmenin bir yolu var mı? Tek tip ve sorunsuz kullanıcı erişimi nasıl sağlanır? Bu kararsız faktörlerin etkisi nasıl önlenir? Bugün sizlerle Alibaba'nın son 10 yılda ikili on bir istikrar promosyon sahnesini taşıyan bir trafik kontrol bileşeni olan Sentinel'in uygulamasını paylaşacağız.

Sentinel: Bulutta yerel mikro hizmetler için bileşenleri birleştirme ve küçültme akış kontrolü

Sentinel, Alibaba'nın dağıtılmış hizmet mimarisi için açık kaynaklı trafik kontrol bileşenidir ve şu anda GitHub'da 11.071 Yıldız almıştır. Temelde trafiği giriş noktası olarak alarak geliştiricilerin akış kontrolü, trafik şekillendirme, sigorta bozulması ve sistem uyarlamalı koruma gibi birden çok boyuttan mikro hizmetlerin kararlılığını sağlamalarına yardımcı olur. Sentinel, mikro hizmetlerin yüksek kullanılabilirliğini sağlamak için Alibaba'nın son 10 yıldaki çift on bir ana trafik promosyonunun ana senaryolarını üstlendi; örneğin ani artış, soğuk başlatma, mesaj tepe noktası ve vadi doldurma, küme akış kontrolü, aşağı akış kullanılamayan hizmetlerin gerçek zamanlı sigortası, vb. Keskin silah.

https://github.com/alibaba/Sentinel

Sentinel kaynakları ve kurallarındaki iki temel kavram. Kaynak (Kaynak), SQL erişimi, REST API erişimi, Dubbo servis çağrısı, Reaktif servis, API ağ geçidi yönlendirme erişimi ve hatta herhangi bir kod bloğu gibi korunması gereken bir kod bloğu (veya çağrı) olarak anlaşılabilir. Sentinel için bir kaynak olarak. Kullanıcılar, Sentinel API veya ek açıklamalar aracılığıyla kaynakları manuel olarak yerleştirebilir veya Sentinel tarafından sağlanan çerçeve uyarlama modülü aracılığıyla bağımlı tek tıklamayla erişim sağlayabilir. Kural, belirli bir kaynak için bir kontrol yöntemidir.Örneğin, yüksek kullanılabilirlik korumasının etkisini elde etmek için belirli bir hizmet veya yöntem için akış kontrol kurallarını ve sürüm düşürme kurallarını yapılandırabiliriz.

Temel özellikleri ve teknolojileri aşağıdaki gibidir:

  • İstatistiklerin doğruluğunu sağlarken iyi performans gösteren, kayan pencere yapısına dayalı gerçek zamanlı istatistikler;

  • Son derece genişletilebilir yetenek: temel çekirdek + SPI arayüz genişletme yeteneği, kullanıcılar akış kontrolünü, iletişimi, izlemeyi ve diğer işlevleri kolayca genişletebilir;

  • Çeşitlendirilmiş akış kontrol stratejileri (kaynak granülerliği, çağrı ilişkileri, akış kontrol göstergeleri, akış kontrol etkileri ve diğer boyutlar), dağıtılmış küme akış kontrolü yetenekleri sağlar ve sıcak nokta trafik algılama ve koruma yetenekleri sağlar;

  • Fuse downgrade ve kararsız hizmetleri izole edin;

  • Küresel sistem yükü uyarlamalı koruma, sistem su seviyesine göre gerçek zamanlı akış ayarı;

  • API Ağ Geçidi senaryosunu kapsayan, Spring Cloud Gateway ve Zuul için ağ geçidi trafik kontrolü yeteneği sağlayan;

  • Bulut yerel senaryosu, Envoy hizmet ağı küme akış denetimi yeteneğini sağlar;

  • Kuralların gerçek zamanlı izleme ve dinamik yapılandırma yönetimi yetenekleri.

Aynı zamanda Sentinel, hizmetlerin gerçek zamanlı izlenmesi için konsola bağlanabilen basit bir WYSIWYG konsolu sağlar ve aynı zamanda konsoldaki kuralları gerçek zamanlı olarak yapılandırabilir ve yönetebilirsiniz:

Sentinel'in bazı yaygın kullanım senaryoları ve en iyi uygulamaları şunlardır:

Servis sağlayıcı (Servis Sağlayıcı) senaryosunda, servis sağlayıcının kendisini trafik sellerinden etkilenmekten korumamız gerekir. Bu zamanda, akış kontrolü genellikle hizmet sağlayıcının hizmet kapasitesine göre gerçekleştirilir veya belirli bir hizmet arayan için kısıtlanır. Çekirdek arayüzün dayanıklılığını önceki stres testi ile birlikte değerlendirebilir ve QPS modunun mevcut sınırını yapılandırabiliriz.Saniyedeki istek sayısı belirlenen eşiği aştığında, gereksiz istekler otomatik olarak reddedilecektir.

Diğer servisler aranırken kararsız servisler tarafından aşağıya çekilmekten kaçınmak için, servis çağrısı tarafındaki (Servis Tüketicisi) istikrarsız servis bağımlılıklarını izole etmek ve sigortalamak gerekir. Yöntemler arasında semafor izolasyonu, anormal oran bozulması ve RT degradasyonu bulunur.

Sistem uzun süre düşük su seviyesindeyken, akış aniden arttığında sistemi doğrudan yüksek su seviyesine çekmek sistemi anında ezebilir. Şu anda, Sentinel'in WarmUp akış kontrol modunu, geçen trafiğin bir kerede gitmesine izin vermek yerine, belirli bir süre içinde kademeli olarak üst eşiğe yükselmesini, yavaşça artmasını kontrol etmek için kullanabiliriz. Bu, soğuk sistemin aşırı yüklenmesini önlemek için soğuk sisteme bir ısınma süresi verebilir.

Sentinel'in tek tip hızlı kuyruk modu, "zirveleri kesmek ve vadileri doldurmak" için kullanılır, istek artışlarını belirli bir süreye eşit olarak yayar, sistem yükünü istek işleme seviyesinde tutar ve mümkün olduğunca çok sayıda isteği işleme koyar.

Ağ geçidi girişindeki trafiği korumak için Sentinel'in ağ geçidi akış kontrol özelliğini kullanın ve aynı zamanda farklı kullanıcılar ve IP'ler için API çağrılarının sıklığını sınırlayın.

Envoy kümesine küresel akış denetimi özellikleri sağlamak için Istio + Envoy mimarisi altında Sentinel RLS belirteç sunucusuna hızlı bir şekilde erişin.

Sentinel'in açık kaynak ekolojisi

Sentinel, mikro hizmetlerin, API Ağ Geçidinin ve Hizmet Ağının temel ekosistemlerini kapsayan zengin bir açık kaynak ekosistemine sahiptir. Sentinel açık kaynağı yakında CNCF Peyzaj düzenine dahil edildi ve aynı zamanda Spring Cloud tarafından resmi olarak önerilen akış kontrolü bozunma bileşenlerinden biri haline geldi. Topluluk, Spring Cloud, Dubbo, gRPC vb. Gibi ortak çerçevelere kullanıma hazır uyarlamalar sağlar; ayrıca Reactive ekosistemini destekler ve Reactor ve Spring WebFlux asenkron yanıt mimarisini destekler. Sentinel ayrıca aşamalı olarak API Ağ Geçidi ve Hizmet Ağı senaryolarını ele alarak bulut yerel mimarisinde daha büyük bir rol oynamaktadır.

Sentinel Çok dilli gelişim ve gelecek beklentileri

Sentinel, ilk günlerde öncelikle Java mikro hizmetlerine yönelikti ve aynı zamanda sürekli olarak çok dilli genişlemenin yönünü araştırıyor. Geçen yılın ortasında Sentinel, C ++ yerel sürümünü piyasaya sürdü.Sentinel, Service Mesh senaryosu için, Service Mesh mimarisi altında çoklu dil akım sınırı sorununu çözebilen Envoy küme akış kontrol desteğini de başlattı.

Kısa bir süre önce Sentinel Çok Dilli Kulübü yeni bir üyeyi başlattı - Sentinel Go'nun ilk yerel sürümü resmi olarak piyasaya sürüldü ve akış denetimi düşürme ve sistem koruması gibi özelliklerle Go dili mikro hizmetleri için yerel destek sağladı. Geliştiriciler Sentinel'e birkaç basit adımda hızla erişebilir ve aşağıdaki özelliklerin keyfini çıkarabilir:

  • Çekirdek arayüzün zarar görmesini önlemek için arayüz seviyesinin QPS'sini kesin olarak sınırlayın.

  • En yüksek seviyede tıraş ve derinlik dolgusu, işlenmek üzere sıraya alınan talepler.

  • Uyarlanabilir sistem boyutu trafik koruması, yük ve diğer sistem göstergeleri ve gerçek zamanlı hizmet talebi hacmi ve aşırı trafiği otomatik olarak reddetmek için yanıt süresi ile birlikte, hizmetin askıya alınmamasını sağlarken verimi olabildiğince iyileştirir.

  • Sistemin gerçek zamanlı trafik durumunu anlamak için günlükleri izleme yoluyla gerçek zamanlı ikinci seviye izleme özelliği.

Sentinel Go açık kaynak adresi:

https://github.com/alibaba/sentinel-golang

Bir sonraki sürümde, Sentinel Go, art arda devre kesici düşürme, sıcak parametre istatistikleri ve akış kontrolü gibi bir dizi kararlılık garantisi özelliği sunacak. Aynı zamanda topluluk, yaygın olarak kullanılan çerçeveler ve bulut yerel bileşenleri ile entegrasyon modülleri sağlamaya devam edecek.

Sentinel, gelecekte çok dilli ve bulut yereline doğru gelişmeye devam edecek. Sentinel şu anda üç dili desteklemektedir: Java, Go ve C ++ ve topluluk gelecekte daha fazla dili destekleyecektir. Aynı zamanda, geliştiricilerin yüksek kullanılabilirlik koruma özelliklerinden yararlanmak için çeşitli bulut tabanlı senaryolarda Sentinel'e hızlı bir şekilde erişebilmeleri için, yerel Istio Hizmet Ağının entegrasyonu gibi API Ağ Geçidi ve Hizmet Ağının akış kontrol senaryolarını iyileştirmeye devam edeceğiz. Topluluk ayrıca Prometheus gibi bulutta yerel izleme bileşenleri ile entegrasyon sağlamayı planlıyor.Sentinel'in gösterge istatistikleri, otomatik kararlılık garantileri sağlamak için K8S HPA elastik mekanizması, uyarlanabilir akış kontrolü vb. İle birlikte arayüz düzeyinde izleme için kullanılabilir.

Alibaba Cloud'un temel teknik rekabet gücünün kapsamlı analizi

CSDN özel çevrimiçi zirvesi geliyor!

18-19 Mart tarihleri arasında, CSDN'nin kurucusu ve Geekbang Venture Capital'in kurucu ortağı Jiang Tao, Alibaba Cloud araştırmacısı Jiang Linquan, Alibaba Cloud'un akıllı ağ bilimcisi Ding Xianfeng, Alibaba Cloud Intelligent Business Group araştırmacısı, ağ ürün hattından sorumlu Zhu Shunmin, Alibaba Dharma Enstitüsü kıdemli algoritma uzmanı Xie Xuansong ve diğer 12 büyük isim, Alibaba Cloud'u piyasaya sürmek için sanallaştırma, depolama, ağ, güvenlik, bulut bilişim, büyük veri, Nesnelerin İnterneti gibi çeşitli boyutlardan başlayarak CSDN canlı yayın odasında bir araya geldi. Çekirdek teknoloji ve rekabet gücü.

anlaştık mı! Baidu'nun işletme ve bakım mühendisi 100.000 yasadışı madencilik karı elde etti ve 3 yıl hapis cezasına çarptırıldı Hapishaneler için programlamadan nasıl kaçınılır?
önceki
Dujiangyan'dan Siçuan'daki Siguniang Dağı'na dağ demiryolu geçiş yoksulluğunun azaltılması projesinin temel atma töreni düzenlendi
Sonraki
Python'da bir Doraemon nasıl çizilir? | Güç Projesi
10.000 kişilik bir maratonda yüz tanıma sistemi doğrulamayı hızlı ve doğru bir şekilde nasıl tamamlayabilir?
Kapsülden kasaya, Xiaobai'ye Kubernetes teknik dersi verin
Lightning Network'ün şifreli mesajlaşma şeklini nasıl değiştirdiğini anlatmak için 3 "güvercin" kullanın
CDN / video akışı, 2 yıl içinde büyük ölçekli ticari kullanıma ulaşan bir "rüzgar çıkışı" haline geldi ve 2020'de uç bilişimin gelişme durumunu ortaya koydu
Alibaba Cloud Dragon'un en son ASPLOS belgesinin yorumlanması olan performans sınırını aşın
Birleşmiş Milletler tarafından önerilen milyonlarca insanın canlı yayına direnişi, Feishu teknolojisinin evriminin başlangıcı
React + MirrorX'i on dakika içinde kullanmaya başlayın, o zamandan beri ön uç kodunu anlamak artık zor değil | Güç Projesi
Modern "Merhaba, Dünya" birkaç satır koddan daha fazlasıdır
Python, küresel salgının eğilimini görmek için dinamik grafikler oluşturur
Bu kadar! Python sarıdır! Programcıların% 80'i: Mutlu, ne düşünüyorsun?
Baidu Mühendisi 100.000 yasadışı madencilik karı, 3 yıl hapse mahk wasm edildi; Apple'ın antitröst davası 1.1 milyar avro para cezasına çarptırıldı; Github NPM edinmeyi planlıyor | Geek manşetleri
To Top