Bidang data bolong layanan vs bidang kontrol

Hey Habr! Aku menehi perhatian marang terjemahan artikel kasebut "Pesawat data mesh layanan vs pesawat kontrol" pengarang Matt Klein.

Bidang data bolong layanan vs bidang kontrol

Wektu iki, aku "pengin lan nerjemahake" katrangan babagan komponen bolong layanan, pesawat data lan pesawat kontrol. Katrangan iki kaya sing paling bisa dingerteni lan menarik, lan sing paling penting kanggo ngerteni "Apa perlu?"

Minangka gagasan "Bolong Layanan" saya tambah populer sajrone rong taun kepungkur (Artikel asli 10 Oktober 2017) lan jumlah peserta ing papan kasebut saya tambah akeh, aku wis weruh kenaikan kebingungan sing cocog ing antarane kabeh. komunitas teknologi babagan carane mbandhingake lan mbedakake solusi sing beda.

Kahanan kasebut paling apik diringkes dening seri tweets ing ngisor iki sing aku tulis ing wulan Juli:

Kebingungan mesh layanan #1: Linkerd ~ = Nginx ~ = Haproxy ~ = Utusan. Ora ana sing padha karo Istio. Istio pancen beda. 1 /

Sing pisanan mung pesawat data. Dheweke ora nindakake apa-apa. Padha kudu ing swasana ati kanggo soko liyane. 2/

Istio minangka conto bidang kontrol sing nyambungake bagean kasebut. Iki minangka lapisan liyane. / pungkasan

Tweets sadurunge nyebutake sawetara proyek beda (Linkerd, NGINX, HAProxy, Utusan, lan Istio), nanging sing luwih penting ngenalake konsep umum bidang data, bolong layanan, lan bidang kontrol. Ing kirim iki, aku bakal mundur lan ngomong babagan apa sing dakkarepake kanthi istilah "pesawat data" lan "pesawat kontrol" ing tingkat sing dhuwur banget, banjur ngomong babagan cara istilah kasebut ditrapake kanggo proyek sing kasebut ing tweets.

Apa iku bolong layanan, tenan?

Bidang data bolong layanan vs bidang kontrol
Gambar 1: Ringkesan bolong layanan

Gambar 1 nggambarake konsep bolong layanan ing tingkat paling dhasar. Ana papat kluster layanan (AD). Saben conto layanan digandhengake karo server proxy lokal. Kabeh lalu lintas jaringan (HTTP, REST, gRPC, Redis, lsp.) saka conto aplikasi siji dilewati liwat proxy lokal menyang kluster layanan eksternal sing cocog. Kanthi cara iki, conto aplikasi ora ngerti babagan jaringan kanthi sakabehe lan mung ngerti proxy lokal. AkibatΓ©, jaringan sistem sing disebar wis dibusak saka layanan kasebut.

Pesawat data

Ing bolong layanan, server proxy sing dumunung sacara lokal kanggo aplikasi kasebut nindakake tugas ing ngisor iki:

  • Panemuan layanan. Layanan / aplikasi apa sing kasedhiya kanggo aplikasi sampeyan?
  • Priksa kesehatan. Apa conto layanan sing bali kanthi panemuan layanan sehat lan siap nampa lalu lintas jaringan? Iki bisa kalebu loro aktif (contone respon/healthcheck) lan pasif (contone nggunakake 3 consecutive 5xx kasalahan minangka pratondo saka negara layanan nglarakake) kesehatan mriksa.
  • Routing. Nalika nampa panjalukan kanggo "/ foo" saka layanan REST, kang layanan kluster ngirim panjalukan dikirim menyang?
  • Ngimbangi beban. Sawise kluster layanan wis dipilih sajrone nuntun, menyang conto layanan sing ngirim panjalukan kasebut? Kanthi apa wektu entek? Kanthi apa setelan circuit breaking? Yen panjalukan gagal, apa kudu dicoba maneh?
  • Authentication lan wewenang. Kanggo panjalukan sing mlebu, apa layanan telpon bisa diidentifikasi kanthi kriptografis / sah nggunakake mTLS utawa mekanisme liyane? Yen diakoni / sah, diijini nelpon operasi sing dijaluk (titik pungkasan) ing layanan kasebut utawa kudu menehi respon sing ora dikonfirmasi?
  • Observability. Statistik rinci, log / log, lan data tilak sing disebarake kudu digawe kanggo saben panyuwunan supaya operator bisa mangerteni aliran lalu lintas sing disebarake lan masalah debugging nalika muncul.

Pesawat data tanggung jawab kanggo kabeh titik sadurunge ing bolong layanan. Nyatane, proxy lokal kanggo layanan (sidecar) yaiku bidang data. Kanthi tembung liyane, pesawat data tanggung jawab kanggo siaran, nerusake, lan ngawasi saben paket jaringan sing dikirim menyang utawa saka layanan.

Pesawat kontrol

Abstraksi jaringan sing diwenehake proxy lokal ing bidang data iku gaib (?). Nanging, kepiye proxy ngerti babagan rute "/ foo" menyang layanan B? Kepiye carane data panemuan layanan sing diisi dening panjalukan proxy bisa digunakake? Carane paramèter diatur kanggo mbukak wawas, wektu entek, sirkuit breaking, etc.? Kepiye cara masang aplikasi nggunakake metode biru/ijo utawa cara transisi lalu lintas sing apik? Sapa sing ngatur setelan otentikasi lan wewenang ing saindenging sistem?

Kabeh item ing ndhuwur ana ing kontrol bidang kontrol bolong layanan. Pesawat kontrol njupuk pesawat proxy stateless terisolasi lan nguripake menyang sistem mbagekke.

Aku mikir alesan akeh teknolog nemokake konsep kapisah saka bidang data lan bidang kontrol mbingungake amarga kanggo umume wong bidang data akrab nalika bidang kontrol manca / ora dingerteni. Kita wis nggarap router jaringan fisik lan switch kanggo wektu sing suwe. Kita ngerti yen paket / panjaluk kudu pindhah saka titik A nganti titik B lan kita bisa nggunakake hardware lan piranti lunak kanggo nindakake iki. Proksi piranti lunak generasi anyar mung minangka versi alat sing wis suwe kita gunakake.

Bidang data bolong layanan vs bidang kontrol
Gambar 2: Pesawat kontrol manungsa

Nanging, kita wis nggunakake pesawat kontrol kanggo dangu, sanajan paling operator jaringan bisa uga ora nggandhengake iki bagΓ©an saka sistem karo komponen teknologi. Alasane prasaja:
Umume pesawat kontrol sing digunakake saiki yaiku ... kita.

Ing Gambar 2 nuduhake apa sing diarani "pesawat kontrol manungsa." Ing jinis panyebaran iki, sing isih umum banget, operator manungsa sing bisa uga grumpy nggawe konfigurasi statis - duweni potensi liwat skrip - lan nyebarake liwat sawetara proses khusus kanggo kabeh proxy. Proxy banjur miwiti nggunakake konfigurasi iki lan miwiti ngolah bidang data nggunakake setelan sing dianyari.

Bidang data bolong layanan vs bidang kontrol
Gambar 3: Bidang kontrol bolong layanan lanjutan

Ing Gambar 3 nuduhake bidang kontrol "ditambahi" saka bolong layanan. Iku kasusun saka bagean ing ngisor iki:

  • manungsa: Isih ana wong (muga-muga kurang nesu) sing nggawe keputusan tingkat dhuwur babagan kabeh sistem kanthi sakabehe.
  • Kontrol bidang UI: Wong sesambungan karo sawetara jinis antarmuka panganggo kanggo ngontrol sistem. Iki bisa dadi portal web, aplikasi baris perintah (CLI), utawa sawetara antarmuka liyane. Nggunakake antarmuka panganggo, operator nduweni akses menyang paramΓ¨ter konfigurasi sistem global kayata:
    • Kontrol panyebaran, transisi lalu lintas biru/ijo lan/utawa bertahap
    • Otentikasi lan Otorisasi Pilihan
    • specifications Tabel nuntun, contone, nalika aplikasi A njaluk informasi bab "/ foo" apa mengkono
    • Setelan penyeimbang beban, kayata wektu entek, nyoba maneh, setelan pemutus sirkuit, lsp.
  • Penjadwal beban kerja: Layanan ditindakake ing infrastruktur liwat sawetara jinis sistem jadwal / orkestrasi, kayata Kubernetes utawa Nomad. Penjadwal tanggung jawab kanggo ngemot layanan kasebut bebarengan karo proxy lokal.
  • Panemuan layanan. Nalika panjadwal miwiti lan mungkasi kedadeyan layanan, laporan status kesehatan menyang sistem panemuan layanan.
  • API konfigurasi proxy sidecar : Proksi lokal kanthi dinamis ngekstrak negara saka macem-macem komponen sistem nggunakake model sing pungkasane konsisten tanpa campur tangan operator. Kabeh sistem, sing dumadi saka kabeh layanan sing saiki mlaku lan server proxy lokal, pungkasane gabung dadi siji ekosistem. API pesawat data universal Envoy minangka salah sawijining conto babagan praktik kasebut.

Ateges, tujuan pesawat kontrol yaiku nyetel kabijakan sing pungkasane bakal ditampa dening bidang data. Pesawat kontrol sing luwih maju bakal mbusak bagean liyane saka sawetara sistem saka operator lan mbutuhake operasi manual sing kurang, yen bisa digunakake kanthi bener!...

bidang data lan bidang kontrol. Data bidang vs. ringkesan bidang kontrol

  • Service mesh data pesawat: Ngaruhi saben paket / request ing sistem. Tanggung jawab kanggo panemuan aplikasi / layanan, mriksa kesehatan, rute, keseimbangan beban, otentikasi / wewenang lan observasi.
  • Service mesh pesawat kontrol: Nyedhiyakake kabijakan lan konfigurasi kanggo kabeh pesawat data sing mlaku ing jaringan layanan. Ora ndemek paket / panjalukan ing sistem. Bidang kontrol ngowahi kabeh pesawat data dadi sistem sing disebarake.

Lanskap proyek saiki

Sawise mangertos panjelasan ing ndhuwur, ayo goleki kahanan saiki proyek bolong layanan.

  • Pesawat data: Linkerd, NGINX, HAProxy, Utusan, Traefik
  • Pesawat kontrol: Istio, Nelson, SmartStack

Tinimbang njlentrehake analisa sing luwih jero babagan saben solusi ing ndhuwur, aku bakal ngrembug babagan sawetara poin sing aku yakin nyebabake akeh kebingungan ing ekosistem saiki.

Linkerd minangka salah sawijining server proxy pesawat data pisanan kanggo bolong layanan ing awal 2016 lan wis nindakake tugas sing apik kanggo ningkatake kesadaran lan perhatian marang model desain bolong layanan. Udakara 6 sasi sawise iku, Envoy gabung karo Linkerd (sanajan dheweke wis karo Lyft wiwit pungkasan 2015). Linkerd lan Envoy minangka rong proyek sing paling asring kasebut nalika ngrembug mesh layanan.

Istio diumumake ing Mei 2017. Sasaran saka proyek Istio meh padha karo pesawat kontrol lengkap sing ditampilake ing Gambar 3. Utusan kanggo Istio minangka proxy standar. Dadi, Istio minangka bidang kontrol, lan Utusan minangka bidang data. Ing wektu sing cendhak, Istio ngasilake akeh kasenengan, lan pesawat data liyane wiwit nggabungake minangka pengganti Utusan (loro Linkerd lan NGINX nuduhake integrasi karo Istio). Kasunyatan manawa pesawat data sing beda bisa digunakake ing bidang kontrol sing padha tegese bidang kontrol lan bidang data ora kudu digandhengake kanthi rapet. API kayata API pesawat data umum Envoy bisa mbentuk jembatan antarane rong bagΓ©an sistem.

Nelson lan SmartStack mbantu luwih nggambarake pamisahan bidang kontrol lan bidang data. Nelson nggunakake Utusan minangka proxy lan mbangun pesawat kontrol dipercaya kanggo bolong layanan adhedhasar tumpukan HashiCorp, i.e. Nomad, lsp. SmartStack mbok menawa sing pisanan saka gelombang layanan anyar. SmartStack mbangun pesawat kontrol sak HAProxy utawa NGINX, nuduhake kemampuan kanggo decouple bidang kontrol saka bolong layanan saka bidang data.

Arsitèktur microservice kanthi bolong layanan saya tambah akeh perhatian (bener!), Lan luwih akeh proyek lan vendor sing mulai kerja ing arah iki. Sajrone sawetara taun sabanjure, kita bakal weruh akeh inovasi ing bidang data lan bidang kontrol, uga campuran komponen sing beda-beda. Wekasanipun, arsitektur microservice kudu dadi luwih transparan lan gaib (?) kanggo operator.
Muga-muga saya kurang jengkel.

Takeaways Key

  • Bolong layanan kasusun saka rong bagean sing beda: bidang data lan bidang kontrol. Loro-lorone komponen dibutuhake, lan tanpa sistem kasebut ora bakal bisa digunakake.
  • Saben uwong wis kenal karo bidang kontrol, lan ing wektu iki, pesawat kontrol bisa uga sampeyan!
  • Kabeh pesawat data saingan karo fitur, kinerja, konfigurasi, lan ekstensibilitas.
  • Kabeh pesawat kontrol saingan siji liyane ing fitur, configurability, extensibility, lan ease saka nggunakake.
  • Siji bidang kontrol bisa ngemot abstraksi lan API sing tepat supaya sawetara pesawat data bisa digunakake.

Source: www.habr.com

Add a comment