Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Alexey Naydenov, Tumuaki ITooLabs, e korero ana mo te whakawhanaketanga o te papaaho korero mo nga kaiwhakahaere waea i roto i te reo hotaka a Go (Golang). Ka tohatoha ano a Alexey i tana wheako ki te tuku me te whakahaere i te papaahi i roto i tetahi o nga kaiwhakahaere waea waea nui rawa atu o Ahia, nana i whakamahi te papaaho ki te whakarato ratonga mēra reo (VoiceMail) me Virtual PBX (Cloud PBX).

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Alexey Naydenov (i muri nei - AN): - Kia ora katoa! Ko Alexey Naidenov toku ingoa. Ko ahau te kaiwhakahaere o ITooLabs. Tuatahi, ka hiahia ahau ki te whakautu he aha taku mahi i konei me pehea taku mutunga ki konei.

Mena ka titiro koe ki te Bitrix24 Marketplace (waahanga "Waea"), 14 nga tono me te 36 kei reira (40%) ko matou:

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Ko te mea tika, ko o maatau hoa whakahaere enei, engari kei muri i enei mea katoa ko to maatau papa (Platform as a Service) - he aha ta matou e hoko atu ki a ratou mo te pene iti. Inaa, e hiahia ana ahau ki te korero mo te whanaketanga o tenei turanga me te pehea i tae mai ai matou ki a Go.

Ko nga nama mo ta maatau papaaho inaianei:

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

44 hoa whakahaere, tae atu ki a MegaFon. I te nuinga o te korero, he pai ki a matou te haere ki nga haerenga, a ka uru atu matou ki te 100 miriona nga kaiohauru o nga kaiwhakahaere 44 i konei i Russia. No reira, mena he whakaaro pakihi a tetahi, ka koa tonu matou ki te whakarongo ki a raatau.

  • 5000 kamupene kaiwhakamahi.
  • 20 katoa nga kaiohauru. He b000b katoa - ka mahi tahi matou me nga kamupene.
  • 300 waea ia meneti i te ra.
  • 100 miriona nga meneti waea i tera tau (i whakanuia e matou). Ko tenei me te kore e whai whakaaro ki nga whiriwhiringa o roto kei runga i to maatau turanga.

I pehea i timata ai?

Me pehea te tiimata o nga taangata tika ki te hanga i a raatau ake papaaho? Me whai whakaaro ano tatou kei a tatou te hitori o te whakawhanaketanga "hinonga pakari", tae noa ki te wa tino tika o te tau mo tetahi hinonga! Ko te wa harikoa ka tae mai koe ki te kaihoko ka kii: "Kei te hiahia matou kia ruarua nga kaitoro." Me te kaihoko: "Ae, kaore he patai! He tekau kei roto i te whatanga.

Na i mahia e matou a Oracle, Java, WebSphere, Db2 me era atu. Na reira, i tangohia e matou, ko te tikanga, ko nga otinga kaihoko pai rawa atu, i whakauruhia, ka ngana ki te tango atu. I takaro ratou ko ratou ano. He momo whakaoho o roto.

I timata katoa i te tau 2009. Mai i te tau 2006, kua tino whai waahi matou ki nga whakatau a nga kaiwhakahaere, ahakoa he aha. He maha nga PBX mariko i hanga e matou (penei i nga mea kei a matou inaianei i runga i te ota): ka titiro matou, ka whakatau he pai, ka whakatau ki te whakaoho i te whakaoho o roto.

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Tangohia te VMWare. I te mea e hikoi ana matou, me whakarere tonu matou i te Rokiroki kaihoko hauhautanga. E mohio ana matou ki nga mea katoa: me wehewehe nga kupu whakaari ki te 3, me whakanuia te utu ki te 10. Na reira, i mahia e matou a DirDB me etahi atu.

Katahi ka timata te tipu. I taapirihia te ratonga nama ki tenei, na te mea kua kore e taea e te papaaho te whakatutuki. Na ka neke te tūmau nama mai i MySQL ki Mongo. Ko te mutunga mai, ka whiwhi matou i tetahi otinga mahi hei whakahaere i nga waea katoa ka haere ki reira:

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Engari i tetahi waahi kei roto, kei te huri haere taua hua kaihoko - te mea nui, karihi, i tangohia e matou i mua. Tata ki te mutunga o te tau 2011, i mohio matou ko te mea nui mo matou ko tenei hua - ka uru matou ki roto. I kite matou i tetahi pakitara i mua i a matou, i oma tere matou ki roto, i te wa e hikoi ana nga kaihoko, ka taapirihia.
No reira, me mahi matou i tetahi mea. Ae ra, he maha nga rangahau i mahia e matou mo nga momo hua - nga puna tuwhera me nga kaihoko. E kore ahau e noho ki runga i tenei inaianei - ehara i te mea e korero ana matou. Ko te hokinga whakamutunga i whakaarohia e matou ko te hanga i a maatau ake turanga.

I te mutunga, ka tae matou ki tenei whiringa. He aha? Na te mea ko nga kaihoko katoa me nga hua puna tuwhera i hangaia hei whakaoti rapanga 10 tau ki muri. Ana, mena he 10 tau te pakeke, me etahi atu! Kua kitea te whiringa ki a maatau: ma te poroporoaki i to maatau whakaaro nui mo te ratonga tino pai (mo nga hoa mahi, nga kaiwhakahaere me a maatau ake), ka mahi maatau ake ranei.

I whakatau matou ki te mahi i tetahi mea rereke!

Nga whakaritenga papa

Mena ka mahi koe i tetahi mea mo te wa roa (ka whakamahi koe i nga hua o tetahi atu), katahi ka puhoi te whakaaro i roto i to mahunga: me pehea e mahia e au ake? I te mea he kaihōtaka katoa matou i roto i te kamupene (haunga nga kaihoko, kaore he kaihōtaka kore), kua roa o maatau whakaritenga, a he maamaa:

  1. Te tere whanaketanga teitei. Ko te hua o te kaihoko, nana i whakamamae i a matou, kaore i pai ki a matou i te tuatahi na te mea i mahi nga mea katoa mo te wa roa me te puhoi. I hiahia tere matou - he maha nga whakaaro! He maha tonu o matou whakaaro, engari katahi ano te rarangi o nga whakaaro i penei me te mea he tekau tau kei mua. Inaianei mo te tau anake.
  2. Te whakamahi teitei o te rino maha-matua. He mea nui ano tenei ki a matou, i te mea kua kite matou ka nui noa atu nga uho.
  3. Te ti'aturiraa teitei. Ko tetahi mea i tangi ano matou.
  4. Te ātete teitei ki nga rahunga.
  5. I hiahia matou ki te mutunga me te tukanga o nga tukunga o ia ra. Mo tenei ka hiahia matou ki te whiriwhiri reo.

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Na reira, mai i nga whakaritenga mo te hua kua whakaatuhia e matou mo matou ake, ko nga whakaritenga mo te reo ka tipu i roto i te huarahi arorau.

  1. Mena kei te pirangi matou ki te tautoko mo nga punaha maha-matua, me tautoko mo te mahi whakarara.
  2. Mena ka hiahia tatou ki te tere whanaketanga, me whai reo e tautoko ana i te whanaketanga whakataetae, nga kaupapa whakataetae. Mena kaore tetahi i pa ki te rereketanga, he tino ngawari:
    • Ko te kaupapa whakarara e pa ana ki te whakahaerenga o nga miro rereke e rua ki runga i nga matua rereke;
    • Ko te mahi i te wa kotahi, he mea nui ake te tautoko concurrency, e pa ana ki te pehea o te reo (he wa whakahaere ranei, ahakoa he aha) ka huna i nga uaua katoa ka puta mai i te mahi whakarara.
  3. Pumautanga teitei. Ma te mohio, i hiahia matou ki te tautau, me te pai ake i to maatau i runga i te hua o te kaihoko.

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Kaore i tino maha nga whiringa, mena ka mahara koe. Tuatahi, Erlang - e arohaina ana e matou, e mohio ana, ko taku ake, he mea tino pai. Tuarua, ehara a Java i te Java, engari ko Scala. Tuatoru, ko te reo kaore matou i mohio i tera wa - Haere. Katahi ano ka puta mai i tera wa, he mea tika, kua rua pea nga tau e noho ana, engari kaore ano kia tukuna.

Ka hinga Haere!

History of Haere

I hanga e matou he papa ki runga. Ka ngana ahau ki te whakamarama he aha.

He korero poto mo te Haere. I timata i te 2007, i whakatuwheratia i te 2009, i tukuna te putanga tuatahi i te 2012 (ara, i timata matou ki te mahi i mua i te tukunga tuatahi). Ko Google te kaihanga, i hiahia ki te whakakapi, i taku whakapae, ko Java.

He tino rongonui nga kaituhi:

  • Ko Ken Thomson, kei muri i a Unix, i hanga UTF-8, i mahi i te punaha Mahere 9;
  • Ko Rob Pike, nana i hoahoa te UTF-8 me Ken, i mahi ano i te Mahere 9, Inferno, Limbo i Bell Labs;
  • Ko Robert Gizmer, e mohio ana, e arohaina ana e matou mo te hanga i te Java HotSpot Compiler me te mahi i te kaihanga i roto i te V8 (te kaiwhakamaori Javascript a Google);
  • Neke atu i te 700 nga kaikoha, tae atu ki etahi o a maatau papanga.

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Haere ma te titiro

Ka kite tatou he ngawari noa iho te reo me te marama. Kei a matou etahi momo tino marama: i etahi wa me whakaatu, i etahi kaore (ko te tikanga ka whakatauhia nga momo).

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Ka kitea he huatau te whakaahua i nga hanganga. Ka kitea kei a tatou te ariā o te atatohu (kei hea te whetūriki). Ka kitea he tautoko motuhake mo te whakapuaki i te arawhitinga o nga rarangi me nga huinga hono.

He tino marama - ka ora koe. E ngana ana ki te tuhi Kia ora, e te ao:

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

He aha ta tatou e kite ana? He wetereo rite-C tenei, he mea kowhiri te tohutoro. Ka taea te whakawehe mo nga raina e rua, engari mena he mea hanga e rua enei kei te raina kotahi.

Ka kite matou ko nga taiapa i roto i nga hanganga whakahaere (i te rarangi 14) he mea whiriwhiri, engari me hiahia tonu nga taiapa korikori. Ka kite tatou he pateko te tuhi. Ka tangohia a Tim i te nuinga o te waa. He iti ake te uaua o tenei tauira i te Kia ora, te ao - hei whakaatu he whare pukapuka.

He aha atu ta tatou e kite nei he mea nui? Kua whakaritea te waehere ki roto i nga kohinga. A hei whakamahi i te kete ki roto i to ake waehere, me kawemai e koe ma te whakamahi i te tohutohu kawemai - he mea nui ano tenei. Ka whakarewahia e matou - ka mahi. Rawe!

Me whakamatau tetahi mea uaua ake: Tena koe, te ao, engari inaianei he tūmau http. He aha ta tatou e kite ana i nga mea whakamere i konei?

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Tuatahi, ka mahi te mahi hei tawhā. Ko te tikanga ko te mahi kei a matou he "tangata taangata tuatahi" ka taea e koe te mahi i nga mea whakamere ki a ia i roto i te ahua mahi. Ka kite tatou i nga mea ohorere e whai ake nei: ko te tohutohu kawemai e pa ana ki te putunga GitHub. E tika ana, e penei ana - ano, me penei te mahi.

I roto i te Haere, ko te kaitautuhi ao o te kete ko te url o tana putunga. He taputapu Goget motuhake e haere ana mo nga whakawhirinakitanga katoa, ka tango, ka whakauruhia, ka whakahiato, ka whakareri mo te whakamahi mena e tika ana. I te wa ano, ka mohio a Goget mo te html-meta. Na reira, ka taea e koe te pupuri i tetahi raarangi http, kei roto nga hononga ki to putunga motuhake (penei i a maatau, hei tauira).

He aha atu ta tatou e kite ana? Http me Json i te whare pukapuka paerewa. Ko te tikanga, he tirohanga - whakaata, me whakamahi i roto i te whakawaehere / json, na te mea ka whakakapi noa tatou i etahi mea noa.

Ka whakahaerehia e matou ka kite kei a matou nga rarangi 20 o te waehere whaihua e whakahiato ana, e rere ana, e homai ana i te kawenga toharite o naianei o te miihini (i runga i te miihini e rere ana).
He aha atu te mea nui mai i nga mea ka kitea tonutia i konei? Ka whakahiatohia ki roto i te rua pateko (buinary). Karekau he herenga o tenei rua, karekau he whare pukapuka! Ka taea te kape ki tetahi punaha, ka rere tonu, ka mahi.

Te neke haere.

Haere: tikanga me atanga

He tikanga a Haere. Ka taea e koe te whakaatu tikanga mo tetahi momo ritenga. I tua atu, ehara tenei i te mea he hanganga, engari he ingoa ingoa o etahi momo. Ka taea e koe te whakaatu i tetahi ingoa ingoa mo N32 me te tuhi i nga tikanga hei mahi i tetahi mea whai hua.

A, koinei te wa tuatahi ka taka tatou ki te moepuku ... Te ahua nei karekau a Go he karaehe penei. Ko te hunga e mohio ana ki a Go ka kii he momo whakaurunga, engari he rerekee tenei. Ko te tere ka mutu te whakaaro o te kaiwhakawhanake he taonga tuku iho, ko te pai ake. Karekau he karaehe i roto i te Haere, karekau he taonga tuku iho.

Pātai! He aha ta te kamupene o nga kaituhi i aratakina e Google hei whakaatu i te uaua o te ao? Kua whakawhiwhia ki a maatau nga atanga!

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

Ko te atanga he momo motuhake ka taea e koe te tuhi i nga tikanga ngawari, nga waitohu tikanga. I tua atu, ko nga momo e noho ana enei tikanga (e mahia ana) ka rite ki tenei atanga. Ko te tikanga ka taea e koe te tuhi noa i te mahi e tika ana mo tetahi momo, mo tetahi atu (e rite ana ki taua momo atanga). Panuku, whakaatu he taurangi o te momo o tenei atanga ka tautapa tetahi o enei ahanoa ki a ia.

Mo nga kaiwhaiwhai pakeke, ka taea e au te kii ka rua nga tohu tohu kei roto i tenei taurangi: ko tetahi ki nga raraunga, ko tetahi ki tetahi ripanga whakaahua motuhake e pa ana ki tenei momo, ki te atanga o tenei momo. Arā, ka hangaia e te kaikohi nga ripanga whakamaarama i te wa e hono ana.

Ae, he tohu tohu kia kore i roto i te Haere. Ko te kupu atanga {} (e rua nga taiapa mingimingi) he taurangi ka taea e koe te tohu ki tetahi ahanoa i runga i te maapono.
I tenei wa kei te pai nga mea katoa, kua mohio nga mea katoa. Kaore he mea miharo.

Haere: goroutines

Inaianei kua tae mai ki nga mea e pirangi ana matou: nga tikanga mama - goroutine (goroutine) i roto i nga kupu kupu Go.

Alexey Naydenov. ITooLabs. Ko te take o te whakawhanaketanga i runga i te papa waea a Go (Golang). Wāhanga 1

  1. Tuatahi, he tino mama (iti iho i te 2 Kb).
  2. Tuarua, he iti noa te utu mo te hanga i taua goroutine: ka taea e koe te hanga i te mano o ia hekona - kaore he mea e tupu.
  3. Ka mahihia e to raatau ake mahere, ka whakawhiti noa i te mana mai i tetahi goroutine ki tetahi atu.
  4. I tenei keehi, ka whakawhitia te mana whakahaere i nga keehi e whai ake nei:
    • ki te tupono he korero haere (mehemea ka timata te goroutine i te goroutine e whai ake nei);
    • ki te whakahohea he waea Whakauru/Whatu aukati;
    • ki te whakaohohia te kohi para;
    • ki te whakarewahia etahi mahi me nga hongere.

Arā, i nga wa katoa e whakahaerea ana te kaupapa Go i runga rorohiko, ka kitea te maha o nga matua kei roto i te punaha, ka timata te maha o nga miro e hiahiatia ana (e hia nga matua kei roto i te punaha, e hia ranei i korerohia e koe). No reira, ka whakahaeretia e te kai-whakarite nga miro mama ki runga i enei miro punaha whakahaere i ia matua.

Me tohu koinei te huarahi tino pai ki te whakamahi i te rino. I tua atu i nga mea i whakaatuhia e matou, he maha atu ano ta matou mahi. Ka hangaia e matou, hei tauira, nga punaha DPI e tuku ana i te 40 gigabits i roto i te waahanga kotahi (i runga i nga mea ka tupu i enei rarangi).

I reira, ahakoa i mua i te Haere, i whakamahia e matou te kaupapa kotahi mo tenei take: na te mea ka taea e koe te tiaki i te waahi o te keteroki tukatuka, ka tino whakaitihia te maha o nga huringa horopaki OS (he roa te waa). Ka whakahoki ano ahau: koinei te huarahi tino whai hua ki te whakamahi rino.

Ko tenei tauira raina 21 ngawari he tauira e mahi ana i te echo-server. Kia mahara he tino ngawari te mahi mahi, he ahorangi. Karekau he waeatanga, karekau he take ki te whakararuraru me te whakaaro... Ka panui noa koe ka tuhi!

I te wa ano, ki te panui koe me te tuhi, me tino aukati - ka tukuna noa tenei goroutine ki roto i te rarangi ka tangohia e te kaitakataka ka taea ano te mahi. Arā, ka taea e tenei waehere ngawari te mahi hei tūmau paoro mo te maha o nga hononga ka taea e te OS i runga i taua miihini.

Ka haere tonu tonu...

Ko etahi panui 🙂

Mauruuru koe mo te noho ki a matou. He pai ki a koe a maatau tuhinga? Kei te hiahia koe ki te kite i etahi atu mea whakamere? Tautokohia matou ma te tuku ota me te tuku korero ki o hoa, kapua VPS mo nga kaihanga mai i te $4.99, he tairitenga ahurei o nga kaitoro taumata-urunga, na matou i hanga mo koe: Ko te pono katoa mo VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps mai i te $19 me pehea ranei te tiri i tetahi tūmau? (e waatea ana me te RAID1 me te RAID10, tae atu ki te 24 matua me te 40GB DDR4).

Dell R730xd 2x iti ake i te pokapū raraunga Equinix Tier IV i Amsterdam? Anei i konei 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV mai i te $199 i roto i te Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - mai i te $99! Pānuihia mo Me pehea te hanga hanganga corp. akomanga ki te whakamahi o Dell R730xd E5-2650 v4 tūmau utu 9000 euros mo te pene?

Source: will.com

Tāpiri i te kōrero