Nga poraka hanga o nga tono toha. Whakatata tuarua

Panui

E nga hoa mahi, i waenganui o te raumati kei te whakamahere ahau ki te tuku i tetahi atu raupapa tuhinga mo te hoahoa o nga punaha rarangi: "Te Whakamatau VTrade" - he ngana ki te tuhi i tetahi anga mo nga punaha hokohoko. Ka tirotirohia e te raupapa te ariā me te mahi o te hanga i te whakawhiti, te hokohoko me te toa. I te mutunga o te tuhinga, ka tono ahau ki a koe ki te pooti mo nga kaupapa e tino paingia ana e koe.

Nga poraka hanga o nga tono toha. Whakatata tuarua

Koinei te tuhinga whakamutunga o te raupapa mo nga tono urupare kua tohatohahia i Erlang/Elixir. IN tuhinga tuatahi ka kitea e koe nga turanga ariā o te hoahoanga urupare. Tuhinga tuarua e whakaatu ana i nga tauira me nga tikanga mo te hanga i aua punaha.

I tenei ra ka whakaarahia e matou nga take o te whanaketanga o te turanga waehere me nga kaupapa whanui.

Te whakarite ratonga

I roto i te ora tonu, i te wa e whakawhanake ana koe i tetahi ratonga, he maha nga wa me whakakotahi koe i etahi tauira taunekeneke ki tetahi kaiwhakahaere. Hei tauira, ko te ratonga kaiwhakamahi, e whakaoti ana i te raru o te whakahaere i nga korero a nga kaiwhakamahi kaupapa, me whakautu ki nga tono req-resp me te tuku korero mo nga korero whakahou ma te pub-sub. He tino ngawari tenei keehi: kei muri i nga karere he kotahi te kaiwhakahaere e whakatinana ana i te arorau ratonga me te whakaputa i nga whakahoutanga.

Ka uaua ake te ahuatanga ina hiahia ana matou ki te whakatinana i tetahi ratonga toha-hape. Whakaarohia kua rereke nga whakaritenga mo nga kaiwhakamahi:

  1. Inaianei me mahi te ratonga i nga tono i runga i nga kohinga kohinga e 5,
  2. ka taea ki te mahi i nga mahi tukatuka papamuri,
  3. me te kaha hoki ki te whakahaere i nga rarangi ohaurunga mo nga whakahou korero.

Korero: Kaore matou e whakaaro ki te take o te rokiroki riterite me te tukurua raraunga. Me whakaaro ake kua whakatauhia enei take i mua ake nei, kua whai paparanga rokiroki pono me te tauineine te punaha, a he tikanga nga kaikawe ki te mahi ki a ia.

Ko te whakaahuatanga ōkawa o te ratonga kaiwhakamahi kua uaua ake. Mai i te tirohanga a te kaitoha, he iti noa nga huringa na te whakamahinga o te karere. Hei whakatutuki i te whakaritenga tuatahi, me whirihora i te pauna i te waahi whakawhiti req-resp.

Ko te hiahia ki te tukatuka i nga mahi papamuri ka puta i nga wa maha. I roto i nga kaiwhakamahi, ka taea e tenei te tirotiro i nga tuhinga a nga kaiwhakamahi, te tukatuka i nga rongorau kua tikiakehia, te tukutahi raraunga ranei ki nga paapori paapori. whatunga. Me tohatoha enei mahi ki roto i te roopu me te aro turuki i te ahunga whakamua o te mahi. Na reira, e rua nga whiringa otinga: me whakamahi ranei i te tauira tohatoha mahi mai i te tuhinga o mua, ki te kore ranei e pai, tuhia he kaipatuhi mahi ritenga hei whakahaere i te puna o nga kaitukatuka kia rite ki ta matou e hiahia ana.

Ko te tohu 3 e hiahia ana ki te toronga tauira pub-sub. A, mo te whakatinanatanga, i muri i te hanga i tetahi waahi whakawhiti pub-sub, me whakarewa ano te kaiwhakahaere o tenei waahi i roto i ta maatau ratonga. Na, me te mea kei te neke tatou i te arorau mo te tukatuka ohaurunga me te whakakore i te paparanga karere ki te whakatinanatanga o nga kaiwhakamahi.

Ko te mutunga mai, ko te whakaraeraetanga o te raru i whakaatu mai kia tutuki ai nga whakaritenga, me whakarewa e 5 nga waahanga o te ratonga ki runga i nga pona rereke me te hanga i tetahi atu hinonga - he kaiwhakahaere pub-sub, he kawenga mo te ohaurunga.
Hei whakahaere i nga kaihautu 5, kaore koe e hiahia ki te whakarereke i te waehere ratonga. Ko te mahi taapiri anake ko te whakarite i nga ture whakataurite i te waahi whakawhiti, ka korerohia e maatau i muri mai.
He uaua ano: me mahi te kaiwhakahaere o te pub-sub me te kaiwhakarite mahi ritenga ki te kape kotahi. Ano, ko te ratonga karere, he mea tino nui, me whakarato he tikanga mo te kowhiri i tetahi rangatira.

Te whiriwhiri rangatira

I roto i nga punaha toha, ko te pooti kaiarahi te tikanga mo te whakatu i tetahi mahi kotahi te kawenga mo te whakarite i te tukatuka tohatoha o etahi kawenga.

I roto i nga punaha kaore i te kaha ki te whakaurunga, ka whakamahia nga algorithms puta noa i te ao me te whakaaetanga, penei i te paxos, raft ranei.
I te mea he kaihokohoko te karere me tetahi kaupapa matua, e mohio ana mo nga kaiwhakahaere ratonga katoa - nga kaiarahi kaitono. Ka taea e te Karere te whakatu rangatira me te kore pooti.

I muri i te tiimata me te hono ki te waahi whakawhiti, ka whiwhi nga ratonga katoa i te karere punaha #'$leader'{exchange = ?EXCHANGE, pid = LeaderPid, servers = Servers}. Mehemea LeaderPid ka rite ki pid te tukanga o naianei, kua tohua hei kaihautu, me te rarangi ingoa Servers kei roto katoa nga pona me o raatau tawhā.
I te wa ka puta mai he mea hou ka momotuhia he node kahui mahi, ka whiwhi nga kaiwhakahaere ratonga katoa #'$slave_up'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts} и #'$slave_down'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts} Tuhinga.

Ma tenei ara, ka mohio nga waahanga katoa ki nga huringa katoa, ka whakamanahia kia kotahi te kaihautu i nga wa katoa.

Kaiwawao

Hei whakatinana i nga tukanga tukatuka tohatoha uaua, me nga raruraru o te arotau i te hoahoanga o naianei, he pai ki te whakamahi i nga kaiwawao.
Kia kore ai e huri i te waehere ratonga me te whakaoti, hei tauira, nga raru o te tukatuka taapiri, te ararere, te takiuru ranei i nga karere, ka taea e koe te whakahohe i tetahi kaihautu takawaenga i mua i te ratonga, ka mahi i nga mahi taapiri katoa.

Ko te tauira matarohia o te arotautanga pub-sub he tono tohatoha me te kaupapa pakihi e whakaputa ana i nga kaupapa whakahou, penei i nga huringa utu i te maakete, me te paparanga uru - N nga tūmau e whakarato ana i te API tukutuku mo nga kiritaki tukutuku.
Mena ka whakatau koe ma te upoko, ka penei te ahua o te ratonga kaihoko:

  • ka whakaritea e te kiritaki he hononga ki te papa. I te taha o te tūmau e whakamutu ana i te hokohoko, ka whakarewahia he tukanga hei mahi i tenei hononga.
  • I roto i te horopaki o te tukanga ratonga, ka puta te whakamanatanga me te ohaurunga ki nga whakahou. Ka karangahia e te tukanga te tikanga ohauru mo nga kaupapa.
  • I te wa ka hangaia he huihuinga i roto i te kernel, ka tukuna ki nga tukanga e mahi ana i nga hononga.

Whakaarohia e 50000 nga kaiohauru ki te kaupapa "rongo". Ka tohatohahia nga kaiohauru puta noa i nga kaitoro e 5. Ko te mutunga, ko ia whakahou, ka tae ki te waahi whakawhiti, ka tukuna kia 50000 nga wa: 10000 nga wa i runga i ia tūmau, i runga i te maha o nga kaiohauru ki runga. Ehara i te kaupapa tino whai hua, tika?
Hei whakapai ake i te ahuatanga, me whakauru he takawaenga he rite te ingoa ki te waahi whakawhiti. Me kaha te kairēhita ingoa o te ao ki te whakahoki i te tukanga tata ma te ingoa, he mea nui tenei.

Kia whakarewahia tenei takawaenga ki runga i nga tuunga paparanga uru, ka ohauru a maatau mahi katoa e mahi ana i te websocket api, kaua ki te waahi whakawhiti pub-sub taketake i roto i te kernel. Ka ohauru te Takawaenga ki te matua anake mena he ohaurunga ahurei me te whakahoki ano i te karere taumai ki ona kaiohauru katoa.
Ko te mutunga mai, e 5 nga karere ka tukuna i waenga i te kernel me nga kaitoro uru, kaua ki te 50000.

Te ararere me te whakataurite

Req-Resp

I roto i te whakatinanatanga karere o naianei, e 7 nga rautaki tohatoha tono:

  • default. Ka tukuna te tono ki nga kaiwhakahaere katoa.
  • round-robin. Ka tohua nga tono, ka tohatohahia i waenga i nga kaiwhakahaere.
  • consensus. Ko nga kaiwhakahaere e mahi ana i te ratonga ka wehewehea ki nga rangatira me nga pononga. Ka tukuna nga tono ki te rangatira anake.
  • consensus & round-robin. He rangatira to te roopu, engari ka tohatohahia nga tono ki nga mema katoa.
  • sticky. Ka tātaihia te mahi hash ka tautapa ki tetahi kaihautu motuhake. Ko nga tono o muri mai me tenei hainatanga ka haere ki te kaihautu kotahi.
  • sticky-fun. I te arawhiti i te waahi whakawhiti, ko te mahi tataitanga hash mo sticky whakataurite.
  • fun. He rite ki te piri-ngahau, ka taea anake e koe te anga atu, te whakakore, te tukatuka ranei i mua.

Ka tautuhia te rautaki tohatoha ina arawhitia te waahi whakawhiti.

I tua atu i te pauna, ka taea e te karere te tohu hinonga. Kia titiro tatou ki nga momo tohu i roto i te punaha:

  • Tohu hononga. Ka taea e koe te mohio na tehea hononga i puta mai ai nga kaupapa. Ka whakamahia i te wa e hono ana tetahi tukanga kaiwhakahaere ki te waahi whakawhiti kotahi, engari he rereke nga taviri ararere.
  • Tohu ratonga. Ka taea e koe te whakakotahi i nga kaikawe ki roto i nga roopu mo te ratonga kotahi me te whakawhanui i nga huarahi ararere me te whakataurite. Mo te tauira req-resp, he raina te ararere. Ka tukuna he tono ki te waahi whakawhiti, ka tukuna atu ki te ratonga. Engari ki te hiahia tatou ki te wehewehe i nga kaikawe ki nga roopu arorau, katahi ka mahia te wehewehe ma te whakamahi i nga tohu. Ina tohua he tohu, ka tukuna te tono ki tetahi roopu kaiwhakahaere.
  • Tono tūtohu. Ka taea e koe te wehewehe i waenga i nga whakautu. I te mea he tukutahi to tatou punaha, ki te tukatuka i nga whakautu ratonga me kaha ki te tautuhi i tetahi TonoTag ina tuku tono. Mai i te reira ka mohio tatou ki te whakautu i tono mai ki a tatou.

Pub-sub

Mo te pub-sub he ngawari ake nga mea katoa. He waahi whakawhiti ta maatau e whakaputa ai nga karere. Ko te waahi whakawhiti ka tohatoha karere ki waenga i nga kaiohauru kua ohauru ki nga kii ararere e hiahiatia ana e ratou (ka taea te kii he rite tenei ki nga kaupapa).

Te tauine me te whakararu i te he

Ko te tauineine o te punaha katoa e whakawhirinaki ana ki te tohu o te tauineine o nga paparanga me nga waahanga o te punaha:

  • Ka whakatauhia nga ratonga ma te taapiri i etahi atu pona ki te tautau me nga kaikawe mo tenei ratonga. I te wa o nga mahi whakamatautau, ka taea e koe te whiriwhiri i te kaupapa here whakataurite tino pai.
  • Ko te ratonga karere ano i roto i te kahui motuhake ka whakatauhia ma te neke i nga waahi whakawhiti kua utaina ki te wehe i nga pona kahui, ma te taapiri ranei i nga tikanga takawaenga ki nga waahi kua utaina o te tautau.
  • Ko te tauineine o te punaha katoa hei ahuatanga ka whakawhirinaki ki te ngawari o te hoahoanga me te kaha ki te whakakotahi i nga tautau takitahi ki tetahi hinonga arorau noa.

Ko te angitu o tetahi kaupapa ka whakawhirinaki ki te ngawari me te tere o te whakatauine. Ko nga karere i roto i tana putanga o naianei ka tipu haere me te tono. Ahakoa ka kore tatou i te tautau o nga miihini 50-60, ka taea e tatou te uru atu ki te whakakotahitanga. Kia aroha mai, ko te kaupapa o te Huihuinga kei tua atu i te whanuitanga o tenei tuhinga.

Rahui

I te wa e wetewete ana i te whakataurite kawenga, kua korerohia e matou mo te kore utu o nga kaiwhakahaere ratonga. Heoi ano, me rahuitia nga karere. Mena ka pakaru te pona, miihini ranei, me whakaora aunoa te karere, me te wa poto rawa atu.

I roto i aku kaupapa ka whakamahi au i etahi atu pona hei tango i te uta ina taka. Kei a Erlang te whakatinanatanga aratau tohatoha paerewa mo nga tono OTP. Ko te aratau toha ka mahi whakaora mena ka rahua ma te whakarewa i te tono i rahua ki runga i tetahi atu node i whakarewahia i mua. He marama te tukanga; i muri i te korenga, ka neke aunoa te tono ki te node failover. Ka taea e koe te panui atu mo tenei mahi konei.

Te whai hua

Me ngana ki te whakatairite i nga mahi a te rabbitmq me a maatau karere ritenga.
Kua kitea e au hua mana Ko te whakamatautau rabbitmq mai i te roopu openstack.

Kei te rarangi 6.14.1.2.1.2.2. Ko te tuhinga taketake e whakaatu ana i te hua o te RPC CAST:
Nga poraka hanga o nga tono toha. Whakatata tuarua

E kore matou e hanga i etahi atu taapiri ki te kernel OS, erlang VM ranei i mua. Nga tikanga mo te whakamatautau:

  • erl opts: +A1 +sbtu.
  • Ko te whakamatautau i roto i te node erlang kotahi ka whakahaerehia i runga i te pona me te i7 tawhito i roto i te putanga pūkoro.
  • Ka mahia nga whakamatautau roopu ki runga i nga kaitoro me te whatunga 10G.
  • Ka rere te waehere i roto i nga ipu docker. Whatunga i roto i te aratau NAT.

Waehere whakamatautau:

req_resp_bench(_) ->
  W = perftest:comprehensive(10000,
    fun() ->
      messaging:request(?EXCHANGE, default, ping, self()),
      receive
        #'$msg'{message = pong} -> ok
      after 5000 ->
        throw(timeout)
      end
    end
  ),
  true = lists:any(fun(E) -> E >= 30000 end, W),
  ok.

Tauari 1: Ka whakahaerehia te whakamatautau i runga i te pona me te putanga pūkoro i7 tawhito. Ko te whakamatautau, te karere me te ratonga ka mahia i runga i tetahi node i roto i te ipu Docker kotahi:

Sequential 10000 cycles in ~0 seconds (26987 cycles/s)
Sequential 20000 cycles in ~1 seconds (26915 cycles/s)
Sequential 100000 cycles in ~4 seconds (26957 cycles/s)
Parallel 2 100000 cycles in ~2 seconds (44240 cycles/s)
Parallel 4 100000 cycles in ~2 seconds (53459 cycles/s)
Parallel 10 100000 cycles in ~2 seconds (52283 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (49317 cycles/s)

Tauari 2: E toru nga pona e rere ana i runga i nga miihini rereke i raro i te docker (NAT).

Sequential 10000 cycles in ~1 seconds (8684 cycles/s)
Sequential 20000 cycles in ~2 seconds (8424 cycles/s)
Sequential 100000 cycles in ~12 seconds (8655 cycles/s)
Parallel 2 100000 cycles in ~7 seconds (15160 cycles/s)
Parallel 4 100000 cycles in ~5 seconds (19133 cycles/s)
Parallel 10 100000 cycles in ~4 seconds (24399 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (34517 cycles/s)

I nga wa katoa, kaore i neke ake te whakamahi CPU i te 250%

Ngā putanga

Te ti'aturi nei au e kore tenei huringa e rite ki te putunga hinengaro me taku wheako ka tino whai hua ki nga kairangahau e rua o nga punaha tohatoha me nga tohunga kei te timatanga o te hanga hoahoanga tohatoha mo a raatau punaha pakihi me te titiro ki a Erlang / Elixir me te hiahia. , engari karekau he utu...

Photography @chuttersnap

Ko nga kaiwhakamahi kua rehita anake ka uru ki te rangahau. Waitohu maitēnā.

He aha nga kaupapa hei whakamaarama atu hei waahanga o te raupapa Whakamatau VTrade?

  • Aria: Nga maakete, nga ota me o raatau waa: DAY, GTD, GTC, IOC, FOK, MOO, MOC, LOO, LOC

  • Pukapuka ota. Te ariā me te mahi o te whakatinana pukapuka me nga whakarōpūtanga

  • Te tirohanga o te hokohoko: Tiki, tutaki, whakatau. Me pehea te penapena me te peera

  • Te tari tuara. Te whakamahere me te whanaketanga. Te aro turuki i nga kaimahi me te tirotiro i nga aitua

  • API. Me whakaaro he aha nga hononga e hiahiatia ana me pehea te whakatinana

  • Te rokiroki korero: PostgreSQL, Timescale, Tarantool i roto i nga punaha hokohoko

  • Tauhohenga i roto i nga punaha hokohoko

  • Ētahi atu. Ka tuhi ahau i roto i nga korero

6 nga kaiwhakamahi i pooti. 4 nga kaiwhakamahi i aukati.

Source: will.com

Tāpiri i te kōrero