Service bolong data pesawat vs pesawat kontrol

Héy Habr! Kuring nampilkeun ka perhatian anjeun tarjamahan artikel "Pesawat data bolong jasa vs pesawat kontrol" pangarang Matt Klein.

Service bolong data pesawat vs pesawat kontrol

Waktos ieu, kuring "hoyong sareng narjamahkeun" pedaran duanana komponén bolong jasa, pesawat data sareng pesawat kontrol. Katerangan ieu sigana anu paling kaharti sareng pikaresepeun pikeun kuring, sareng anu paling penting ngarah kana pamahaman "Naha perlu pisan?"

Salaku gagasan "Service bolong" geus jadi beuki populér dina dua taun ka tukang (Artikel aslina 10 Oktober 2017) jeung jumlah pamilon dina spasi geus ngaronjat, kuring geus katempo ngaronjat commensurate kabingungan diantara sakabéh. komunitas tech ngeunaan kumaha carana ngabandingkeun sarta kontras solusi béda.

Situasi ieu paling saé diringkeskeun ku séri tweet anu kuring nyerat dina bulan Juli:

Service bolong kabingungan #1: Linkerd ~ = Nginx ~ = Haproxy ~ = Utusan. Taya sahijieun anu sarua jeung Istio. Istio hal lengkep beda. 1 /

Anu kahiji ngan saukur pesawat data. Ku sorangan teu ngalakukeun nanaon. Maranéhanana kudu dina wanda pikeun hal nu leuwih. 2/

Istio mangrupa conto pesawat kontrol nu dasi bagian babarengan. Ieu lapisan sejen. /tungtung

Tweets saméméhna nyebatkeun sababaraha proyék anu béda (Linkerd, NGINX, HAProxy, Envoy, sareng Istio), tapi anu langkung penting ngenalkeun konsép umum pesawat data, bolong jasa, sareng pesawat kontrol. Dina pos ieu, kuring bakal nyandak undak deui ngobrol ngeunaan naon atuh hartina ku istilah "pesawat data" jeung "pesawat kontrol" dina tingkat pisan tinggi, lajeng ngobrol ngeunaan kumaha istilah dilarapkeun ka proyék disebutkeun dina tweets.

Naon téh bolong jasa, bener?

Service bolong data pesawat vs pesawat kontrol
Gambar 1: Tinjauan bolong jasa

Gambar 1 ngagambarkeun konsép bolong jasa dina tingkat anu paling dasar. Aya opat klaster jasa (AD). Unggal conto jasa pakait sareng server proxy lokal. Sadaya lalu lintas jaringan (HTTP, REST, gRPC, Redis, jsb.) Ti hiji conto aplikasi dialihkeun ngaliwatan proxy lokal ka klaster jasa éksternal anu luyu. Ku cara ieu, conto aplikasi henteu sadar kana jaringan sacara gembleng sareng ngan ukur sadar kana proxy lokalna. Dina pangaruhna, jaringan sistem anu disebarkeun dipiceun tina jasa éta.

pesawat data

Dina bolong jasa, pangladén proxy anu aya sacara lokal pikeun aplikasi ngalaksanakeun tugas-tugas ieu:

  • Papanggihan jasa. Ladenan / aplikasi naon anu sayogi pikeun aplikasi anjeun?
  • Mariksa kaséhatan. Naha instansi jasa dipulangkeun ku penemuan jasa séhat sareng siap nampi lalu lintas jaringan? Ieu bisa ngawengku duanana aktif (misalna respon/healthcheck) jeung pasif (misalna ngagunakeun 3 padeukeut 5xx kasalahan salaku indikasi kaayaan layanan teu damang) kaséhatan cék.
  • Routing. Nalika nampi pamundut ka "/ foo" tina jasa REST, kluster jasa mana anu kedah dikirimkeun pamundutna?
  • Balancing beban. Sakali klaster jasa geus dipilih salila routing, ka conto layanan nu ngirim pamundut teh? Kalayan naon waktosna? Kalawan naon circuit megatkeun setélan? Upami pamundutna gagal, naha éta kedah dicoba deui?
  • Auténtikasi jeung otorisasina. Pikeun pamenta anu asup, tiasa jasa nelepon diidentifikasi sacara kriptografis / diidinan nganggo mTLS atanapi sababaraha mékanisme anu sanés? Lamun geus dipikawanoh / otorisasi, éta diwenangkeun nelepon operasi dipénta (titik tungtung) dina layanan atawa kudu respon unauthenticated balik?
  • Observability. Statistik lengkep, log / log, sareng data jejak anu disebarkeun kedah dibangkitkeun pikeun tiap pamundut supados operator tiasa ngartos aliran lalu lintas anu disebarkeun sareng masalah debugging nalika timbul.

Pesawat data nanggungjawaban kanggo sadaya titik sateuacana dina bolong jasa. Kanyataanna, proxy lokal pikeun layanan (sidecar) nyaéta pesawat data. Kalayan kecap sanésna, pesawat data tanggung jawab pikeun nyiarkeun, neraskeun, sareng ngawaskeun unggal pakét jaringan anu dikirim ka atanapi ti jasa.

Pesawat kontrol

The abstraksi jaringan nu proxy lokal nyadiakeun dina pesawat data téh gaib (?). Sanajan kitu, kumaha proxy nu sabenerna nyaho ngeunaan "/ foo" jalur ka layanan B? Kumaha data penemuan jasa anu dieusi ku pamundut proxy tiasa dianggo? Kumaha parameter ngonpigurasi pikeun load balancing, timeout, circuit megatkeun, jsb? Kumaha anjeun nyebarkeun aplikasi nganggo metode biru / héjo atanapi metode transisi lalu lintas anu anggun? Saha anu ngonpigurasikeun setélan auténtikasi sareng otorisasi sistem-lega?

Sadaya item di luhur aya dina kadali pesawat kontrol bolong jasa. Pesawat kontrol nyandak sakumpulan proksi stateless terasing sareng janten sistem anu disebarkeun.

Jigana alesan loba technologists manggihan konsep misah tina pesawat data jeung kontrol pesawat matak ngabingungkeun sabab keur sabagéan ageung jalma pesawat data akrab bari pesawat kontrol asing / teu dipikaharti. Kami parantos lami damel sareng router jaringan fisik sareng saklar. Urang ngarti yén pakét / requests kudu indit ti titik A ka titik B sarta yén urang bisa ngagunakeun hardware jeung software pikeun ngalakukeun ieu. Proksi parangkat lunak generasi énggal mangrupikeun vérsi énggal tina alat anu kami anggo salami lami.

Service bolong data pesawat vs pesawat kontrol
Gambar 2: pesawat kontrol manusa

Najan kitu, urang geus lila ngagunakeun pesawat kontrol, sanajan paling operator jaringan bisa jadi teu ngahubungkeun ieu bagian tina sistem jeung sagala komponén téhnologi. Alesanna basajan:
Paling kontrol planes dipaké kiwari nyaéta ... urang.

on Gambar 2 nunjukkeun naon anu kuring sebut "pesawat kontrol Manusa". Dina jinis panyebaran ieu, anu masih umum pisan, operator manusa sigana ambek nyiptakeun konfigurasi statik - berpotensi ngalangkungan skrip - sareng nyebarkeunana ngaliwatan sababaraha prosés khusus ka sadaya proksi. Proxies teras mimiti nganggo konfigurasi ieu sareng ngawitan ngolah pesawat data nganggo setélan anu diropéa.

Service bolong data pesawat vs pesawat kontrol
Angka 3: Pesawat kontrol bolong jasa canggih

on Gambar 3 nembongkeun pesawat kontrol "ngalegaan" bolong jasa. Ieu ngawengku bagian handap:

  • Manusa: Masih aya hiji jalma (mugia kirang ambek) anu nyieun kaputusan tingkat luhur ngeunaan sakabéh sistem sakabéhna.
  • Kontrol pesawat UI: Hiji jalma berinteraksi sareng sababaraha jenis panganteur pamaké pikeun ngadalikeun sistem. Ieu tiasa janten portal wéb, aplikasi garis paréntah (CLI), atanapi sababaraha antarmuka anu sanés. Nganggo antarbeungeut pangguna, operator ngagaduhan aksés kana parameter konfigurasi sistem global sapertos:
    • Kontrol deployment, bulao / héjo jeung / atawa transisi lalulintas bertahap
    • Auténtikasi sareng Otorisasina Pilihan
    • spésifikasi tabel Routing, contona lamun aplikasi A requests informasi ngeunaan "/ foo" naon kajadian
    • Setélan pangimbang beban, sapertos waktos béak, percobaan deui, setélan pegatna sirkuit, jsb.
  • Penjadwal beban kerja: Jasa ngajalankeun on infrastruktur ngaliwatan sababaraha tipe scheduling / sistem orkestrasi, kayaning Kubernetes atanapi Nomad. Penjadwal nanggung jawab pikeun ngamuat jasa sareng proxy lokalna.
  • Papanggihan jasa. Nalika penjadwal ngamimitian sareng ngeureunkeun instansi jasa, éta ngalaporkeun status kaséhatan ka sistem panemuan jasa.
  • Sidecar proxy konfigurasi API : Proksi lokal sacara dinamis ngekstrak kaayaan tina sababaraha komponén sistem nganggo modél anu ahirna konsisten tanpa campur tangan operator. Sakabeh sistem, diwangun ku sakabeh instansi jasa ayeuna ngajalankeun sarta server proxy lokal, pamustunganana converges kana hiji ékosistem. API pesawat data universal Envoy mangrupikeun conto kumaha ieu tiasa dianggo dina prakna.

Intina, tujuan pesawat kontrol nyaéta pikeun nyetél kawijakan anu pamustunganana bakal ditarima ku pesawat data. Pesawat kontrol anu langkung maju bakal ngahapus langkung seueur bagian tina sababaraha sistem ti operator sareng peryogi operasi manual anu kirang, upami tiasa dianggo leres!...

Data plane sareng control plane. Pesawat data vs kasimpulan pesawat kontrol

  • Service bolong data pesawat: Mangaruhan unggal pakét / pamundut dina sistem. Tanggung jawab pikeun panemuan aplikasi / jasa, pamariksaan kaséhatan, rute, balancing beban, auténtikasi / otorisasi sareng observasi.
  • Service pesawat kontrol bolong: Nyadiakeun kawijakan jeung konfigurasi pikeun sakabéh planes data ngajalankeun dina jaringan jasa. Henteu noél bungkusan / pamundut dina sistem. Pesawat kontrol ngarobah sakabéh planes data kana sistem disebarkeun.

bentang proyék ayeuna

Ngartos katerangan di luhur, hayu urang tingali kaayaan ayeuna proyek bolong jasa.

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

Tinimbang nganalisa jero unggal solusi di luhur, kuring bakal ngabahas sakedap sababaraha poin anu kuring yakin nyababkeun seueur kabingungan dina ékosistem ayeuna.

Linkerd mangrupikeun salah sahiji server proxy pesawat data anu munggaran pikeun bolong jasa dina awal 2016 sareng parantos ngalaksanakeun padamelan anu saé pikeun ningkatkeun kasadaran sareng perhatian kana modél desain bolong jasa. Sakitar 6 sasih saatos éta, Envoy ngagabung sareng Linkerd (sanaos anjeunna parantos sareng Lyft saprak telat 2015). Linkerd sareng Envoy mangrupikeun dua proyék anu sering disebatkeun nalika ngabahas meshes jasa.

Istio diumumkeun dina Méi 2017. Tujuan tina proyék Istio pisan sarupa jeung pesawat kontrol nambahan ditémbongkeun dina Gambar 3. Utusan pikeun Istio mangrupikeun proxy standar. Janten, Istio mangrupikeun pesawat kontrol, sareng Envoy mangrupikeun pesawat data. Dina waktu anu singget, Istio ngahasilkeun loba pikagumbiraeun, sarta planes data lianna mimiti ngahijikeun salaku gaganti Utusan (duanana Linkerd na NGINX nunjukkeun integrasi jeung Istio). Kanyataan yén pesawat data anu béda bisa dipaké dina pesawat kontrol anu sarua hartina pesawat kontrol jeung pesawat data teu merta gandeng pageuh. API sapertos API pesawat data umum Envoy tiasa ngabentuk sasak antara dua bagian sistem.

Nelson sareng SmartStack ngabantosan langkung seueur ngagambarkeun pamisahan pesawat kontrol sareng pesawat data. Nelson ngagunakeun Utusan salaku proxy sarta ngawangun pesawat kontrol dipercaya pikeun bolong jasa dumasar kana tumpukan HashiCorp, i.e. Nomad, jsb. SmartStack panginten anu munggaran tina gelombang anyar jasa meshes. SmartStack ngawangun pesawat kontrol sabudeureun HAProxy atanapi NGINX, demonstrating kamampuhan pikeun decouple pesawat kontrol tina bolong jasa ti pesawat data.

Arsitéktur Microservice sareng bolong jasa beuki seueur perhatian (leres!), Sareng langkung seueur proyék sareng padagang anu ngamimitian damel di arah ieu. Dina sababaraha taun ka hareup urang bakal ningali seueur inovasi dina pesawat data sareng pesawat kontrol, kitu ogé campuran komponén anu béda. Pamustunganana, arsitéktur microservice kedah janten langkung transparan sareng magis (?) Pikeun operator.
Mudah-mudahan kirang langkung jengkelna.

Takeaways konci

  • Bolong jasa diwangun ku dua bagian anu béda: pesawat data sareng pesawat kontrol. Duanana komponén diperlukeun, sarta tanpa aranjeunna sistem moal jalan.
  • Sadayana wawuh sareng pesawat kontrol, sareng dina waktos ieu, pesawat kontrol tiasa janten anjeun!
  • Sadaya pesawat data saling bersaing dina fitur, kinerja, konfigurasi, sareng ekstensibilitas.
  • Sadaya pesawat kontrol saling bersaing dina fitur, konfigurasi, extensibility, sareng betah dianggo.
  • Hiji pesawat kontrol tiasa ngandung abstraksi sareng API anu leres supados sababaraha pesawat data tiasa dianggo.

sumber: www.habr.com

Tambahkeun komentar