Pjan tad-dejta tal-malji tas-servizz vs pjan tal-kontroll

Ħej Habr! Nippreżenta għall-attenzjoni tiegħek it-traduzzjoni tal-artiklu "Pjan tad-dejta tal-malji tas-servizz vs pjan tal-kontroll" l-awtur Matt Klein.

Pjan tad-dejta tal-malji tas-servizz vs pjan tal-kontroll

Din id-darba, jien "ridt u tradott" id-deskrizzjoni taż-żewġ komponenti tal-malji tas-servizz, il-pjan tad-dejta u l-pjan ta 'kontroll. Din id-deskrizzjoni dehret lili l-aktar li tinftiehem u interessanti, u l-aktar importanti li wasslet għall-fehim ta '"Huwa meħtieġ għal kollox?"

Peress li l-idea ta '"malji ta' servizz" saret dejjem aktar popolari matul l-aħħar sentejn (Artikolu oriġinali 10 ta 'Ottubru 2017) u n-numru ta' parteċipanti fl-ispazju żdied, rajt żieda proporzjonata fil-konfużjoni fost il-konfużjoni kollha. komunità tat-teknoloġija dwar kif tqabbel u tikkuntrasta soluzzjonijiet differenti.

Is-sitwazzjoni hija mqassra bl-aħjar mod mis-serje ta’ tweets li ktibt f’Lulju:

Konfużjoni tal-malji tas-servizz #1: Linkerd ~ = Nginx ~ = Haproxy ~ = Mibgħut. Ħadd minnhom mhu ugwali għal Istio. Istio hija xi ħaġa kompletament differenti. 1 /

L-ewwel huma sempliċement ajruplani tad-dejta. Waħidhom ma jagħmlu xejn. Għandhom ikunu fil-burdata għal xi ħaġa aktar. 2/

Istio huwa eżempju ta 'pjan ta' kontroll li jgħaqqad il-partijiet flimkien. Dan huwa saff ieħor. /tmiem

It-tweets preċedenti jsemmu diversi proġetti differenti (Linkerd, NGINX, HAProxy, Envoy, u Istio), iżda aktar importanti jintroduċu l-kunċetti ġenerali ta 'pjan tad-dejta, malji tas-servizz u pjan ta' kontroll. F'din il-kariga, ser nagħmel pass lura u nitkellem dwar dak li rrid infisser bit-termini "pjan tad-data" u "pjan ta' kontroll" f'livell għoli ħafna, u mbagħad nitkellem dwar kif it-termini japplikaw għall-proġetti msemmija fit-tweets.

X'inhu xibka tas-servizz, tassew?

Pjan tad-dejta tal-malji tas-servizz vs pjan tal-kontroll
Figura 1: Ħarsa ġenerali tal-malji tas-servizz

Figura 1 juri l-kunċett ta' malja ta' servizz fil-livell l-aktar bażiku tagħha. Hemm erba' gruppi ta' servizzi (AD). Kull istanza ta' servizz hija assoċjata ma' server proxy lokali. It-traffiku kollu tan-netwerk (HTTP, REST, gRPC, Redis, eċċ.) minn istanza ta' applikazzjoni waħda jgħaddi minn prokura lokali għar-raggruppamenti ta' servizzi esterni xierqa. B'dan il-mod, l-istanza tal-applikazzjoni mhix konxja tan-netwerk kollu kemm hu u konxja biss tal-prokura lokali tagħha. Fil-fatt, in-netwerk tas-sistema distribwita tneħħa mis-servizz.

Ajru tad-data

F'malja tas-servizz, server proxy li jinsab lokalment għall-applikazzjoni jwettaq il-kompiti li ġejjin:

  • Skoperta tas-servizz. Liema servizzi/applikazzjonijiet huma disponibbli għall-applikazzjoni tiegħek?
  • Kontroll tas-saħħa. L-istanzi tas-servizz ritornati mill-iskoperta tas-servizz huma b'saħħithom u lesti biex jaċċettaw it-traffiku tan-netwerk? Dan jista' jinkludi kontrolli tas-saħħa kemm attivi (eż. rispons/kontroll tas-saħħa) kif ukoll passivi (eż. bl-użu ta' 3 żbalji konsekuttivi 5xx bħala indikazzjoni ta' stat ta' servizz mhux tajjeb għas-saħħa).
  • Rotot. Meta tirċievi talba lil "/foo" minn servizz REST, lil liema cluster tas-servizz għandha tintbagħat it-talba?
  • Ibbilanċjar tat-tagħbija. Ladarba raggruppament tas-servizz ikun intgħażel waqt ir-rotta, lil liema istanza tas-servizz għandha tintbagħat it-talba? B'liema timeout? B'liema settings ta 'circuit breaking? Jekk it-talba tonqos, għandha terġa' tiġi ppruvata?
  • Awtentikazzjoni u awtorizzazzjoni. Għal talbiet deħlin, is-servizz tas-sejħa jista' jiġi identifikat/awtorizzat kriptografikament bl-użu ta' mTLS jew xi mekkaniżmu ieħor? Jekk ikun rikonoxxut/awtorizzat, huwa permess li jsejjaħ l-operazzjoni mitluba (endpoint) fuq is-servizz jew għandha tingħata tweġiba mhux awtentikata?
  • Osservabbiltà. Għandhom jiġu ġġenerati statistiċi dettaljati, zkuk/zkuk, u dejta ta' traċċa mqassma għal kull talba sabiex l-operaturi jkunu jistgħu jifhmu kwistjonijiet ta' fluss tat-traffiku distribwit u debugging hekk kif jinqalgħu.

Il-pjan tad-dejta huwa responsabbli għall-punti preċedenti kollha fil-malja tas-servizz. Fil-fatt, il-proxy lokali għas-servizz (sidecar) huwa l-pjan tad-dejta. Fi kliem ieħor, il-pjan tad-dejta huwa responsabbli għax-xandir, it-trażmissjoni u l-monitoraġġ kondizzjonali ta 'kull pakkett tan-netwerk li jintbagħat lil jew minn servizz.

Il-pjan ta 'kontroll

L-estrazzjoni tan-netwerk li prokura lokali tipprovdi fil-pjan tad-dejta hija maġika(?). Madankollu, il-prokura kif fil-fatt jaf dwar ir-rotta "/foo" għas-servizz B? Kif tista' tintuża d-dejta tal-iskoperta tas-servizz li hija popolata minn talbiet ta' prokura? Kif huma kkonfigurati l-parametri għall-ibbilanċjar tat-tagħbija, timeout, circuit breaking, eċċ.? Kif tuża applikazzjoni bl-użu tal-metodu blu/aħdar jew il-metodu ta 'tranżizzjoni tat-traffiku graceful? Min jikkonfigura s-settings ta' awtentikazzjoni u awtorizzazzjoni fis-sistema kollha?

L-oġġetti kollha ta 'hawn fuq huma taħt il-kontroll tal-pjan ta' kontroll tal-malji tas-servizz. Il-pjan ta 'kontroll jieħu sett ta' prokuri iżolati mingħajr stat u jibdilhom f'sistema distribwita.

Naħseb li r-raġuni li ħafna teknoloġisti jsibu l-kunċetti separati tal-pjan tad-dejta u l-pjan ta 'kontroll konfużi hija minħabba li għal ħafna nies il-pjan tad-dejta huwa familjari filwaqt li l-pjan ta' kontroll huwa barrani / mhux mifhum. Ilna naħdmu ma 'routers u swiċċijiet tan-netwerk fiżiku għal żmien twil. Aħna nifhmu li pakketti/talbiet iridu jmorru minn punt A għal punt B u li nistgħu nużaw ħardwer u software biex nagħmlu dan. Il-ġenerazzjoni l-ġdida ta 'prokuri tas-softwer huma sempliċiment verżjonijiet fancy tal-għodod li ilna nużaw għal żmien twil.

Pjan tad-dejta tal-malji tas-servizz vs pjan tal-kontroll
Figura 2: Pjan tal-kontroll tal-bniedem

Madankollu, ilna nużaw pjani ta 'kontroll għal żmien twil, għalkemm il-biċċa l-kbira tal-operaturi tan-netwerk jistgħu ma jassoċjawx din il-parti tas-sistema ma' xi komponent tat-teknoloġija. Ir-raġuni hija sempliċi:
Ħafna mill-ajruplani tal-kontroll li qed jintużaw illum huma... aħna.

Fuq Figura 2 juri dak li jien insejjaħ il-“pjan ta’ kontroll tal-bniedem.” F'dan it-tip ta 'skjerament, li għadu komuni ħafna, operatur uman probabbilment grumpy joħloq konfigurazzjonijiet statiċi - potenzjalment permezz ta' skripts - u jużahom permezz ta 'xi proċess speċjali lill-prokuri kollha. Il-prokuri mbagħad jibdew jużaw din il-konfigurazzjoni u jibdew jipproċessaw il-pjan tad-dejta billi jużaw is-settings aġġornati.

Pjan tad-dejta tal-malji tas-servizz vs pjan tal-kontroll
Figura 3: Pjan ta 'kontroll tal-malji tas-servizz avvanzat

Fuq Figura 3 juri l-pjan ta 'kontroll "estiż" tal-malja tas-servizz. Tikkonsisti fil-partijiet li ġejjin:

  • Il-bniedem: Għad hemm persuna (nittamaw inqas rrabjata) li tieħu deċiżjonijiet ta’ livell għoli rigward is-sistema kollha kemm hi.
  • UI tal-pjan ta' kontroll: Persuna tinteraġixxi ma 'xi tip ta' user interface biex tikkontrolla s-sistema. Dan jista 'jkun portal tal-web, applikazzjoni tal-linja tal-kmand (CLI), jew xi interface oħra. Bl-użu tal-interface tal-utent, l-operatur għandu aċċess għall-parametri globali tal-konfigurazzjoni tas-sistema bħal:
    • Kontroll tal-iskjerament, transizzjoni tat-traffiku blu/aħdar u/jew gradwali
    • Għażliet ta' Awtentikazzjoni u Awtorizzazzjoni
    • Speċifikazzjonijiet tat-tabella tar-rotot, pereżempju meta l-applikazzjoni A titlob informazzjoni dwar "/foo" x'jiġri
    • Issettjar tal-bilanċjar tat-tagħbija, bħal timeouts, tentattivi mill-ġdid, settings ta 'circuit breaking, eċċ.
  • Scheduler tal-piż tax-xogħol: Is-servizzi jitmexxew fuq l-infrastruttura permezz ta’ xi tip ta’ sistema ta’ skedar/orkestrazzjoni, bħal Kubernetes jew Nomad. L-iskeder huwa responsabbli għat-tagħbija tas-servizz flimkien mal-prokura lokali tiegħu.
  • Skoperta tas-servizz. Meta l-iskedar jibda u jwaqqaf l-istanzi tas-servizz, jirrapporta l-istatus tas-saħħa lis-sistema ta 'skoperta tas-servizz.
  • APIs tal-konfigurazzjoni tal-proxy sidecar : Il-prokuri lokali estratt b'mod dinamiku l-istat minn diversi komponenti tas-sistema billi jużaw mudell eventwalment konsistenti mingħajr intervent tal-operatur. Is-sistema kollha, li tikkonsisti mill-istanzi kollha tas-servizz li qed jaħdmu bħalissa u s-servers prokura lokali, fl-aħħar mill-aħħar tikkonverġi f'ekosistema waħda. L-API universali tal-pjan tad-dejta tal-Envoy huwa eżempju wieħed ta' kif dan jaħdem fil-prattika.

Essenzjalment, l-iskop tal-pjan ta 'kontroll huwa li tiġi stabbilita l-politika li fl-aħħar mill-aħħar tiġi aċċettata mill-pjan tad-dejta. Ajruplani ta 'kontroll aktar avvanzati se jneħħu aktar partijiet ta' xi sistemi mill-operatur u jeħtieġu inqas tħaddim manwali, sakemm jaħdmu b'mod korrett!...

Pjan tad-data u pjan ta 'kontroll. Sommarju tal-pjan tad-dejta vs il-pjan tal-kontroll

  • Pjan tad-dejta tal-malji tas-servizz: Taffettwa kull pakkett/talba fis-sistema. Responsabbli għall-iskoperta tal-applikazzjoni/servizz, il-kontroll tas-saħħa, ir-rotot, l-ibbilanċjar tat-tagħbija, l-awtentikazzjoni/l-awtorizzazzjoni u l-osservabilità.
  • Pjan ta 'kontroll tal-malji tas-servizz: Jipprovdi politika u konfigurazzjoni għall-pjani tad-dejta kollha li jaħdmu fi ħdan in-netwerk tas-servizz. Ma tmiss l-ebda pakkett/talba fuq is-sistema. Il-pjan ta 'kontroll jibdel il-pjani tad-dejta kollha f'sistema distribwita.

Il-pajsaġġ attwali tal-proġett

Wara li fhimt l-ispjegazzjoni ta 'hawn fuq, ejja nħarsu lejn l-istat attwali tal-proġett tal-malji tas-servizz.

  • Ajruplani tad-data: Linkerd, NGINX, HAProxy, Mibgħut, Traefik
  • Ajruplani ta' kontroll: Istio, Nelson, SmartStack

Minflok ma nidħol f'analiżi fil-fond ta 'kull waħda mis-soluzzjonijiet ta' hawn fuq, se nindirizza fil-qosor xi wħud mill-punti li nemmen li qed jikkawżaw ħafna mill-konfużjoni fl-ekosistema bħalissa.

Linkerd kien wieħed mill-ewwel proxy servers tal-pjan tad-dejta għall-malji tas-servizz kmieni fl-2016 u għamel xogħol meraviljuż biex tqajjem kuxjenza u attenzjoni għall-mudell tad-disinn tal-malji tas-servizz. Madwar 6 xhur wara, l-Envoy ingħaqad ma' Linkerd (għalkemm kien ilu ma' Lyft mill-aħħar tal-2015). Linkerd u Envoy huma ż-żewġ proġetti li jissemmew l-aktar meta jiġu diskussi l-malji tas-servizz.

Istio tħabbar f'Mejju 2017. L-għanijiet tal-proġett Istio huma simili ħafna għall-pjan ta 'kontroll estiż muri fih Figura 3. Mibgħut għal Istio huwa l-prokura default. Għalhekk, Istio huwa l-pjan ta 'kontroll, u Envoy huwa l-pjan tad-dejta. Fi żmien qasir, Istio ġġenera ħafna eċċitament, u pjani tad-dejta oħra bdew jintegraw bħala sostitut għal Envoy (kemm Linkerd kif ukoll NGINX wrew integrazzjoni ma 'Istio). Il-fatt li pjani tad-data differenti jistgħu jintużaw fl-istess pjan ta 'kontroll ifisser li l-pjan ta' kontroll u l-pjan tad-data mhux neċessarjament huma akkoppjati sewwa. API bħall-API ta' pjan ta' data ġeneriku ta' Envoy jista' jifforma pont bejn żewġ partijiet tas-sistema.

Nelson u SmartStack jgħinu biex juru aktar is-separazzjoni tal-pjan ta 'kontroll u l-pjan tad-data. Nelson juża Envoy bħala prokura tiegħu u jibni pjan ta 'kontroll affidabbli għall-malji tas-servizz ibbażat fuq il-munzell HashiCorp, i.e. Nomad, eċċ. SmartStack kien forsi l-ewwel minn mewġa ġdida ta 'malji ta' servizz. SmartStack jibni pjan ta 'kontroll madwar HAProxy jew NGINX, li juri l-abbiltà li jiddiżakkoppja l-pjan ta' kontroll mill-malja tas-servizz mill-pjan tad-dejta.

L-arkitettura tal-mikroservizz b'malja tas-servizz qed tikseb aktar u aktar attenzjoni (ġustament!), U aktar u aktar proġetti u bejjiegħa qed jibdew jaħdmu f'din id-direzzjoni. Matul il-ftit snin li ġejjin se naraw ħafna innovazzjoni kemm fil-pjan tad-dejta kif ukoll fil-pjan ta 'kontroll, kif ukoll taħlit ulterjuri ta' komponenti differenti. Fl-aħħar mill-aħħar, l-arkitettura tal-mikroservizz għandha ssir aktar trasparenti u maġika (?) għall-operatur.
Nisperaw li dejjem inqas irritata.

Takeaways ewlenin

  • Malja tas-servizz tikkonsisti f'żewġ partijiet differenti: il-pjan tad-dejta u l-pjan tal-kontroll. Iż-żewġ komponenti huma meħtieġa, u mingħajrhom is-sistema ma taħdimx.
  • Kulħadd huwa familjari mal-pjan ta 'kontroll, u f'dan il-punt, il-pjan ta' kontroll jista 'jkun int!
  • Il-pjani tad-dejta kollha jikkompetu ma 'xulxin fuq il-karatteristiċi, il-prestazzjoni, il-konfigurabilità u l-estensibilità.
  • Il-pjani ta 'kontroll kollha jikkompetu ma' xulxin fil-karatteristiċi, il-konfigurabilità, l-estensibbiltà, u l-faċilità ta 'użu.
  • Pjan ta 'kontroll wieħed jista' jkun fih l-astrazzjonijiet u l-APIs it-tajba sabiex ikunu jistgħu jintużaw pjani tad-dejta multipli.

Sors: www.habr.com

Żid kumment