Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Alexey Naidenov, CEO Zithunzi za ITooLabs, ikukamba za chitukuko cha njira yolumikizirana ndi anthu ogwira ntchito pa telecom mu chinenero cha pulogalamu Go (Golang). Alexey amagawananso zomwe adakumana nazo potumiza ndikugwiritsa ntchito nsanja mu imodzi mwama telecom akuluakulu aku Asia, omwe adagwiritsa ntchito nsanja kuti apereke mauthenga amawu (VoiceMail) ndi Virtual PBX (Cloud PBX).

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Alexey Naydenov (pano - AN): - Moni nonse! Dzina langa ndine Alexey Naidenov. Ndine wotsogolera wa ITooLabs. Choyamba, ndikufuna kuyankha zomwe ndikuchita pano komanso momwe ndafikira pano.

Ngati muyang'ana pa Bitrix24 Marketplace (gawo "Telephony"), ndiye kuti mapulogalamu 14 ndi 36 omwe alipo (40%) ndife:

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Zowonjezereka, awa ndi ogwira nawo ntchito, koma kumbuyo kwa zonsezi ndi nsanja yathu (Platform as Service) - zomwe timagulitsa kwa iwo ndi kakobiri kakang'ono. Kwenikweni, ndikufuna kunena za chitukuko cha nsanjayi ndi momwe tinafikira ku Go.

Nambala za nsanja yathu pano ndi:

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Othandizira 44, kuphatikiza MegaFon. Nthawi zambiri, timakonda kupita kukacheza, ndipo timatha kupeza olembetsa 100 miliyoni a ogwira ntchito 44 kuno ku Russia. Chifukwa chake, ngati wina ali ndi malingaliro abizinesi, timakhala okondwa kumvetsera kwa iwo.

  • Makampani 5000 ogwiritsa ntchito.
  • 20 olembetsa onse. Zonse ndi b000b - timangogwira ntchito ndi makampani.
  • Mafoni 300 pamphindi masana.
  • 100 miliyoni kuyimba mphindi chaka chatha (tinakondwerera). Izi ndizosaganizira zokambirana zamkati zomwe zili papulatifomu yathu.

Zinayamba bwanji?

Kodi abwenzi abwino amayamba bwanji kupanga nsanja yawo? Tiyeneranso kukumbukira kuti tinali ndi mbiri yachitukuko cha "hardcore enterprise", komanso ngakhale nthawi yolondola kwambiri pachaka kwa bizinesi! Inali nthawi yosangalatsa ija mukabwera kwa kasitomala ndikuti: "Tikufuna ma seva angapo." Ndipo kasitomala: "Inde, palibe funso! Tili ndi khumi muchoyikamo.

Chifukwa chake tidachita Oracle, Java, WebSphere, Db2 ndi zonsezo. Choncho, tinatenga, ndithudi, njira zabwino kwambiri zogulitsira malonda, tinaziphatikiza ndikuyesera kuzichotsa nazo. Anasewera okha. Kungakhale kuyambika kwamkati koteroko.

Zonse zidayamba mu 2009. Kuyambira 2006, takhala tikutenga nawo mbali pazosankha za ogwiritsa ntchito mwanjira ina. Tidapanga ma PBX angapo (monga zomwe tili nazo tsopano): tidayang'ana, tidaganiza kuti zinali zabwino, ndipo tidaganiza zoyambitsa kuyambitsanso mkati.

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Tengani VMWare. Popeza tinali kuyenda tokha, tinayenera kusiya nthawi yomweyo Kusungirako kozizira kogulitsa. Timadziwa zonse za iwo: kuti malonjezo ayenera kugawidwa ndi 3, ndipo mtengo uyenera kuchulukitsidwa ndi 10. Choncho, tinachita DirDB ndi zina zotero.

Kenako idayamba kukula. Ntchito yolipirira idawonjezedwa ku izi, chifukwa nsanja sinathenso kupirira. Kenako seva yolipira kuchokera ku MySQL idasamukira ku Mongo. Zotsatira zake, tili ndi yankho logwira ntchito lomwe limayendetsa mafoni onse omwe amapita pamenepo:

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Koma penapake, mkatimo, malonda omwewo akuzungulira - chachikulu, nyukiliya, yomwe tidatengapo kale. Pafupifupi kumapeto kwa 2011, tidazindikira tokha kuti cholepheretsa chachikulu kwa ife, ndithudi, chidzakhala ichi - tidzathamangiramo. Tinawona khoma kutsogolo kwathu, momwe tinathamangira mothamanga kwambiri, pamene makasitomala akuyenda, adawonjezedwa.
Motero, tinayenera kuchitapo kanthu. Zachidziwikire, tidachita kafukufuku wambiri pazinthu zosiyanasiyana - zonse zotseguka komanso zamalonda. Sindikhala pa izi tsopano - iyi si mfundo yake. Kubwerera komaliza komwe timaganizira kunali kupanga nsanja yathu.

Pamapeto pake, tinafika pa chisankho ichi. Chifukwa chiyani? Chifukwa malonda onse ogulitsa ndi otseguka adapangidwa kuti athetse mavuto zaka 10 zapitazo. Chabwino, ngati mwana wazaka 10, ndi zina zambiri! Chisankho chakhala chodziwikiratu kwa ife: mwina tingatsanzikane ndi lingaliro lathu labwino la ntchito yabwino (kwa othandizana nawo, ogwira nawo ntchito ndi ife eni), kapena tichita zathu tokha.

Tinaganiza zochita zosiyana!

Zofunikira pa nsanja

Ngati muchita zinazake kwa nthawi yayitali (mumadyera masuku pamutu mankhwala a munthu wina), ndiye kuti pang'onopang'ono malingaliro amapangidwa m'mutu mwanu: ndingachite bwanji ndekha? Popeza tonse ndife opanga mapulogalamu mu kampani (kupatula ogulitsa, palibe osapanga mapulogalamu), zofunikira zathu zidapangidwa kwa nthawi yayitali, ndipo zinali zomveka:

  1. Kuthamanga kwakukulu kwachitukuko. Zogulitsa za ogulitsa, zomwe zimatizunza, sizinali zoyenera kwa ife poyamba chifukwa zonse zidayenda kwa nthawi yayitali komanso pang'onopang'ono. Tinkafuna mofulumira - tinali ndi malingaliro ambiri! Tili ndi malingaliro ambiri, koma ndiye mndandanda wa malingaliro unali wotero moti zinkawoneka ngati zaka khumi kutsogolo. Tsopano kwa chaka chimodzi chokha.
  2. Kugwiritsa ntchito kwambiri chitsulo chamitundu yambiri. Izi zinalinso zofunika kwa ife, chifukwa tinawona kuti padzakhala ma cores ochulukirapo.
  3. Kudalirika kwakukulu. Uyonso tinalira.
  4. Kulekerera kwakukulu kolakwa.
  5. Tinkafuna kutha ndi ndondomeko yomasulidwa tsiku ndi tsiku. Kuti tichite zimenezi, tinkafunika kusankha chinenero.

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Mogwirizana ndi izi, kuchokera ku zofunikira za mankhwala omwe tadziwonetsera tokha, zofunikira za chinenero zimakula momveka bwino.

  1. Ngati tikufuna kuthandizira machitidwe amitundu yambiri, ndiye kuti timafunikira thandizo la kuphedwa kofanana.
  2. Ngati tikufuna liwiro lachitukuko, timafunikira chilankhulo chomwe chimathandizira chitukuko champikisano, mapulogalamu opikisana. Ngati wina sanakumanepo ndi kusiyanako, ndiye kuti ndizosavuta:
    • mapulogalamu ofanana ndi momwe maulusi awiri osiyana amayendera pamagulu osiyanasiyana;
    • kuphedwa nthawi imodzi, makamaka kuthandizira kogwirizana, ndi momwe chilankhulo (kapena nthawi yothamanga, chilichonse) chimathandizira kubisa zovuta zonse zomwe zimachokera ku kuphatikizika kofanana.
  3. Kukhazikika kwakukulu. Mwachiwonekere, timafunikira gulu, ndipo zinali bwino kuposa zomwe tinali nazo pazogulitsa zamalonda.

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Tidalibe njira zambiri, ngati mukukumbukira. Choyamba, Erlang - timachikonda ndipo timachidziwa, chinali changa, chomwe ndimakonda. Kachiwiri, Java si Java, koma makamaka Scala. Chachitatu, chilankhulo chomwe sitinkachidziwa nthawi imeneyo - Pitani. Iyo inali itangowonekera nthawiyo, ndendende, inalipo kale kwa zaka ziwiri, koma inali isanatulutsidwe.

Wagonja Go!

Mbiri ya Go

Tinapanga nsanja pamenepo. Ndiyesera kufotokoza chifukwa chake.

Mbiri Yachidule ya Go. Inayamba mu 2007, inatsegulidwa mu 2009, Baibulo loyamba linatulutsidwa mu 2012 (ndiko kuti, tinayamba kugwira ntchito ngakhale tisanayambe kumasulidwa). Woyambitsa anali Google, yomwe inkafuna kusintha, monga ndikukayikira, Java.

Olembawo ndi otchuka kwambiri:

  • Ken Thomson, yemwe anali kumbuyo kwa Unix, adayambitsa UTF-8, adagwira ntchito pa dongosolo la Plan 9;
  • Rob Pike, yemwe adapanga UTF-8 ndi Ken, adagwiranso ntchito pa Plan 9, Inferno, Limbo ku Bell Labs;
  • Robert Gizmer, yemwe timamudziwa ndi kumukonda popanga Java HotSpot Compiler ndikugwira ntchito pa jenereta mu V8 (Womasulira Javascript wa Google);
  • Ndipo opereka oposa 700, kuphatikiza zina mwamagawo athu.

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Pitani pang'onopang'ono

Timaona kuti chinenerocho n’chosavuta komanso chomveka. Tili ndi mitundu yodziwikiratu: nthawi zina imafunikira kulengezedwa, mwa ina alibe (kutanthauza kuti mitunduyo ndi yotsimikizika).

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Zitha kuwoneka kuti ndizowoneka bwino kufotokozera zomangamanga. Zitha kuwoneka kuti tili ndi lingaliro la cholozera (kumene nyenyezi ili). Zitha kuwoneka kuti pali chithandizo chapadera pakulengeza kuyambika kwa masanjidwe ndi ma associative arrays.

Zomveka bwino - mutha kukhala ndi moyo. Ndikuyesera kulemba Hello, dziko:

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Kodi tikuwona chiyani? Iyi ndi syntax ngati C, semicolon ndiyosankha. Itha kukhala yolekanitsa mizere iwiri, koma ngati izi zili zomanga ziwiri zomwe zili pamzere womwewo.

Timawona kuti mabatani muzinthu zowongolera (pa mzere wa 14) ndizosankha, koma zopindika nthawi zonse zimafunikira. Tikuwona kuti kulemba ndi static. Nthawi zambiri Tim amawonetsedwa. Chitsanzochi ndi chovuta pang'ono kuposa momwe timakhalira Moni, dziko - kungowonetsa kuti pali laibulale.

Ndi chiyani chinanso chomwe tikuwona chofunikira? Khodiyo imapangidwa kukhala mapaketi. Ndipo kuti mugwiritse ntchito phukusili mu code yanu, muyenera kuitanitsa pogwiritsa ntchito lamulo lolowera kunja - izi ndizofunikira. Timayamba - zimagwira ntchito. Zabwino!

Tiyeni tiyese china chovuta kwambiri: Moni, dziko, koma tsopano ndi seva ya http. Kodi tikuwona chiyani chosangalatsa apa?

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Choyamba, ntchitoyi imagwira ntchito ngati parameter. Izi zikutanthauza kuti ntchito yomwe tili nayo ndi "nzika yoyamba" ndipo mukhoza kuchita zinthu zambiri zosangalatsa ndi kalembedwe ka ntchito. Tikuwona zosayembekezereka zotsatirazi: malangizo olowera amalozera mwachindunji kunkhokwe ya GitHub. Ndiko kulondola, ndi momwe zimakhalira - komanso, ndi momwe ziyenera kuchitikira.

Mu Go, chizindikiritso chonse cha phukusi ndi ulalo wa nkhokwe yake. Pali chida chapadera cha Goget chomwe chimapita pazodalira zonse, kuzitsitsa, kuziyika, kuzipanga, ndikuzikonzekera kuti zigwiritsidwe ntchito ngati kuli kofunikira. Nthawi yomweyo, Goget amadziwa za html-meta. Chifukwa chake, mutha kusunga chikwatu cha http, chomwe chizikhala ndi maulalo ku malo anu enieni (monga ife, mwachitsanzo, timachitira).

Kodi tikuwonanso chiyani? Http ndi Json mu laibulale yokhazikika. Pali, mwachiwonekere, kuwunikira - kuwonetsera, komwe kuyenera kugwiritsidwa ntchito polemba / json, chifukwa timangolowetsa chinthu china chosasinthika.

Timayendetsa ndikuwona kuti tili ndi mizere 20 yamakhodi othandiza omwe amaphatikiza, kuthamanga ndikupereka kuchuluka kwapakati pamakina (pamakina omwe akuyenda).
Ndi chiyani chinanso chomwe chili chofunikira pa zomwe tikuwona pano nthawi yomweyo? Imapangidwa kukhala binary imodzi (buinary). Binary iyi ilibe zodalira konse, palibe malaibulale! Ikhoza kukopera ku dongosolo lililonse, kuthamanga nthawi yomweyo, ndipo idzagwira ntchito.

Timasunthira patsogolo.

Pitani: njira ndi mawonekedwe

Gome ili ndi njira. Mukhoza kulengeza njira yamtundu uliwonse wamtundu. Kuphatikiza apo, izi sizongopanga zokha, koma zitha kukhala dzina la mtundu wina. Mutha kulengeza dzina la N32 ndikulemba njira zochitira zinthu zothandiza.

Ndipo apa ndipamene timagwa mkamwa kwa nthawi yoyamba ... Zinapezeka kuti Go alibe makalasi otero. Omwe akudziwa Go anganene kuti pali kuphatikizidwa kwamtundu, koma izi ndizosiyana kwambiri. Wopangayo akasiya kuganiza kuti ndi cholowa, zimakhala bwino. Palibe makalasi mu Go, ndipo mulibenso cholowa.

Funso! Kodi kampani ya olemba motsogozedwa ndi Google idatipatsa chiyani kuti tiwonetse zovuta zapadziko lapansi? Tapatsidwa ma interfaces!

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

Mawonekedwe ndi mtundu wapadera womwe umakulolani kuti mulembe njira zosavuta, ma signature a njira. Komanso, mtundu uliwonse umene njirazi zilipo (zikuchitidwa) zidzagwirizana ndi mawonekedwe awa. Izi zikutanthauza kuti mutha kungolemba ntchito yofananira ya mtundu wina, wamtundu wina (womwe umagwirizana ndi mawonekedwe amtunduwu). Kenako, lengezani kusinthika kwa mtundu wa mawonekedwe awa ndikugawira chilichonse mwazinthu izi.

Kwa mafani a hardcore, ndinganene kuti kusinthaku kudzakhala ndi zolozera ziwiri: imodzi ku data, ina ku tebulo lapadera lofotokozera lomwe liri la mtundu uwu, ku mawonekedwe amtunduwu. Ndiko kuti, wophatikiza amapanga matebulo oterowo pa nthawi yolumikizira.

Ndipo pali, zowona, zolozera kuti muthe mu Go. Mawu oti mawonekedwe {} (okhala ndi zingwe ziwiri zopotana) ndikusintha komwe kumakupatsani mwayi woloza chinthu chilichonse mwanjira iliyonse.
Mpaka pano, zonse zili mu dongosolo, zonse ndizodziwika bwino. Palibe chodabwitsa.

Pitani: goroutines

Tsopano tabwera ku zomwe tikufuna: njira zopepuka - ma goroutines (goroutines) mu terminology ya Go.

Alexey Naidenov. Zithunzi za ITooLabs. Nkhani yachitukuko pa nsanja ya foni ya Go (Golang). Gawo 1

  1. Choyamba, ndi opepuka kwenikweni (osakwana 2 KB).
  2. Kachiwiri, mtengo wopanga goroutine wotere ndi wocheperako: mutha kupanga chikwi chimodzi pamphindikati - palibe chomwe chingachitike.
  3. Amatumikiridwa ndi omwe amawakonzera okha, omwe amangosintha kuwongolera kuchokera ku goroutine kupita ku ina.
  4. Pankhaniyi, ulamuliro umasamutsidwa muzochitika izi:
    • ngati chiganizo chopita chikapezeka (ngati goroutine ikuyamba njira yotsatira);
    • ngati kuyimba kwa Input/Out kutsekeredwa;
    • ngati kusonkhanitsa zinyalala kuyambika;
    • ngati ntchito ina ndi ma tchanelo iyambika.

Ndiye kuti, nthawi iliyonse pulogalamu ya Go ikayendetsedwa pakompyuta, imazindikira kuchuluka kwa ma cores mu dongosolo, imayamba ulusi wochuluka momwe ingafunikire (ndi ma cores angati mu dongosolo, kapena angati mudawawuza). Chifukwa chake, wopanga mapulogalamuwa adzayendetsa ulusi wopepuka uwu pazingwe zonse zamakina ogwiritsira ntchito pachimake chilichonse.

Ndikoyenera kudziwa kuti iyi ndiyo njira yabwino kwambiri yogwiritsira ntchito chitsulo. Kuphatikiza pa zomwe tawonetsa, timachita zambiri. Timapanga, mwachitsanzo, machitidwe a DPI omwe amalola kutumikira gigabits 40 mu unit imodzi (malingana ndi zomwe zimachitika m'mizere iyi).

Kumeneko, ngakhale Tisanayambe, tidagwiritsa ntchito ndondomeko yomweyo pazifukwa zomwezi: chifukwa zimakupatsani mwayi wopulumutsa malo osungira pulosesa, kuchepetsa kwambiri chiwerengero cha kusintha kwa OS (komwe kumatenganso nthawi yaitali). Ndikubwerezanso: iyi ndi njira yabwino kwambiri yogwiritsira ntchito chitsulo.

Chitsanzo chosavuta cha mzere wa 21 ndi chitsanzo chomwe chimangopanga echo-server. Nthawi yomweyo, dziwani kuti ntchito ya seva ndiyosavuta kwambiri, ndiyofanana. Palibe ma callbacks, palibe chifukwa chovutitsa ndi kuganiza ... Mukungowerenga ndikulemba!

Nthawi yomweyo, ngati muwerenga ndi kulemba, iyenera kuletsa - goroutine iyi imangokhala pamzere ndikutengedwa ndi wokonza mapulani pomwe kuphedwa kuthekanso. Ndiye kuti, code yosavutayi imatha kukhala ngati seva ya echo pamalumikizidwe ambiri momwe OS pamakina angalolere.

Ipitirizidwa posachedwa kwambiri...

Zotsatsa zina πŸ™‚

Zikomo chifukwa chokhala nafe. Kodi mumakonda zolemba zathu? Mukufuna kuwona zambiri zosangalatsa? Tithandizeni potipatsa oda kapena kulimbikitsa anzathu, mtambo VPS kwa opanga kuchokera ku $ 4.99, ma analogi apadera a ma seva olowera, omwe adakupangirani inu: Chowonadi chonse chokhudza VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kuchokera $19 kapena momwe mungagawire seva? (ikupezeka ndi RAID1 ndi RAID10, mpaka 24 cores mpaka 40GB DDR4).

Dell R730xd 2x yotsika mtengo ku Equinix Tier IV data center ku Amsterdam? Pokhapokha 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kuchokera $199 ku Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kuchokera $99! Werengani za Momwe mungamangire Infrastructure Corp. kalasi pogwiritsa ntchito ma seva a Dell R730xd E5-2650 v4 ofunika ma euro 9000 pa khobiri?

Source: www.habr.com

Kuwonjezera ndemanga