[Whakamaori] Tauira miro karere

Whakamaoritanga o te tuhinga: Tauira miro karere - https://blog.envoyproxy.io/envoy-threading-model-a8d44b922310

I kitea e au he mea tino pai tenei tuhinga, na te mea ko te Envoy te nuinga o te wa e whakamahia ana hei waahanga o te "istio" he "whakahaere urunga" ranei o nga kubernetes, ko te nuinga o nga tangata kaore i te rite tonu te taunekeneke ki a ia, hei tauira, me nga tikanga. Nga whakaurunga Nginx, Haproxy ranei. Heoi, ki te pakaru tetahi mea, he pai ki te mohio me pehea te mahi mai i roto. I ngana ahau ki te whakamaori i te nuinga o nga tuhinga ki roto i te reo Rūhia, tae atu ki nga kupu motuhake; mo te hunga e pouri ana ki te titiro ki tenei, ka waiho e ahau nga korero taketake ki roto i nga reu. Nau mai ki te ngeru.

Ko nga tuhinga hangarau taumata-iti mo te Envoy codebase he iti rawa i tenei wa. Hei whakatika i tenei, ka whakamahere ahau ki te mahi i nga raupapa panui mo nga momo punaha iti o Envoy. I te mea koinei te tuhinga tuatahi, tena koa whakamohio mai ki o whakaaro me nga mea e pai ana ki a koe mo nga tuhinga a muri ake nei.

Ko tetahi o nga patai hangarau e whiwhi ana ahau mo te Envoy ko te tono mo te whakaahuatanga taumata-iti mo te tauira miro e whakamahia ana e ia. I roto i tenei pou, ka whakaahua ahau me pehea te mapi a Envoy i nga hononga ki nga miro, tae atu ki te punaha Roopu Paetata Miro e whakamahia ana i roto kia whakarara ake te waehere me te mahi teitei.

Tirohanga miro

[Whakamaori] Tauira miro karere

E toru nga momo awa rereke e whakamahia ana e Envoy:

  • Matua: Ko tenei miro e whakahaere ana i te tiimata me te whakamutu, nga tukatuka katoa o te XDS (Ratonga xDiscovery) API, tae atu ki te DNS, te arowhai hauora, te kahui whanui me te whakahaere wa whakahaere, te tautuhi tatauranga, te whakahaere whakahaere me te whakahaere tikanga whanui - nga tohu Linux. ka tupu i roto i tenei miro he tukutahi me te "kore-aukati". I te nuinga o te waa, ko te miro matua e whakarite ana i nga tikanga mahi whakahirahira katoa kaore e hiahiatia he nui o te PTM kia rere. Ma tenei ka taea te tuhi i te nuinga o nga waehere mana me te mea he miro kotahi.
  • Kaimahi: Ma te taunoa, ka hangaia e Envoy he miro kaimahi mo ia miro taputapu i roto i te punaha, ka taea te whakahaere ma te whakamahi i te whiringa --concurrency. Ka whakahaeretia e ia miro kaimahi he kaupapa "kore-aukati", ko ia te kawenga mo te whakarongo ki ia kaiwhakarongo; i te wa e tuhi ana (Hōngongoi 29, 2017) karekau he wehewehenga o te kaiwhakarongo, te whakaae ki nga hononga hou, te whakarite i te taapu tātari mo te hononga, me te tukatuka i nga mahi whakauru / whakaputa (IO) katoa i te wa e ora ana te hononga. Ano, ka taea e te nuinga o nga waehere whakahaere hononga kia tuhia me te mea he miro kotahi.
  • Pūrere kōnae: Ko ia kōnae ka tuhia e Envoy, te nuinga o te uru ki nga raarangi, he miro aukati motuhake i tenei wa. Ko tenei na te mea ko te tuhi ki nga konae keteroki e te punaha konae ahakoa te whakamahi O_NONBLOCK ka taea te aukati i etahi wa (sigh). Ina hiahia nga miro kaimahi ki te tuhi ki tetahi konae, ka nukuhia nga raraunga ki te papaa mahara ki reira ka peia ki roto i te miro. pupuhi kōnae. Koinei tetahi waahanga o te waehere ka taea e nga miro kaimahi katoa te aukati i te raka kotahi i te wa e ngana ana ki te whakaki i te putunga mahara.

Te whakahaere hononga

Ka rite ki te korero poto i runga ake nei, ko nga miro kaimahi katoa e whakarongo ana ki nga kaiwhakarongo katoa kaore he pakaru. No reira, ka whakamahia te pata ki te tuku i nga turanga kua whakaaetia ki nga miro kaimahi. Ko nga kakano o naianei he tino pai ki tenei, ka whakamahia e ratou nga ahuatanga penei i te whakauru/putanga (IO) hei whakanui i te kaupapa matua ki te whakaki i tetahi miro ki te mahi i mua i te tiimata ki te whakamahi i etahi atu miro e whakarongo ana ano ki runga i te turanga kotahi, me te kore ano e whakamahi i te round robin. raka (Spinlock) ki te tukatuka i ia tono.
Ina whakaaehia he hononga ki runga i te miro kaimahi, kare rawa ia e whakarere i taua miro. Ko nga tukatuka katoa o te hononga ka whakahaerehia katoa i roto i te miro kaimahi, tae atu ki nga whanonga whakamua.

He maha nga hua nui o tenei:

  • Ko nga puna hononga katoa i te Envoy kua tohua ki tetahi miro kaimahi. Na, ahakoa ko nga puna hononga HTTP/2 anake e hono ana ki ia kaihautu whakarunga i te wa kotahi, mena e wha nga miro kaimahi, e wha nga hononga HTTP/2 mo ia kaihautu whakarunga kei te noho pumau.
  • Ko te take i penei ai te mahi a Envoy ma te pupuri i nga mea katoa i runga i te miro kaimahi kotahi, tata katoa nga waehere ka taea te tuhi me te kore e aukati me te mea he miro kotahi. Ma tenei hoahoa he mea ngawari ki te tuhi i te maha o nga waehere me nga unahi tino pai ki te tata mutunga kore o nga miro kaimahi.
  • Heoi, ko tetahi o nga mea nui ko te mai i te puna mahara me te tirohanga pai o te hononga, he mea tino nui ki te whirihora i te --concurrency. Ko te nui ake o nga miro a nga kaimahi i te mea e tika ana ka moumou mahara, ka nui ake nga hononga mangere, me te whakaiti i te tere o te whakakotahitanga hononga. I Lyft, he iti rawa te utu o ta matou ipu taha waka karere kia rite ai nga mahi ki nga ratonga e noho ana ratou. Ka whakahaerehia e matou te Envoy hei takawaenga taha anake i runga i te utu nui.

He aha te tikanga aukati-kore?

Ko te kupu "kore-aukati" he maha nga wa i whakamahia i tenei wa i te wa e korero ana mo te mahi o nga miro matua me nga miro kaimahi. Ka tuhia nga waehere katoa i runga i te whakaaro kaore he mea e araia. Heoi, ehara tenei i te tino pono (he aha te mea kaore i te tino pono?).

Ka whakamahia e Envoy etahi raka tukanga roa:

  • Ka rite ki te korero, i te wa e tuhi ana i nga raarangi urunga, ka whiwhi nga miro kaimahi katoa i te raka kotahi i mua i te whakaki i te papaahere takiuru-maumahara. Ko te wa pupuri raka me iti rawa, engari ka taea te tohe mo te raka i runga i te taurite teitei me te whakaputanga teitei.
  • Ka whakamahia e te Envoy tetahi punaha tino uaua ki te hapai i nga tatauranga e pa ana ki te miro. Ka waiho tenei hei kaupapa mo te panui motuhake. Heoi, ka korero poto ahau hei waahanga o te tukatuka i nga tatauranga miro i te rohe, i etahi wa ka tika ki te tiki raka i runga i te "taonga tatauranga" pokapū. Kaua rawa tenei raka e hiahiatia.
  • Me ruruku te miro matua i ia wa me nga miro kaimahi katoa. Ka mahia tenei ma te "whakaputa" mai i te miro matua ki nga miro kaimahi, i etahi wa mai i nga miro kaimahi ki te miro matua. Me raka te tuku kia taea ai te rarangi panui mo te tuku a muri ake nei. Ko enei raka kaua rawa e tino tautohetia, engari ka taea tonu te aukati.
  • I te wa e tuhi ana a Envoy i te raarangi ki te awa hapa o te punaha (te hapa paerewa), ka whiwhi raka i te katoa o te mahi. I te nuinga o te waa, he kino te mahi a te Envoy i te tirohanga o te mahi, no reira kaore i tino arohia ki te whakapai ake.
  • He ruarua noa nga raka matapōkere, engari karekau he mea tino nui te mahi me te kore rawa e werohia.

Miro rokiroki rohe

Na te ahua o te wehewehe a Envoy i nga kawenga o te miro matua mai i nga kawenga o te miro kaimahi, he whakaritenga ka taea te mahi tukatuka matatini ki runga i te miro matua, ka tukuna ki ia miro kaimahi i roto i te tikanga tino rite. Ko tenei waahanga e whakaatu ana i te Envoy Thread Local Storage (TLS) i te taumata teitei. I roto i te waahanga e whai ake nei ka whakaahua ahau me pehea te whakamahi ki te whakahaere i te roopu.
[Whakamaori] Tauira miro karere

Ka rite ki te korero kua korerohia, ko te miro matua te whakahaere tata ki te whakahaere me te whakahaere i nga mahi rererangi i roto i te tukanga Envoy. He nui te taumaha o te waka rererangi i konei, engari ka tirohia e koe i roto i te kaupapa Envoy ka whakatauritea ki te tuku whakamua e mahia ana e nga miro kaimahi, ka tika. Ko te tikanga nui ko te mahinga miro matua e mahi ana, katahi me whakahou i ia miro kaimahi kia rite ki nga hua o taua mahi. i roto i tenei take, karekau te miro kaimahi me whiwhi raka mo ia urunga.

Ka mahi te punaha TLS (Thread local storage) a Envoy:

  • Ka taea e te waehere e rere ana i runga i te miro matua te toha mokamoka TLS mo te mahi katoa. Ahakoa kua wetewetehia tenei, i roto i te mahi he tohu tohu ki roto i te vector, e whai urunga O(1).
  • Ka taea e te miro matua te whakauru i nga raraunga noa ki roto i tana mokamoka. Ka oti tenei, ka whakaputahia nga raraunga ki ia miro kaimahi hei huihuinga takahanga noa.
  • Ka taea e nga miro kaimahi te panui mai i ta raatau mokamoka TLS me te tiki i nga raraunga miro-rohe e waatea ana ki reira.

Ahakoa he ahua tino ngawari me te tino kaha, he tino rite ki te kaupapa o te aukati RCU(Pānui-Tārua-Whakahou). Ko te tikanga, kaore nga miro kaimahi e kite i nga huringa raraunga i roto i nga mokamoka TLS i te wa e mahi ana te mahi. Ka puta noa nga huringa i roto i te wa okioki i waenga i nga huihuinga mahi.

E rua nga huarahi e whakamahia ana e Envoy:

  • Ma te penapena i nga raraunga rereke ki ia miro kaimahi, ka taea te uru atu ki nga raraunga kaore he aukati.
  • Ma te pupuri i te atatohu tiritahi ki nga raraunga o te ao i te aratau panui-anake ki ia miro kaimahi. No reira, kei ia miro kaimahi he tatau tohutoro raraunga e kore e taea te whakaheke i te wa e mahi ana te mahi. Ka ata noho nga kaimahi katoa me te tuku i nga raraunga tiritahi hou ka ngaro nga raraunga tawhito. He rite tenei ki te RCU.

Miro whakahōu kāhui

I roto i tenei waahanga, ka whakaahua ahau me pehea te whakamahi a TLS (Thread local storage) ki te whakahaere i tetahi tautau. Kei roto i te whakahaere roopu xDS API me/ranei te tukatuka DNS, me te tirotiro hauora.
[Whakamaori] Tauira miro karere

Ko te whakahaere rerenga roopu ko nga waahanga me nga waahanga e whai ake nei:

  1. Ko te Kaiwhakahaere Cluster tetahi waahanga kei roto i te Envoy e whakahaere ana i nga kohinga katoa e mohiotia ana ki runga, te Cluster Discovery Service (CDS) API, te Secret Discovery Service (SDS) me te Endpoint Discovery Service (EDS) APIs, DNS, me nga mahi arowhai o waho. Kei a ia te haepapa ki te hanga i te tirohanga "te mutunga rite" mo ia kahui whakarunga, kei roto ko nga kaihautu kua kitea me te mana hauora.
  2. Ka mahia e te kaitirotiro hauora he tirotiro hauora kaha me te ripoata i nga huringa o te mana hauora ki te kaiwhakahaere roopu.
  3. Ko te CDS (Ratonga Discovery Discovery) / SDS (Secret Discovery Service) / EDS (Endpoint Discovery Service) / DNS ka mahia hei whakatau i te mema tautau. Ka whakahokia te huringa kawanatanga ki te kaiwhakahaere tautau.
  4. Ka mahia tonutia e ia miro kaimahi he takahanga takahanga.
  5. Ina whakatauhia e te kaiwhakahaere tautau kua huri te ahua mo tetahi tautau, ka hangaia he whakaahua panui-anake hou o te ahua o te tautau ka tukuna ki ia miro kaimahi.
  6. I te wa ata noho e whai ake nei, ka whakahouhia e te miro kaimahi te whakaahua i roto i te mokamoka TLS kua tohaina.
  7. I te wa o tetahi huihuinga I/O e kiia ana ko te kaihautu ki te uta i te toenga, ka tono te kaiwawao kawenga mo te mokamoka TLS (Thread local storage) kia whiwhi korero mo te kaihautu. Kaore e hiahiatia he kati. Kia mahara ano ka taea e TLS te whakaoho i nga kaupapa whakahou kia taea ai e nga kaitaurite kawenga me etahi atu waahanga te tatau ano i nga keteroki, nga hanganga raraunga, aha atu. Kei tua atu tenei i te waahi o tenei pou, engari ka whakamahia ki nga waahi rereke o te waehere.

Ma te whakamahi i nga tikanga o runga ake nei, ka taea e Envoy te whakahaere i nga tono katoa me te kore e aukati (haunga nga korero i mua ake nei). I tua atu i te uaua o te waehere TLS ake, karekau te nuinga o te waehere me maarama ki te mahi miro maha me te tuhi miro kotahi. Ma tenei ka ngawari ake te tuhi i te nuinga o te waehere hei taapiri i nga mahi pai ake.

Ko etahi atu punaha iti e whakamahi ana i te TLS

Ko te TLS (Thread local storage) me te RCU (Read Copy Update) e whakamahia nuitia ana i Envoy.

Tauira whakamahi:

  • Tikanga mo te whakarereke i te mahi i te wa e mahia ana: Ko te rarangi o naianei o nga taumahinga kua taea te tatau i te miro matua. Ka whakawhiwhia ki ia miro kaimahi he whakaahua panui-anake ma te whakamahi i nga kupu RCU.
  • Te whakakapi i nga ripanga ara: Mo nga ripanga ara e whakaratohia ana e RDS (Route Discovery Service), ka hangaia nga ripanga ara ki te miro matua. Ko te whakaahua panui-anake ka tukuna ki ia miro kaimahi ma te whakamahi i te RCU (Read Copy Update). Ma tenei ka whai hua ngota te huri i nga ripanga ara.
  • Keteroki pane pane HTTP: I te mea ka puta, ko te tatau i te pane HTTP mo ia tono (i te wa e whakahaere ana ~25K+ RPS ia matua) he tino utu. Ka whakatauhia e te Envoy te pane tata ki ia haurua hēkona, ka tukuna ki ia kaimahi ma te TLS me te RCU.

Ko etahi atu keehi, engari ko nga tauira o mua me whakarato i te mohio pai mo te whakamahinga o te TLS.

Nga mahanga mahi e mohiotia ana

Ahakoa he pai te mahi a Envoy i te katoa, he iti noa nga waahanga e tika ana kia arohia ina whakamahia ana me te tino pai me te whakaputanga:

  • Ka rite ki te korero i roto i tenei tuhinga, i tenei wa ka whiwhi raka nga miro kaimahi katoa i te wa e tuhi ana ki te putunga mahara rangitaki uru. I te nui o te whakakotahitanga me te nui o te whakaputanga, ka hiahia koe ki te whakaropu i nga raarangi uru mo ia miro kaimahi i runga i te utu o te tuku i waho o te ota ka tuhi ki te konae whakamutunga. Ka taea e koe te hanga i tetahi rangitaki uru motuhake mo ia miro kaimahi.
  • Ahakoa e tino arotau ana nga tatauranga, i runga i te tino riterite me te whakaputanga ka puta pea he tautohetohe ngota mo nga tatauranga takitahi. Ko te otinga o tenei raru ko nga porotiti mo ia miro kaimahi me te tautuhi i ia wa o nga porotiti pokapū. Ka korerohia tenei i roto i te panui ka whai ake.
  • Kaore e pai te mahi a te hoahoanga o naianei mena ka tukuna a Envoy ki tetahi ahuatanga he iti noa nga hononga e hiahia ana ki nga rauemi tukatuka nui. Karekau he taurangi ka tohatoha nga hononga ki waenga i nga miro kaimahi. Ka taea te whakatau i tenei ma te whakatinana i te whakataurite hononga kaimahi, ka taea te whakawhiti hononga i waenga i nga miro kaimahi.

Whakamutunga

I hoahoatia te tauira miro a Envoy ki te whakamaarama i te hotaka me te whakarara nui i runga i te whakapaunga o te mahara moumou me nga hononga ki te kore e whirihora tika. Ko tenei tauira ka taea e ia te mahi tino pai i nga tatauranga miro teitei me te whakaputa.
Ka rite ki taku korero poto i runga i Twitter, ka taea hoki e te hoahoa te rere ki runga ake o te kohinga whatunga aratau-kaiwhakamahi katoa penei i te DPDK (Kete Whakawhanake Mahere Raraunga), ka taea e nga kaiwhakarato tikanga te whakahaere i nga miriona tono mo ia hekona me te tukatuka L7 katoa. Ka tino pai ki te kite i nga mea ka hangaia i roto i nga tau e whai ake nei.
Kotahi te korero tere whakamutunga: He maha nga wa i pataia mai ai ahau he aha matou i whiriwhiri ai i a C++ mo te Envoy. Ko te take ko tenei anake te reo reanga ahumahi e whakamahia nuitia ana hei hanga i te hoahoanga e whakaahuatia ana i tenei pou. Ko te C++ e kore e pai mo nga kaupapa katoa, ahakoa he maha nga kaupapa, engari mo etahi keehi ko te taputapu anake hei whakatutuki i te mahi.

Hononga ki te waehere

Nga hononga ki nga konae me nga atanga me nga whakatinanatanga pane i korerohia i tenei pou:

Source: will.com

Tāpiri i te kōrero