Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Alexey Naidenov, CEO I-IToLabs, ikhuluma ngokuthuthukiswa kwenkundla yezokuxhumana yabasebenzi bezingcingo ngolimi lokuhlela lwe-Go (Golang). U-Alexey uphinde wabelane ngolwazi lwakhe lokuthumela nokusebenzisa isiteji kwelinye lama-opharetha amakhulu we-telecom ase-Asia, asebenzisa isiteji ukuze anikeze i-imeyili yezwi (VoiceMail) kanye nezinsizakalo ze-Virtual PBX (Cloud PBX).

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

U-Alexey Naydenov (ngemuva kwalokhu - AN): - Sanibonani nonke! Igama lami ngingu-Alexey Naidenov. Ngingumqondisi we-ItooLabs. Okokuqala, ngithanda ukuphendula ukuthi ngenzani lapha nokuthi ngifike kanjani lapha.

Uma ubheka i-Bitrix24 Marketplace (isigaba "Ngocingo"), izicelo eziyi-14 nezingu-36 ezilapho (40%) yithi:

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Ngokunembayo, laba opharetha esibambisene nabo, kodwa ngemuva kwakho konke lokhu inkundla yethu (I-Platform as a Service) - esibadayisela yona ngesenti elincane. Empeleni, ngithanda ukukhuluma ngokuthuthukiswa kwale nkundla nokuthi size kanjani ku-Go.

Izinombolo zenkundla yethu manje yilezi:

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

44 abalingani opharetha, kuhlanganise MegaFon. Ngokuvamile, sithanda ukuqhubeka nohambo, futhi empeleni siyakwazi ukufinyelela ababhalisile abayizigidi eziyi-100 babasebenzisi abangama-44 lapha e-Russia. Ngakho-ke, uma othile enemibono yebhizinisi, sihlala sijabule ukubalalela.

  • 5000 izinkampani zabasebenzisi.
  • 20 ababhalisile sebebonke. Konke kuyi-b000b - sisebenza nezinkampani kuphela.
  • Izingcingo ezingama-300 ngomzuzu phakathi nosuku.
  • Imizuzu eyi-100 yezingcingo ngonyaka odlule (sasigubha). Lokhu ngaphandle kokucabangela izingxoxo zangaphakathi eziseplatifomu yethu.

Kwaqala kanjani?

Abafana abalungile baqala kanjani ukwenza inkundla yabo? Kufanele futhi sicabangele ukuthi sasinomlando wokuthuthukiswa kwe-"hardcore enterprise", futhi nangesikhathi esinembe kakhulu sonyaka sebhizinisi! Kwakuyileso sikhathi esijabulisayo lapho ufika kukhasimende futhi uthi: "Sidinga amaseva ambalwa." Futhi ikhasimende: β€œYebo, akukho mbuzo! Sineshumi endaweni yokubeka.

Ngakho senze i-Oracle, i-Java, i-WebSphere, i-Db2 nakho konke lokho. Ngakho-ke, sithathe, yiqiniso, izixazululo ezingcono kakhulu zomthengisi, sazihlanganisa futhi sazama ukuphuma nazo. Badlale bodwa. Kungaba ukuqala kwangaphakathi okunjalo.

Konke kwaqala ngo-2009. Kusukela ngo-2006, besisondele kakhulu ezinqumweni zabasebenzisi, ngandlela thile. Senze ama-PBX ambalwa ngokwezifiso (njengalokhu esinakho manje nge-oda): sabheka, sanquma ukuthi kuhle, futhi sanquma ukuvusa ukuqalisa kwangaphakathi.

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Thatha i-VMWare. Njengoba sasihamba sodwa, kwakudingeka silahle ngokushesha Isitoreji somthengisi esipholile. Sazi konke ngabo: ukuthi izithembiso kufanele zihlukaniswe ngo-3, futhi izindleko kufanele ziphindwe ngo-10. Ngakho-ke, senze i-DirDB nokunye.

Yabe isiqala ukukhula. Isevisi yokukhokha yengezwe kulokhu, ngoba inkundla ayikwazanga ukumelana nayo. Bese iseva yokukhokha esuka ku-MySQL ithuthelwe e-Mongo. Ngenxa yalokho, sithole isixazululo esisebenzayo esicubungula zonke izingcingo eziya lapho:

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Kodwa endaweni ethile ngaphakathi, umkhiqizo ofanayo womthengisi uyajikeleza - oyinhloko, owenuzi, esake sawuthatha. Cishe ekupheleni kuka-2011, sazibonela ngokwethu ukuthi ibhodlela elikhulu kithi, yiqiniso, kuzoba lo mkhiqizo othile - sizongena kuwo. Sabona udonga phambi kwethu, sagijima sagijima sigcwele, njengoba amakhasimende ehamba, angeziwe.
Ngokuvumelana nalokho, kwadingeka senze okuthile. Impela, senze ucwaningo oluningi emikhiqizweni eyahlukene - yomibili imithombo evulekile kanye neyabathengisi. Ngeke ngigxile kulokhu manje - akulona iphuzu. Ukubuyela emuva kokugcina esicabange ngakho kwakuwukwenza inkundla yethu.

Ekugcineni, sifike kule nketho. Kungani? Ngoba yonke imikhiqizo yomthengisi nemithombo evulekile yenziwa ukuxazulula izinkinga eminyakeni eyi-10 edlule. Hhayi-ke, uma ingane eneminyaka engu-10, nokunye okwengeziwe! Ukukhetha sekusobala kithina: noma sivalelisa embonweni wethu omuhle wesevisi ekahle (yozakwethu, opharetha kanye nathi), noma senze okuthile okwethu.

Sanquma ukwenza okuhlukile!

Izidingo Zenkundla

Uma wenza okuthile isikhathi eside (uxhaphaza umkhiqizo womunye umuntu), khona-ke umcabango wakheka kancane ekhanda lakho: ngingakwenza kanjani mina? Njengoba sonke singabahleli bezinhlelo enkampanini (ngaphandle kwabathengisi, abekho abangabahleli), izidingo zethu zakhiwe isikhathi eside, futhi bezicacile:

  1. Isivinini sokuthuthukiswa okuphezulu. Umkhiqizo womthengisi, owawusihlukumeza, wawungasifanelanga kwasekuqaleni ngoba yonke into yahamba isikhathi eside futhi ihamba kancane. Besifuna ngokushesha - sibe nemibono eminingi! Sisenemibono eminingi, kodwa ke uhlu lwemibono lwalubukeka sengathi eminyakeni eyishumi ezayo. Manje kuphela unyaka.
  2. Ukusetshenziswa okuphezulu kwe-multi-core iron. Lokhu bekubalulekile nakithi, ngoba sabona ukuthi kuzoba nama-cores amaningi.
  3. Ukuthembeka okuphezulu. Lowo nathi sakhala.
  4. Ukubekezela okuphezulu kwamaphutha.
  5. Besifuna ukuphetha ngenqubo yokukhishwa kwansuku zonke. Ukuze senze lokhu, kwakudingeka sikhethe ulimi.

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Ngokunjalo, kusukela kuzidingo zomkhiqizo esizethule wona, izimfuneko zolimi zikhula ngendlela enengqondo ecacile.

  1. Uma sifuna usekelo lwamasistimu anezimo ezihlukene, ngakho-ke sidinga usekelo lokwenza okufanayo.
  2. Uma sidinga isivinini sentuthuko, sidinga ulimi olusekela ukuthuthukiswa kokuncintisana, izinhlelo zokuncintisana. Uma noma ubani engakaze ahlangabezane nomehluko, khona-ke kulula kakhulu:
    • i-parallel programming imayelana nokuthi imicu emibili ehlukene isebenza kanjani kuma-cores ahlukene;
    • ukwenza ngesikhathi esisodwa, ikakhulukazi ukusekelwa okuvumelanayo, kumayelana nendlela ulimi (noma isikhathi sokusebenza, noma yini) esiza ukufihla bonke ubunkimbinkimbi obuvela ekusebenziseni okufanayo.
  3. Ukuzinza okuphezulu. Ngokusobala, besidinga iqoqo, futhi bekungcono kunalokho ebesinakho kumkhiqizo womthengisi.

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Besingenakho ngempela izinketho eziningi, uma ukhumbula. Okokuqala, u-Erlang - siyayithanda futhi siyayazi, bekuyintandokazi yami yomuntu siqu. Okwesibili, iJava ayiyona ngisho iJava, kodwa ikakhulukazi iScala. Okwesithathu, ulimi ngaleso sikhathi esasingalwazi nhlobo - Hamba. Yayisanda kuvela ngaleso sikhathi, ngokunembile, yayivele ikhona cishe iminyaka emibili, kodwa yayingakakhululwa.

Uhluliwe Hamba!

Umlando we-Go

Senze inkundla kuyo. Ngizozama ukuchaza ukuthi kungani.

Umlando omfushane we-Go. Iqale ngo-2007, yavulwa ngo-2009, inguqulo yokuqala yakhululwa ngo-2012 (okungukuthi, saqala ukusebenza ngisho nangaphambi kokukhululwa kokuqala). Umqalisi bekuyi-Google, ebifuna ukufaka esikhundleni, njengoba ngisola, i-Java.

Ababhali badume kakhulu:

  • UKen Thomson, owayesemuva kwe-Unix, wasungula i-UTF-8, wasebenza ohlelweni lwe-Plan 9;
  • U-Rob Pike, owaklama i-UTF-8 no-Ken, waphinde wasebenza ku-Plan 9, i-Inferno, i-Limbo e-Bell Labs;
  • U-Robert Gizmer, esimaziyo nesimthandayo ngokusungula i-Java HotSpot Compiler kanye nokusebenza kujeneretha ku-V8 (umhumushi we-Javascript wakwa-Google);
  • Kanye nabanikeli abangaphezu kuka-700, kuhlanganise namanye amapheshana ethu.

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Awuthi shazi

Siyabona ukuthi ulimi lulula futhi luyaqondakala. Sinezinhlobo ezisobala: kwezinye izimo zidinga ukumenyezelwa, kwezinye azikho (okusho ukuthi izinhlobo ziqondiswe noma kunjalo).

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Kungabonakala ukuthi kuyimfashini ukuchaza izakhiwo. Kungabonakala ukuthi sinomqondo wesikhombi (lapho inkanyezi ikhona). Kungabonakala ukuthi kukhona ukusekelwa okukhethekile kokumemezela ukuqaliswa kwezinhlaka ezifanayo kanye nezinhlelo ezihlangene.

Cishe kuyaqondakala - ungaphila. Izama ukubhala Sawubona, mhlaba:

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Sibonani? Lena i-syntax efana ne-C, i-semicolon iyakhethwa. Kungaba isihlukanisi semigqa emibili, kodwa kuphela uma lokhu kuyizakhiwo ezimbili ezisemgqeni ofanayo.

Siyabona ukuthi amabakaki ezakhiweni zokulawula (emgqeni we-14) ayakhethwa, kodwa ama-curly ahlala edingeka. Siyabona ukuthi ukuthayipha kumile. I-Tim ezimweni eziningi iyaboniswa. Lesi sibonelo siyinkimbinkimbi kakhulu kunejwayelekile Sawubona, mhlaba - ukukhombisa nje ukuthi kukhona umtapo wolwazi.

Yini enye esiyibona ibalulekile? Ikhodi ihlelwe yaba amaphakheji. Futhi ukuze usebenzise iphakheji kukhodi yakho, udinga ukuyingenisa usebenzisa umyalelo wokungenisa - lokhu nakho kubalulekile. Siqala - kuyasebenza. Kuhle!

Ake sizame into eyinkimbinkimbi kakhulu: Sawubona, mhlaba, kodwa manje iseva ye-http. Yini esiyibona ezithakazelisayo lapha?

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

Okokuqala, umsebenzi usebenza njengepharamitha. Lokhu kusho ukuthi umsebenzi esinawo β€œuyisakhamuzi esisezingeni lokuqala” futhi ungenza izinto eziningi ezithakazelisayo ngawo ngesitayela sokusebenza. Sibona okulandelayo okungalindelekile: isiyalelo sokungenisa sibhekisa ngqo endaweni yokugcina ye-GitHub. Kulungile, kunjalo - ngaphezu kwalokho, kufanele kwenziwe kanjalo.

Ku-Go, inkomba yendawo yonke yephakheji iyi-url yendawo yakho yokugcina. Kunohlelo olukhethekile lwe-Goget oluya kukho konke okuncikile, lizilande, lizifake, lizihlanganise, futhi zizilungiselele ukuthi zisetshenziswe uma kudingeka. Ngesikhathi esifanayo, u-Goget uyazi mayelana ne-html-meta. Ngokufanelekile, ungagcina inkomba ye-http, ezoqukatha izixhumanisi endaweni yakho yokugcina ethile (njengoba senza, ngokwesibonelo, senza).

Yini enye esiyibonayo? U-Http no-Json kulabhulali evamile. Kukhona, ngokusobala, i-introspection - reflection, okufanele isetshenziswe ekubhalweni ngekhodi / json, ngoba sivele simisele into ethile engafanele.

Siyayigijima futhi siyabona ukuthi sinemigqa engu-20 yekhodi ewusizo ehlanganisa, egijima futhi enikeza isilinganiso samanje somthwalo womshini (emshinini osebenza kuwo).
Yini enye ebalulekile kulokho esingakubona ngokushesha lapha? Ihlanganisa ibe kanambambili eyodwa emile (i-buinary). Le kanambambili ayinakho nhlobo ukuncika, ayikho imitapo yolwazi! Ingakopishwa kunoma iyiphi isistimu, isebenze ngokushesha, futhi izosebenza.

Siqhubekela phambili.

Hamba: izindlela kanye nokuxhumana

I-Go inezindlela. Ungamemezela indlela yanoma yiluphi uhlobo lwangokwezifiso. Ngaphezu kwalokho, lokhu akusona ngempela isakhiwo, kodwa kungase kube isiteketiso sohlobo oluthile. Ungasho isibizo sika-N32 futhi ubhale izindlela zokwenza okuthile okuwusizo.

Futhi yilapho siwela khona okokuqala ... Kuvele ukuthi i-Go ayinawo amakilasi anjalo. Labo abazi i-Go bangase bathi kukhona uhlobo lokufakwa, kodwa lokhu kuhluke ngokuphelele. Ngokushesha unjiniyela ayeka ukucabanga ngayo njengefa, kuba ngcono. Azikho izigaba ku-Go, futhi alikho nefa.

Umbuzo! Inkampani yababhali eholwa yi-Google isinikeze ini ukuze sibonise ubunkimbinkimbi bomhlaba? Sinikezwe izindawo zokuhlangana!

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

I-interface iwuhlobo olukhethekile olukuvumela ukuthi ubhale izindlela ezilula, amasignesha endlela. Ngaphezu kwalokho, noma yiluphi uhlobo lezi zindlela ezikhona (ezisetshenziswayo) zizohambisana nalesi sixhumanisi. Lokhu kusho ukuthi ungavele ubhale umsebenzi ohambisanayo wohlobo olulodwa, kolunye (oluhambisana nalolo hlobo lwesixhumi esibonakalayo). Okulandelayo, memezela okuguquguqukayo kohlobo lwalesi sikhombimsebenzisi futhi unikeze noma iyiphi yalezi zinto kuso.

Kubalandeli be-hardcore, ngingasho ukuthi lokhu okuguquguqukayo empeleni kuzoqukatha izinkomba ezimbili: eyodwa kudatha, enye etafuleni elichazayo elikhethekile eliqondene nalolu hlobo oluthile, ku-interface yalolu hlobo. Okusho ukuthi, umhlanganisi wenza amatafula anjalo ezichazi ngesikhathi sokuxhumanisa.

Futhi zikhona, vele, izikhombi zokuthi ungasebenzi ku-Go. Igama elibonakalayo {} (elinamabrace amabili asontekile) liwukuguquguquka okukuvumela ukuthi ukhombe noma iyiphi into ngokuphelele.
Kuze kube manje, konke kuhamba ngohlelo, konke sekujwayelekile. Akukho okumangazayo.

Hamba: ama-goroutines

Manje sesiza kulokho esikuthakaselayo: izinqubo ezingasindi - ama-goroutines (ama-goroutines) ku-Go terminology.

Alexey Naidenov. I-IToLabs. Ikesi lokuthuthukiswa kuplathifomu yefoni ye-Go (Golang). Ingxenye 1

  1. Okokuqala, angasindi ngempela (ngaphansi kuka-2 KB).
  2. Okwesibili, izindleko zokudala i-goroutine enjalo ayinalutho: ungakha inkulungwane yazo ngomzuzwana - akukho okuzokwenzeka.
  3. Zinikezwa isihleli sazo, esivele sidlulise ukulawula kusuka ku-goroutine kuya kwenye.
  4. Kulokhu, ukulawula kudluliselwa ezimweni ezilandelayo:
    • uma kuhlangatshezwana nesitatimende sokuhamba (uma i-goroutine iqala i-goroutine elandelayo);
    • uma ucingo Lokufaka/Ukuphuma oluvinjiwe luvuliwe;
    • uma ukuqoqwa kukadoti kubangelwa;
    • uma ukusebenza okuthile namashaneli kuqalisiwe.

Okusho ukuthi, noma nini lapho uhlelo lwe-Go luqhutshwa kukhompuyutha, ithola inani lama-cores ohlelweni, iqala imicu eminingi njengoba kudingeka (bangaki ama-cores ohlelweni, noma ukuthi mangaki owatshele yona). Ngokufanelekile, umhleli uzosebenzisa le micu engasindi yokusebenza kuyo yonke le micu yesistimu yokusebenza kumongo ngamunye.

Kufanele kuqashelwe ukuthi lena yindlela ephumelela kakhulu yokusebenzisa i-iron. Ngaphezu kwalokho esikukhombisile, kuningi esikwenzayo. Senza, isibonelo, amasistimu e-DPI avumela ukuphakela amagigabhithi angu-40 kuyunithi eyodwa (kuye ngokuthi kwenzekani kule migqa).

Lapho, ngisho nangaphambi kwe-Go, sasebenzisa uhlelo olufanayo ncamashi ngenxa yalesi sizathu: ngoba ikuvumela ukuthi ulondoloze indawo yenqolobane yokucubungula, unciphise kakhulu inani lokushintshwa komongo we-OS (okubuye kuthathe isikhathi eside kakhulu). Ngiyaphinda: lena yindlela ephumelela kakhulu yokusebenzisa insimbi.

Lesi sibonelo esilula semigqa engama-21 siyisibonelo esenza nje i-echo-server. Ngasikhathi sinye, qaphela ukuthi umsebenzi wokuphakela ulula kakhulu, unomugqa. Awekho ama-callbacks, asikho isidingo sokuzihlupha futhi ucabange... Ufunda futhi ubhale nje!

Ngesikhathi esifanayo, uma ufunda futhi ubhala, kufanele empeleni uvimbele - le goroutine imane ifakwe kulayini futhi ithathwe umhleli lapho ukubulawa kungenzeka futhi. Okusho ukuthi, le khodi elula ingasebenza njengeseva ye-echo ekuxhumekeni okuningi njengoba i-OS kulo mshini izokuvumela.

Izoqhubeka maduze...

Ezinye izikhangiso πŸ™‚

Siyabonga ngokuhlala nathi. Uyazithanda izindatshana zethu? Ufuna ukubona okuqukethwe okuthakaselayo okwengeziwe? Sisekele ngokufaka i-oda noma ngokuncoma kubangani, I-VPS yefu yonjiniyela kusuka ku-$4.99, i-analogue ehlukile yamaseva ezinga lokungena, esungulwe yithi ngenxa yakho: Lonke iqiniso nge-VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kusuka ku-$19 noma ukwabelana ngeseva? (itholakala nge-RAID1 kanye ne-RAID10, kufika kuma-cores angu-24 kuze kufike ku-40GB DDR4).

I-Dell R730xd 2x ishibhile esikhungweni sedatha se-Equinix Tier IV e-Amsterdam? Lapha kuphela 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kusukela ku-$199 eNetherlands! I-Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - isuka ku-$99! Funda mayelana Indlela yokwakha ingqalasizinda corp. ikilasi ngokusetshenziswa kwe-Dell R730xd E5-2650 v4 amaseva abiza u-9000 euros ngepeni?

Source: www.habr.com

Engeza amazwana