Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Alexey Naydenov, maamulaha guud ItooLabs, waxa uu ka hadlayaa horumarinta madal isgaarsiineed oo loogu talagalay hawlwadeenada isgaadhsiinta ee luuqada barnaamijka Go (Golang). Alexey waxa kale oo uu la wadaagaa khibradiisa ku wajahan geynta iyo ka shaqaynta madal mid ka mid ah hawl wadeenada isgaadhsiinta Asia ee ugu wayn, kaas oo u isticmaalay madal si ay u bixiyaan adeegyada fariimaha codka (VoiceMail) iyo Virtual PBX (Cloud PBX).

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Alexey Naydenov (hadda dambe - AN): - Salaamu calaykum! Magacaygu waa Alexey Naydenov. Waxaan ahay agaasimaha ItooLabs. Marka hore, waxaan jeclaan lahaa inaan ka jawaabo waxa aan halkan ka qabanayo iyo sida aan halkan ku dambeeyay.

Haddii aad eegto Suuqa Suuqa Bitrix24 (qaybta "Telephony"), markaa 14 codsi iyo 36 kuwaa jira (40%) waa annaga:

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Si sax ah, kuwani waa wada-hawlgalayaashayada hawlwadeenada, laakiin waxaas oo dhan waxa ka dambeeya madal-keena (Platform as a Service) - waxa aan uga iibino dinaar yar. Runtii, waxaan jeclaan lahaa inaan ka hadlo horumarka madashan iyo sida aan ku nimid Go.

Nambarada goobtayada hadda:

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

44 wada-hawlgalayaal ah, oo ay ku jirto Megafon. Guud ahaan, waxaan runtii jecelnahay inaan ku galno tacaburyo kala duwan, waxaanan si dhab ah u heli karnaa 100 milyan oo macaamiil ah oo ka mid ah 44 hawlwadeenno halkan Russia ah. Sidaa darteed, haddii qof uu leeyahay fikrado ganacsi, waxaan had iyo jeer ku faraxsanaan doonaa inaan dhegaysanno.

  • 5000 shirkadood oo isticmaala.
  • 20 oo macaamiisha ah guud ahaan. Tani waa dhammaan b000b - waxaan la shaqeynaa oo keliya shirkadaha.
  • 300 oo wac daqiiqaddii inta lagu jiro maalinta.
  • 100 milyan oo daqiiqo oo wicitaan ah sannadkii hore (waan dabaaldegnay). Tani ma tixgelinayso wada-xaajoodyada gudaha ee laga heli karo madalkeenna.

Sidee ku bilaabatay?

Sidee dudes saxda ah xitaa bilaabaan samaynta ay madal? Waa inaan sidoo kale xisaabta ku darnaa in aan leenahay taariikh horumarinta "ganacsiga adag" iyo xitaa waqtiga ugu saxsan sanadka ee ganacsiga! Waxay ahayd wakhtigaas farxadda leh markii aad u timaaddo macmiilka oo aad tidhaahdo: "Waxaan u baahanahay dhawr server oo kale." Macmiilkuna: “ Su’aal ma leh! Toban ayaanu ku haynaa rafka.”

Markaa waxaan samaynay Oracle, Java, WebSphere, Db2 iyo dhammaan walxahaas. Sidaa darteed, waxaan qaadnay, dabcan, xalalka iibiyaha ugu fiican, isku dhafan oo isku daynay inaan la qaadno. Anaga ayaanu ku soconay. Tani waxay noqon kartaa bilaw gudaha ah.

Waxaas oo dhami waxay si dhab ah u bilowdeen 2009kii. Laga soo bilaabo 2006, waxaanu si dhow ugu lug lahayn xalalka hawlwadeenka, hal dhinac ama si kale. Waxaan sameynay dhowr PBX-yada casriga ah (sida midka aan hadda dalbanay): waanu eegnay, go'aansanay inay fiicantahay, waxaana go'aansanay inaan bilowno bilaw gudaha ah.

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Waxaan qaadnay VMWare. Maadaama aanu keligeena ahayn, waxay noqotay inaan isla markiiba ka tagno Kaydinta iibiyaha wanaagsan. Waan ognahay wax walba oo iyaga ku saabsan: Ballanqaadyadaas waa in loo qaybiyaa 3, kharashkuna waa in lagu dhufto 10. Taasi waa sababta ay u sameeyeen DirDB iyo wixii la mid ah.

Kadibna waxa uu bilaabay inuu koro. Adeeg biilasha ayaa tan lagu daray sababtoo ah madalku ma sii qabsan karto. Kadib server-kii biilasha ee MySQL wuxuu u dhaqaaqay Mongo. Natiijo ahaan, waxaan helnay xal shaqeynaya oo ka baaraandegaya dhammaan wicitaannada halkaas taga:

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Laakiin meel gudaha ah, isla sheyga iibiyaha ayaa wareegaya - kan ugu weyn, kan nukliyeerka, oo aan mar qaadnay. Qiyaastii dhamaadkii 2011, waxaan ogaanay in caqabada ugu weyn ee nagu haysa, dabcan, ay noqon doonto badeecadan gaarka ah - waan ku socon doonaa. Waxa aanu aragnay gidaar naga soo hor jeeda, kaas oo aanu ku dhex yaacnay si aad ah, iyada oo macaamiil badan ay imanayaan.
Sidaas awgeed, waxaan u baahnay inaan wax qabanno. Dabcan, waxaan samaynay cilmi baaris aad u badan oo ku saabsan alaabooyin kala duwan - labadaba ilo furan iyo kuwa iibiya. Ma sii joogi doono tan hadda - taasi maaha waxa aan ka hadlayno. Xulashada dib-u-dhacii ugu dambeysay ee aan ku fikirnay waxay ahayd inaan samayno madal noo gaar ah.

Ugu dambayntii, waxaanu nimid doorashadan. Waa maxay sababtu? Sababtoo ah dhammaan iibiyeyaasha iyo alaabada il furan ayaa loo sameeyay si loo xalliyo dhibaatooyinka 10 sano jirsaday. Hagaag, haddii ay jiraan 10 sano, iyo qaar kaloo badan! Doorashadu waxay noo noqotay mid cad: ama waxaan ku macsalaameyneynaa fikraddayada weyn ee adeegga ku habboon (lamaanayaasha, hawl-wadeennada iyo nafteena), ama waxaan sameynaa wax annaga noo gaar ah.

Waxaan go'aansanay in aan sameyno wax annaga noo gaar ah!

Shuruudaha Platform

Haddii aad wax samaynaysay wakhti dheer (adoo isticmaalaya wax soo saarka qof kale), markaa fikradda si tartiib tartiib ah ayaa madaxaaga ku jirta: sidee baan u samayn lahaa naftayda? Maadaama aan dhammaanteen nahay barnaamij-bixiyeyaasha shirkadda (marka laga reebo iibiyeyaasha, ma jiraan kuwa aan barnaamijka ahayn), shuruudahayagu waxay sameeyeen waqti dheer ka hor, waxayna ahaayeen kuwo cad:

  1. Xawaaraha horumarka sare. Alaabta iibiyaha ee nagu dhibay ma ahayn mid lagu qanco, marka hore, sababtoo ah wax walba waxay noqdeen kuwo dheer oo tartiib ah. Waxaan rabnay si deg deg ah - waxaan haysanay fikrado badan! Weli waxaan haynaa fikrado badan, laakiin markaa liiska fikradaha ayaa ahaa mid u muuqday toban sano ka hor. Hadda hal sano oo keliya.
  2. Isticmaalka ugu badan ee birta xudunta badan leh. Tani waxay sidoo kale noo ahayd mid muhiim ah, maadaama aan aragnay in ay jiri doonaan oo kaliya tiro badan oo dheeraad ah.
  3. Kalsoonida sare. Wax aan sidoo kale la ooynay.
  4. Iska caabin sare oo guuldarrooyinka.
  5. Waxaan rabnay inaan ku dhameyno habka sii deynta maalinlaha ah. Taas awgeed waxaan u baahneyn doorasho luqadeed.

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Sidaa darteed, laga soo bilaabo shuruudaha badeecada aan u dejinay nafteena, shuruudaha luqaddu waxay u koraan si cad oo macquul ah.

  1. Haddii aan rabno taageerada nidaamyada asaasiga ah ee badan, markaa waxaan u baahanahay taageerada fulinta isbarbardhigga.
  2. Haddii aan u baahanahay xawaaraha horumarka, waxaan u baahannahay luqad taageerta horumarinta tartanka, barnaamijyada tartanka. Haddii qof uusan la kulmin farqiga, waa mid aad u fudud:
    • Barnaamujyada barbar socdaa waxa ay ku saabsan yihiin sida ay laba dun oo kala duwani u fuliyaan xudunta kala duwan;
    • Fulin la mid ah, ama si ka sii saxan, taageerada isdhaafsiga, waxay ku saabsan tahay sida luqadda (ama runtime, macno ma leh) waxay u caawisaa qarinta dhammaan kakanaanta ka timaadda fulinta isbarbar-dhigga.
  3. Degenaansho sare. Sida iska cad, waxaan u baahanahay koox, iyo mid ka fiican sidii aan ku haysanay alaabta iibiyaha.

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Runtii ma aanan haysan fursadahaas badan, haddii aad xasuusato. Marka hore, Erlang - waanu jecelnahay oo ognahay, waxay ahayd mid shakhsi ah oo aan jeclahay. Marka labaad, Java xitaa Java maaha, laakiin gaar ahaan Scala. Midda saddexaad, af aan waagaas aan haba yaraatee aqoon - Tag. Hadda ayay soo muuqatay markaas, ama halkii, waxay hore u jirtay ilaa laba sano, laakiin weli lama sii dayn.

Tag guulee!

Taariikhda Go

Madal ayaanu ka samaynay. Waxaan isku dayi doonaa inaan sharaxo sababta.

Taariikh Gaaban Oo Kooban. Waxay bilaabatay 2007dii, waxaa la furay 2009-kii, nuqulkii ugu horreeyay waxaa la sii daayay 2012 (taasi waa, waxaan bilownay inaan shaqeyno xitaa ka hor inta aan la sii deyn). Bilawgu wuxuu ahaa Google, oo rabtay inay badasho, sida aan tuhunsanahay, Java.

Qorayaashu aad bay caan u yihiin:

  • Ken Thomson, oo ka dambeeyay Unix, ikhtiraacay UTF-8, wuxuu ka shaqeeyay nidaamka Qorshaha 9;
  • Rob Pike, oo soo saaray UTF-8 oo uu la socday Ken, ayaa sidoo kale ka shaqeeyay Qorshaha 9, Inferno, Limbo ee Bell Labs;
  • Robert Giesmer, oo aanu naqaano oo aanu jecelnahay ikhtiraacida Java HotSpot Compiler iyo shaqadiisa dab-dhaliye ee V8 (turjumaanka Javascript ee Google);
  • Iyo in ka badan 700 oo wax ku darsaday, oo ay ku jiraan qaar ka mid ah balastarradayada.

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Tag: marka hore eeg

Waxaan aragnaa in luqaddu tahay mid fudud ama ka yar oo la fahmi karo. Waxaan haynaa noocyo muuqda: xaaladaha qaarkood waxay u baahan yihiin in lagu dhawaaqo, kuwa kalena lagama maarmaan ma aha (taasi waxay ka dhigan tahay in noocyada lagu qiyaaso si uun ama si kale).

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Waxaa la arki karaa in ay tahay moodada in lagu qeexo qaab-dhismeedka. Waxaa la arki karaa in aan haysano fikradda tilmaame (meesha xiddigtu ku taal). Waxaa la arki karaa in ay jirto taageero gaar ah oo ku aaddan ku dhawaaqida bilowga diyaarinta iyo arraysyada associative.

Way caddahay - waad noolaan kartaa. Aan isku dayno inaan qorno Hello, world:

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Maxaan aragnaa? Kani waa sida C-sida syntax, semicolon-ku waa ikhtiyaari. Waxay noqon kartaa kala-soocida laba xariiq, laakiin waa haddii kuwani yihiin laba dhismo oo isku mid ah.

Waxaan aragnaa in xirmooyinka ku jira qaababka xakamaynta (xariiqda 14-aad) ay yihiin ikhtiyaari, laakiin xargaha curyaanka ah ayaa had iyo jeer loo baahan yahay. Waxaan aragnaa in teebku uu taagan yahay. Tim ayaa la saaraa inta badan. Tusaalahani wuu ka yara dhib badan yahay kan caadiga ah Hello, world - kaliya si loo muujiyo inay jirto maktabad.

Maxaa kale oo aan aragnaa oo muhiim ah? Koodhka waxa loo habeeyey baakado. Oo si aad u isticmaasho baakidh ku jira koodkaaga, waxaad u baahan tahay inaad soo dejiso adigoo isticmaalaya dardaaranka soo dejinta - tani sidoo kale waa muhiim. Waxaan bilownay - way shaqeysaa. Wayn!

Aynu isku dayno wax ka sii adag kan soo socda: Hello, world, laakiin hadda kaliya waa server http ah. Maxaan halkan ku aragnaa oo xiiso leh?

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Marka hore, shaqadu waxay u shaqeysaa sidii halbeeg. Tani waxay ka dhigan tahay in shaqadeenu ay tahay "muwaadin fasalka koowaad" waxaadna ku samayn kartaa waxyaabo badan oo xiiso leh oo leh qaab shaqeynaya. Marka xigta waxaan aragnaa wax lama filaan ah: dardaaranka soo dejinta ayaa si toos ah ugu xira kaydka GitHub. Taasi waa sax, taasi waa sida ay tahay - sidoo kale, taasi waa sida ay tahay in la sameeyo.

Go, aqoonsiga caalamiga ah ee xirmo waa url ee kaydkeeda. Waxaa jira utility Goget gaar ah kaas oo keeni doona dhammaan ku tiirsanaanta, soo dejin doona, rakibi doona, ururin doona una diyaarin doona isticmaalka haddii loo baahdo. Isla mar ahaantaana, Goget wuu garanayaa html-meta. Sidaa darteed, waxaad haysan kartaa hagaha http ka kooban yahay xiriirinta kaydkaaga gaarka ah (sida aanu samayno, tusaale ahaan).

Maxaa kale oo aan aragnaa? Http iyo Json ee maktabadda caadiga ah. Waxaa jira, iska cad, is-dhex-gal - milicsi, kaas oo loo isticmaali karo encoding/json, sababtoo ah waxaan si fudud ugu beddelnaa shay gardarro ah.

Waanu wadnaa oo aragnaa in aanu haysano kood wax ku ool ah oo ku jira 20 sadar, kaas oo uruuriya, socodsiiya oo ka warbixinaya celceliska celceliska mashiinka (mashiinka lagu soo saaray).
Maxaa kale oo muhiim ah oo aan isla markiiba halkan ku arki karno? Waxa lagu soo ururiyey hal binary (buinary). Binary-gan ma laha wax ku tiirsan, ma laha maktabado! Waxaad ku koobi kartaa nidaam kasta, isla markiiba u socodsii, wayna shaqayn doontaa.

Aan hore u socono.

Tag: Hababka iyo Interfaces

Go waxay leedahay habab. Waxaad ku dhawaaqi kartaa hab nooc kasta oo caado ah. Waxaa intaa dheer, kani maahan dhismo, laakiin waxaa laga yaabaa in loo yaqaan nooc ka mid ah. Waxaad ku dhawaaqi kartaa alias for N32 oo aad u qori kartaa habab si ay u sameeyaan wax kasta oo faa'iido leh.

Oo halkan waxaan ku dhacnay miyir beel markii ugu horeysay... Waxaa soo baxday in Go uusan lahayn fasalo sidan oo kale ah. Kuwa garanaya Go waxaa laga yaabaa inay yiraahdaan waxaa jira nooc ka mid ah, laakiin taasi waa wax kale oo dhan. Sida ugu dhakhsaha badan horumariyayaashu u joojiyaan ka fikirida dhaxal ahaan, way fiicnaan doontaa. Ma jiraan fasallo ku yaal Go, sidoo kale ma jiraan wax dhaxal ah.

Su'aal! Maxay shirkadda qoraayaasha ee uu hoggaamiyo Google na siisay si aan u muujinno kakanaanta adduunka? Waxay na siiyeen interfaces!

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

Interface waa nooc gaar ah oo kuu ogolaanaya inaad si fudud u qorto habab fudud, habka saxiixyada. Dheeraad ah, nooc kasta oo hababkan ay jiraan (waa la fuliyay) waxay u dhigantaa interface-kan. Tani waxay ka dhigan tahay inaad si fudud u qeexi karto shaqada u dhiganta hal nooc, mid kale (taas oo u dhiganta nooca interface). Marka xigta, ku dhawaaq doorsoome ka mid ah nooca is-dhex-galkan oo u qoondee mid ka mid ah walxahan.

Taageerayaasha hardcore, waxaan dhihi karaa in doorsoomuhu uu dhab ahaantii lahaan doono laba tilmaame: mid xogta, kan kale ee miis gaar ah oo sharraxaya, kaas oo ah nooca gaarka ah, ee isdhexgalka noocaan ah. Taasi waa, isku-dubariduhu waxa uu abuuraa jaantusyada sharraxaadaha wakhtiga isku xidhka.

Iyo in Go, dabcan, waxaa jira tilmaame si aan waxba u jirin. Erayga interfiyuuga {} (oo leh laba geesood oo qaloocan) waa doorsoome kuu ogolaanaya inaad tilmaanto shay kasta mabda' ahaan.
Ilaa hadda wax walba waa hagaagsan yihiin, wax walba waa la yaqaan. Wax la yaab leh ma jiraan.

Tag: gorutines

Hadda waxaan u nimid waxa na xiiseynaya: hababka miisaanka fudud - goroutines (goroutines) ee Go ereyada.

Alexey Naydenov. ItooLabs. Kiiska horumarka ee Go (Golang) ee goobta talefoonka. Qaybta 1

  1. Marka hore, runtii way fudud yihiin (in ka yar 2 KB).
  2. Marka labaad, kharashyada abuurista goroutine noocan oo kale ah waa mid aan fiicneyn: waxaad abuuri kartaa kun iyaga ka mid ah ilbiriqsi kasta - waxba ma dhici doono.
  3. Waxaa u adeega jadwalkooda gaarka ah, kaas oo si fudud uga wareejinaya kantaroolka mid kale.
  4. Xaaladdan, xakamaynta ayaa lagu wareejiyaa xaaladaha soo socda:
    • haddii gogol-dhaafku la kulmo (haddii goroutine uu bilaabo goroutine soo socda);
    • haddii xidhidhiyaha Soo-gelinta/ka-baxa wicida la furo;
    • haddii qashin ururintu bilaabato;
    • haddii qaar ka mid ah hawlgalka channels la bilaabay.

Taasi waa, mar kasta oo barnaamijka Go uu ku shaqeeyo kombuyuutar, wuxuu go'aamiyaa tirada cores ee nidaamka, wuxuu soo saarayaa inta badan ee loo baahan yahay (Immisa cores ayaa ku jira nidaamka ama inta aad sheegtay). Sidaas awgeed, jadwal-hayehu waxa uu ku socodsiin doonaa duntan fudud ee fulinta dhammaan dunta nidaamka hawlgalka ee xudunta kasta.

Waa in la ogaadaa in tani ay tahay habka ugu waxtarka badan ee loo isticmaalo birta. Waxa sii dheer waxa la tusay, wax badan ayaanu samaynaa. Waxaan samaynaa, tusaale ahaan, nidaamyada DPI oo u oggolaanaya hal unug inuu u adeego 40 gigabits (waxay kuxirantahay waxa ka dhacaya khadadkan).

Halkaa, xitaa ka hor intaanan tagin, waxaan si sax ah u isticmaalnay isla nidaam isku mid ah sababtan awgeed: sababtoo ah waxay noo ogolaaneysaa inaan ilaalino goobta kaydka processor-ka oo si weyn loo yareeyo tirada furayaasha OS OS (taas oo sidoo kale waqti badan qaadanaysa). Waxaan ku celinayaa: tani waa habka ugu waxtarka badan ee loo isticmaalo birta.

Tusaalahan fudud ee 21-ka ah waa tusaale si fudud u sameeya echo-server. Fadlan ogow in shaqada adeeggu ay aad u fudud tahay, ay tahay mid toosan. Ma jiraan dib u soo celin, looma baahna in la dhibo oo la fekero... Kaliya wax akhri oo qor!

Isla mar ahaantaana, haddii aad wax akhrido oo aad qorto, waa in ay dhab ahaantii xannibtaa - goroutine-kan si fudud ayaa loo geliyaa saf waxaana qaadaya jadwaleeyaha marka fulinta ay suurtogal noqoto mar kale. Taasi waa, koodkan fudud wuxuu u dhaqmi karaa sidii server-ka echo ee isku xirnaanta badan ee OS-ka mashiinkaas ku jira.

Si dhakhso ah loo sii wado...

Xayeysiisyada qaar 🙂

Waad ku mahadsan tahay inaad nala joogto. Ma jeceshahay maqaalladayada? Ma doonaysaa inaad aragto wax badan oo xiiso leh? Nagu taageer adigoo dalbanaya amar ama kula talinaya asxaabta, Cloud VPS ee horumariyeyaasha laga bilaabo $ 4.99, analoog gaar ah oo ah server-yada heerka gelitaanka, kaas oo anaga aanu adiga kuu hindisay: Xaqiiqada oo dhan ee ku saabsan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps laga bilaabo $19 ama sida loo wadaago server? (waxaa laga heli karaa RAID1 iyo RAID10, ilaa 24 cores iyo ilaa 40GB DDR4).

Dell R730xd 2x ka jaban xarunta xogta Equinix Tier IV ee Amsterdam? Kaliya halkan 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV laga bilaabo $199 Nederlaan! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - laga bilaabo $99! Wax ka akhri Sida loo dhiso infrastructure Corp. fasalka iyadoo la adeegsanayo Dell R730xd E5-2650 v4 servers oo qiimahoodu yahay 9000 euro dinaar?

Source: www.habr.com

Add a comment