Pianu di dati di maglia di serviziu versus pianu di cuntrollu

Ehi Habr! Prestu à a vostra attenzione a traduzzione di l'articulu "Aereo di dati di rete di serviziu versus pianu di cuntrollu" autore Matt Klein.

Pianu di dati di maglia di serviziu versus pianu di cuntrollu

Sta volta, aghju "vulutu è traduttu" a descrizzione di i dui cumpunenti di rete di serviziu, u pianu di dati è u pianu di cuntrollu. Sta descrizzione mi pareva a più comprensibile è interessante, è u più impurtante chì porta à a cunniscenza di "Hè necessariu in tuttu?"

Siccomu l'idea di una "Maglia di serviziu" hè diventata sempri più populari in l'ultimi dui anni (Articulu originale 10 d'ottobre 2017) è u numeru di i participanti in u spaziu hè aumentatu, aghju vistu un aumentu proporzionale di cunfusione in tuttu u mondu. cumunità tecnologica in quantu à paragunà è cuntrastà diverse soluzioni.

A situazione hè megliu riassunta da a seguente serie di tweets chì aghju scrittu in lugliu:

Confusione di rete di serviziu #1: Linkerd ~ = Nginx ~ = Haproxy ~ = Envoy. Nisunu d'elli sò uguali à Istio. Istio hè qualcosa di completamente diversu. 1/

I primi sò solu piani di dati. Per elli stessi ùn facenu nunda. Deve esse in umore per qualcosa di più. 2/

Istio hè un esempiu di un pianu di cuntrollu chì unisce e parti. Questu hè un altru stratu. / fine

I tweets precedenti menzionanu parechji prughjetti diffirenti (Linkerd, NGINX, HAProxy, Envoy, è Istio), ma più importantemente introducenu i cuncetti generali di u pianu di dati, a rete di serviziu è u pianu di cuntrollu. In questu post, faraghju un passu in daretu è parleraghju di ciò chì vogliu dì cù i termini "pianu di dati" è "aviò di cuntrollu" à un livellu assai altu, è poi parlerà di cumu i termini s'applicanu à i prughjetti citati in i tweets.

Chì ghjè una rete di serviziu, veramente?

Pianu di dati di maglia di serviziu versus pianu di cuntrollu
Figura 1: Panoramica di a rete di serviziu

Disegnu 1 illustra u cuncettu di una rete di serviziu à u so livellu più basicu. Ci sò quattru gruppi di serviziu (AD). Ogni istanza di serviziu hè assuciata à un servitore proxy locale. Tuttu u trafficu di a rete (HTTP, REST, gRPC, Redis, etc.) da una sola istanza di l'applicazione hè passatu per un proxy locale à i clusters di servizii esterni appropritati. In questu modu, l'istanza di l'applicazione ùn hè micca cunnisciuta di a reta cum'è un sanu è cunnosci solu di u so proxy lucale. In effetti, a reta di u sistema distribuitu hè stata eliminata da u serviziu.

Pianu di dati

In una rete di serviziu, un servitore proxy situatu in u locu per l'applicazione esegue e seguenti attività:

  • Scuperta di serviziu. Chì servizii / applicazioni sò dispunibili per a vostra applicazione?
  • Cuntrolla di salute. Sò l'istanze di serviziu restituite da a scuperta di serviziu sani è pronti per accettà u trafficu di a rete? Questu pò include sia attivi (per esempiu risposta / cuntrolu di salute) è passivi (per esempiu utilizendu 3 errori consecutivi 5xx cum'è indicazione di un statu di serviziu malsanu) cuntrolli di salute.
  • Routing. Quandu riceve una dumanda à "/foo" da un serviziu REST, à quale cluster di serviziu deve esse mandatu a dumanda?
  • Equilibratu di carica. Una volta chì un cluster di serviziu hè statu sceltu durante u routing, à quale istanza di serviziu deve esse mandata a dumanda? Cù chì timeout? Cù quali paràmetri di circuit breaking? Se a dumanda falla, deve esse ripruvata?
  • Autentificazione è auturizazione. Per e dumande entrate, u serviziu di chjama pò esse identificatu / autorizatu criptograficamente cù mTLS o un altru mecanismu? S'ellu hè ricunnisciutu / autorizatu, hè permessu di chjamà l'operazione dumandata (endpoint) nantu à u serviziu o deve esse restituita una risposta micca autenticata?
  • Osservabilità. Statistiche dettagliate, logs / logs, è dati di traccia distribuiti devenu esse generati per ogni dumanda in modu chì l'operatori ponu capisce u flussu di trafficu distribuitu è ​​i prublemi di debugging quandu si sviluppanu.

U pianu di dati hè rispunsevule per tutti i punti precedenti in a rete di serviziu. In fattu, u proxy locale à u serviziu (sidecar) hè u pianu di dati. In altri palori, u pianu di dati hè rispunsevuli di trasmette in cundizzioni, invià è monitorà ogni pacchettu di rete chì hè mandatu à o da un serviziu.

U pianu di cuntrollu

L'astrazione di a rete chì un proxy locale furnisce in u pianu di dati hè magicu (?). Tuttavia, cumu u proxy cunnosce veramente a strada "/foo" à u serviziu B? Cumu ponu esse utilizati i dati di scuperta di serviziu chì sò populati da e dumande di proxy? Cumu sò i paràmetri cunfigurati per l'equilibriu di carica, timeout, circuit breaking, etc.? Cumu implementà una applicazione cù u metudu blu / verde o u metudu di transizione di trafficu graziosu? Quale cunfigura i paràmetri di l'autentificazione è l'autorizazione in tuttu u sistema?

Tutti l'articuli sopra sò sottu à u cuntrollu di u pianu di cuntrollu di a rete di serviziu. U pianu di cuntrollu piglia un inseme di proxy senza statu isolati è li trasforma in un sistema distribuitu.

Pensu chì a raghjoni chì parechji tecnulugichi trovanu i cuncetti separati di u pianu di dati è u pianu di cuntrollu cunfusu hè perchè per a maiò parte di a ghjente, u pianu di dati hè familiarizatu mentre u pianu di cuntrollu hè straneru / incomprisu. Avemu travagliatu cù routers è switches di rete fisica per un bellu pezzu. Capemu chì i pacchetti / richieste anu da andà da u puntu A à u puntu B è chì pudemu usà hardware è software per fà questu. A nova generazione di proxy software sò solu versioni fantastiche di l'arnesi chì avemu usatu per un bellu pezzu.

Pianu di dati di maglia di serviziu versus pianu di cuntrollu
Figura 2: Pianu di cuntrollu umanu

In ogni casu, avemu usatu piani di cuntrollu per un bellu pezzu, ancu s'è a maiò parte di l'operatori di rete ùn ponu micca assuciatu sta parte di u sistema cù qualsiasi cumpunente di tecnulugia. U mutivu hè simplice:
A maiò parte di i piani di cuntrollu in usu oghje sò... noi.

nantu Figura 2 mostra ciò chì chjamu u "pianu di cuntrollu umanu". In questu tipu di implementazione, chì hè sempre assai cumuna, un operatore umanu prubabilmente grumpy crea cunfigurazioni statiche - potenzalmentu via scripts - è li implementa attraversu un prucessu speciale à tutti i proxy. I proxy allora cumincianu à aduprà sta cunfigurazione è cumincianu à trasfurmà u pianu di dati utilizendu i paràmetri aghjurnati.

Pianu di dati di maglia di serviziu versus pianu di cuntrollu
Figura 3: Pianu di cuntrollu di maglia di serviziu avanzatu

nantu Figura 3 mostra u pianu di cuntrollu "estesa" di a rete di serviziu. Hè custituitu di e seguenti parti:

  • U umanu: Ci hè sempre una persona (sperendu menu arrabbiata) chì face decisioni d'altu livellu in quantu à tuttu u sistema in tuttu.
  • UI di u pianu di cuntrollu: Una persona interagisce cù qualchì tipu d'interfaccia d'utilizatore per cuntrullà u sistema. Questu puderia esse un portale web, una applicazione di linea di cumanda (CLI), o una altra interfaccia. Utilizendu l'interfaccia d'utilizatore, l'operatore hà accessu à i paràmetri di cunfigurazione di u sistema globale cum'è:
    • Cuntrolu di implementazione, transizione di trafficu blu / verde è / o graduale
    • Opzioni di autenticazione è d'autorizazione
    • Specificazioni di a tabella di routing, per esempiu quandu l'applicazione A dumanda infurmazione nantu à "/foo" ciò chì succede
    • Paràmetri di equilibriu di carica, cum'è timeouts, retry, paràmetri di circuit breaking, etc.
  • Pianificatore di carichi di travagliu: I servizii sò eseguiti nantu à l'infrastruttura attraversu qualchì tipu di sistema di pianificazione / orchestrazione, cum'è Kubernetes o Nomad. U pianificatore hè rispunsevule per carricà u serviziu cù u so proxy lucale.
  • Scuperta di serviziu. Quandu u pianificatore principia è ferma l'istanze di serviziu, informa u statu di salute à u sistema di scuperta di serviziu.
  • API di cunfigurazione di proxy sidecar : I proxy lucali estrae dinamicamente u statu da diversi cumpunenti di u sistema utilizendu un mudellu eventualmente coherente senza intervenzione di l'operatore. Tuttu u sistema, custituitu da tutte l'istanze di serviziu attualmente in esecuzione è i servitori proxy lucali, infine cunverge in un ecosistema. L'API universale di u pianu di dati Envoy hè un esempiu di cumu funziona in pratica.

Essenzialmente, u scopu di u pianu di cuntrollu hè di stabilisce a pulitica chì ultimamente serà accettata da u pianu di dati. I piani di cuntrollu più avanzati sguassate più parte di certi sistemi da l'operatore è necessitanu menu operazione manuale, sempre chì travaglianu bè!...

Pianu di dati è pianu di cuntrollu. Riassuntu di u pianu di dati versus u pianu di cuntrollu

  • Pianu di dati di rete di serviziu: Affetta ogni pacchettu / dumanda in u sistema. Responsabile per a scuperta di l'applicazione / serviziu, u cuntrollu di a salute, u routing, l'equilibriu di carica, l'autentificazione / l'autorizazione è l'osservabilità.
  • Pianu di cuntrollu di rete di serviziu: Fornisce pulitica è cunfigurazione per tutti i piani di dati in esecuzione in a reta di serviziu. Ùn tocca micca i pacchetti / dumande nantu à u sistema. U pianu di cuntrollu trasforma tutti i piani di dati in un sistema distribuitu.

U paisaghju di u prughjettu attuale

Dopu avè capitu a spiegazione sopra, fighjemu u statu attuale di u prughjettu di a rete di serviziu.

  • I piani di dati: Linkerd, NGINX, HAProxy, Envoy, Traefik
  • I piani di cuntrollu: Istio, Nelson, SmartStack

Piuttostu chè entre in un'analisi approfondita di ognuna di e soluzioni sopra, aghju da indirizzà brevemente alcuni di i punti chì crede chì causanu assai di a cunfusione in l'ecosistema avà.

Linkerd era unu di i primi servitori proxy di u pianu di dati per a rete di serviziu à principiu di 2016 è hà fattu un travagliu fantasticu per sensibilizà è attente à u mudellu di design di rete di serviziu. Circa 6 mesi dopu, Envoy s'unì à Linkerd (ancu era statu cù Lyft da a fine di u 2015). Linkerd è Envoy sò i dui prughjetti chì sò più spessu citati in discussione di e rete di serviziu.

Istio hè statu annunziatu in maghju 2017. I scopi di u prughjettu Istio sò assai simili à u pianu di cuntrollu allargatu mostratu in Figura 3. Envoy for Istio hè u proxy predeterminatu. Cusì, Istio hè u pianu di cuntrollu, è Envoy hè u pianu di dati. In pocu tempu, Istio hà generatu assai eccitazione, è altri piani di dati cuminciaru à integrà cum'è un sustitutu di Envoy (sia Linkerd è NGINX dimustratu integrazione cù Istio). U fattu chì diversi piani di dati ponu esse aduprati in u stessu pianu di cuntrollu significa chì u pianu di cuntrollu è u pianu di dati ùn sò micca necessariamente strettamente accoppiati. Un API cum'è l'API di u pianu di dati genericu di Envoy pò furmà un ponte trà duie parti di u sistema.

Nelson è SmartStack aiutanu à illustrà più a separazione di u pianu di cuntrollu è u pianu di dati. Nelson usa Envoy cum'è u so proxy è custruisce un pianu di cuntrollu affidabile per a rete di serviziu basatu annantu à a pila HashiCorp, i.e. Nomade, ecc. SmartStack era forse u primu di una nova onda di rete di serviziu. SmartStack custruisce un pianu di cuntrollu intornu à HAProxy o NGINX, dimustrendu a capacità di disaccoppià u pianu di cuntrollu da a rete di serviziu da u pianu di dati.

L'architettura di u microserviziu cù una maglia di serviziu riceve più è più attenzione (ghjustu!), è più prughjetti è venditori cumincianu à travaglià in questa direzzione. In i prossimi anni, vedemu assai innuvazioni in u pianu di dati è in u pianu di cuntrollu, è ancu in più mischjà e diverse cumpunenti. In ultimamente, l'architettura di microserviziu deve diventà più trasparente è magica (?) per l'operatore.
Spergu di menu è menu irritati.

Pigliate chjave

  • Una maglia di serviziu hè custituita da dui parti diffirenti: u pianu di dati è u pianu di cuntrollu. I dui cumpunenti sò necessarii, è senza elli u sistema ùn funziona micca.
  • Tutti sò familiarizati cù u pianu di cuntrollu, è à questu puntu, u pianu di cuntrollu puderia esse voi!
  • Tutti i piani di dati cumpetenu l'una cù l'altri nantu à e caratteristiche, prestazioni, cunfigurabilità è estensibilità.
  • Tutti i piani di cuntrollu cumpetenu cù l'altri in caratteristiche, cunfigurabilità, estensibilità è facilità d'utilizazione.
  • Un pianu di cuntrollu pò cuntene l'astrazioni ghjustificate è l'API per chì parechji piani di dati ponu esse utilizati.

Source: www.habr.com

Add a comment