Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Alexey Naidenov, CEO ITooLabs, miresaka momba ny fampivoarana sehatra fifandraisan-davitra ho an'ny mpandraharahan'ny fifandraisandavitra amin'ny fiteny fandaharana Go (Golang). Alexey koa dia mizara ny traikefany amin'ny fametrahana sy fampandehanana ny sehatra amin'ny iray amin'ireo mpandraharaha lehibe indrindra amin'ny fifandraisan-davitra Aziatika, izay nampiasa ny sehatra hanomezana mailaka an-telefaona (VoiceMail) sy serivisy PBX Virtual (Cloud PBX).

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Alexey Naydenov (ankehitriny - AN): - Salama daholo! Alexey Naidenov no anarako. Izaho no talen'ny ITooLabs. Izaho aloha dia mba te hamaly izay ataoko eto sy ny niafarako teto.

Raha mijery ny tsenan'ny Bitrix24 ianao (fizarana "Telephony"), dia 14 ny fampiharana ary 36 izay misy (40%) no antsika:

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Ny marimarina kokoa, ireo no mpiara-miasa amintsika, fa ao ambadik'izany rehetra izany ny sehatra (Platform as a Service) - izay amidinay amin'izy ireo amin'ny ariary kely. Raha ny marina, te hiresaka momba ny fivoaran'ity sehatra ity sy ny fomba nahatongavantsika tao amin'ny Go aho.

Ny isa ho an'ny sehatra misy anay izao dia:

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Mpampiasa mpiara-miasa 44, anisan'izany ny MegaFon. Amin'ny ankapobeny, tianay ny mandeha amin'ny aventure, ary tena afaka mahazo mpanjifa 100 tapitrisa amin'ny mpandraharaha 44 eto Rosia izahay. Noho izany, raha misy olona manana hevitra momba ny raharaham-barotra, dia faly foana izahay mihaino azy.

  • Orinasa mpampiasa 5000.
  • Mpandray anjara 20 no fitambarany. B000b daholo izany - miaraka amin'ny orinasa ihany izahay.
  • Antso 300 isa-minitra mandritra ny andro.
  • 100 tapitrisa minitra antso tamin'ny taon-dasa (nankalazainay). Izany dia tsy misy fiheverana ny fifampiraharahana anatiny izay eo amin'ny lampihazo.

Ahoana no nanombohan'izany?

Ahoana no anombohan'ny lehilahy marina manao sehatra manokana? Tsy maintsy dinihintsika koa fa nanana tantaran'ny fivoaran'ny "orinasa matanjaka" isika, ary na dia amin'ny fotoana marina indrindra amin'ny taona aza ho an'ny orinasa iray! Izany no fotoana nahafaly rehefa tonga tany amin'ny mpanjifa ianao ary miteny hoe: "Mila mpizara roa izahay." Ary ny mpanjifa: "Eny, tsy misy fanontaniana! Manana folo izahay ao amin'ny rakotra.

Noho izany dia nanao Oracle, Java, WebSphere, Db2 sy izay rehetra izahay. Noho izany, noraisinay, mazava ho azy, ny vahaolana tsara indrindra amin'ny mpivarotra, nampitambatra azy ireo ary niezaka ny niala tamin'izany. Nilalao samirery izy ireo. Mety ho fanombohana anatiny izany.

Nanomboka ny taona 2009 izany. Nanomboka tamin'ny 2006, dia nandray anjara akaiky tamin'ny fanapahan-kevitry ny mpandraharaha izahay, na amin'ny fomba ahoana na amin'ny fomba ahoana. Nanao PBX virtoaly maromaro izahay (tahaka ny anananay amin'izao fotoana izao): nijery izahay, nanapa-kevitra fa tsara izany, ary nanapa-kevitra ny hanentana ny fanombohana anatiny.

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Raiso ny VMWare. Koa satria nandeha irery izahay, dia tsy maintsy nandao avy hatrany ilay mpivarotra mangatsiaka Storage. Fantatsika daholo ny momba azy ireo: ny fampanantenana dia tokony hozaraina amin'ny 3, ary ny vidiny dia tokony ampitomboina amin'ny 10. Noho izany, nanao DirDB izahay sy ny sisa.

Dia nanomboka nitombo. Nampiana ny tolotra faktiora, satria tsy nahazaka intsony ny sehatra. Avy eo dia nifindra tany Mongo ny mpizara faktiora avy amin'ny MySQL. Vokatr'izany dia nahazo vahaolana miasa izahay izay mikarakara ny antso rehetra mankany:

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Saingy any amin'ny toerana iray, ao anatiny, ny vokatra mpivarotra iray ihany no mihodina - ny tena nokleary, izay nalainay taloha. Teo amin'ny faran'ny taona 2011 teo ho eo, dia nahatsapa ho anay izahay fa ny tena zava-dehibe ho anay, mazava ho azy, dia ity vokatra manokana ity - hihazakazaka amin'izany isika. Nahita rindrina teo anoloanay izahay, izay nihazakazaka tamin'ny hazakazaka feno, rehefa nandeha ny mpanjifa, dia nampiana.
Noho izany dia tsy maintsy nanao zavatra izahay. Mazava ho azy fa nanao fikarohana be dia be momba ny vokatra isan-karazany izahay - na loharano misokatra na mpivarotra. Tsy hieritreritra an'izany aho izao - tsy izany no zava-dehibe. Ny fihemorana farany noeritreretinay dia ny fanaovana sehatra manokana.

Farany dia tonga tamin'io safidy io izahay. Nahoana? Satria ny mpivarotra rehetra sy ny vokatra open source dia natao hamahana olana 10 taona lasa izay. Eny ary, raha 10 taona, ary ny hafa! Nanjary niharihary ho anay ny safidy: na manao veloma ny hevitray tsara momba ny tolotra tsara indrindra izahay (ho an'ny mpiara-miombon'antoka, mpandraharaha ary ny tenanay), na manao zavatra ho anay manokana.

Nanapa-kevitra ny hanao zavatra hafa izahay!

Fepetra takiana amin'ny sehatra

Raha manao zavatra lava ianao (mitrandraka ny vokatry ny hafa) dia mipoitra tsikelikely ao an-tsainao ny eritreritra hoe: ahoana no hataoko? Satria isika rehetra dia programmer ao amin'ny orinasa (afa-tsy ho an'ny mpivarotra, tsy misy tsy programmer), ny fepetra takianay dia efa niforona hatry ny ela, ary mazava tsara:

  1. Hafainganam-pandrosoana avo. Ny vokatra avy amin'ny mpivarotra, izay nampijaly anay, dia tsy nety taminay tamin'ny voalohany satria nandeha elaela sy tsikelikely ny zava-drehetra. Naniry haingana izahay - nanana hevitra be dia be izahay! Mbola manana hevitra be dia be izahay, fa avy eo ny lisitry ny hevitra dia toa toy ny folo taona ho avy. Herintaona monja izao.
  2. Fampiasana ambony indrindra amin'ny vy multi-core. Zava-dehibe ho anay ihany koa izany, satria hitanay fa mbola hitombo hatrany ny cores.
  3. azo itokisana ambony. Ilay nitomany koa.
  4. Fandeferana avo lenta.
  5. Te-hiafara amin'ny fizotry ny famoahana isan'andro izahay. Mba hanaovana izany, dia nila ny safidy ny fiteny.

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Noho izany, avy amin'ny fepetra takiana amin'ny vokatra nasehonay ho anay, ny fepetra takiana amin'ny fiteny dia mitombo amin'ny fomba mirindra mazava tsara.

  1. Raha mila fanohanana ho an'ny rafitra multi-core isika dia mila fanohanana ho an'ny famonoana parallèle.
  2. Raha mila hafainganan'ny fampandrosoana isika dia mila fiteny iray manohana ny fampandrosoana mifaninana, fandaharana amin'ny fifaninanana. Raha misy olona tsy nahita ny fahasamihafana, dia tena tsotra:
    • Ny fandaharana parallèle dia momba ny fomba fiasan'ny kofehy roa samy hafa amin'ny cores samihafa;
    • ny famonoana miaraka, indrindra indrindra ny fanohanana concurrency, dia mikasika ny fomba anampian'ny fiteny (na ny fotoana fandehanana, na inona na inona) hanafina ny fahasarotana rehetra avy amin'ny famonoana mifanitsy.
  3. Filaminana avo. Mazava ho azy fa nila cluster izahay, ary tsara kokoa noho izay nanananay tamin'ny vokatra mpivarotra izany.

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Tsy nanana safidy maro izahay, raha tadidinao. Voalohany, Erlang - tianay sy fantatray, fa tiako manokana sy tiako manokana. Faharoa, Java dia tsy Java akory, fa Scala manokana. Fahatelo, ilay fiteny izay tsy haintsika mihitsy tamin’izany fotoana izany - Mandehana. Vao nipoitra avy eo, ny marimarina kokoa, efa nisy nandritra ny roa taona teo ho eo, saingy tsy mbola nivoaka.

Resy Go!

History of Go

Nanao sehatra teo amboniny izahay. Hiezaka aho hanazava ny antony.

Tantara fohy momba ny Go. Nanomboka tamin'ny 2007, nisokatra tamin'ny 2009, nivoaka tamin'ny 2012 ny dikan-teny voalohany (izany hoe nanomboka niasa izahay na dia talohan'ny famoahana voalohany aza). Google no nisantatra, izay te hanolo, araka ny ahiahiko, Java.

Tena malaza ny mpanoratra:

  • Ken Thomson, izay tao ambadiky ny Unix, dia namorona UTF-8, niasa tamin'ny rafitra Plan 9;
  • Rob Pike, izay nanamboatra UTF-8 niaraka tamin'i Ken, dia niasa tamin'ny Plan 9, Inferno, Limbo ao amin'ny Bell Labs;
  • Robert Gizmer, izay fantatsika sy tianay tamin'ny famoronana ny Java HotSpot Compiler sy ny niasa tamin'ny mpamokatra ao amin'ny V8 (mpandika ny Javascript an'ny Google);
  • Ary mpandray anjara maherin'ny 700, anisan'izany ny paty sasany.

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Mandehana indray mandeha

Hitantsika fa tsotra sy azo takarina ilay fiteny. Manana karazany mazava isika: amin'ny toe-javatra sasany dia mila ambara izy ireo, amin'ny hafa tsy manao izany (midika izany fa ny karazany dia notsoahina ihany).

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Hita fa lamaody ny mamaritra ny rafitra. Hita fa manana ny foto-kevitry ny pointer isika (izay misy ny asterisk). Hita fa misy fanohanana manokana amin'ny fanambarana fanombohana ny arrays sy ny arrays associative.

Mazava ho azy - afaka miaina ianao. Miezaka manoratra Hello, world:

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Inona no hitantsika? Ity dia syntax mitovy amin'ny C, tsy voatery ny semicolon. Mety ho separator ho an'ny andalana roa izy io, fa raha ireo dia fananganana roa izay mifanitsy amin'ny andalana iray ihany.

Hitantsika fa ny brackets ao amin'ny rafitra fanaraha-maso (amin'ny andalana faha-14) dia azo atao, fa ny olioly dia ilaina foana. Hitantsika fa static ny fanoratana. Ny Tim amin'ny ankamaroan'ny tranga dia aseho. Ity ohatra ity dia somary sarotra kokoa noho ny mahazatra Hello, world - mba hampisehoana fotsiny fa misy tranomboky.

Inona koa no hitantsika fa zava-dehibe? Ny kaody dia nalamina ho fonosana. Ary raha te hampiasa ilay fonosana amin'ny codeo manokana ianao dia mila manafatra azy amin'ny alàlan'ny torolàlana fanafarana - zava-dehibe ihany koa izany. Manomboka isika - miasa izany. Mahafinaritra!

Andeha isika hanandrana zavatra sarotra kokoa: Miarahaba, izao tontolo izao, fa izao dia mpizara http. Inona no hitantsika mahaliana eto?

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Voalohany, ny asa dia miasa ho toy ny parameter. Midika izany fa ny asa ananantsika dia "olom-pirenena kilasy voalohany" ary afaka manao zavatra mahaliana maro ianao miaraka amin'izany amin'ny fomba fiasa. Hitantsika ny tsy ampoizina manaraka: ny torolàlana fanafarana dia manondro mivantana ny tahiry GitHub. Marina izany, izany no izy - ankoatra izany, izany no tokony hatao.

Ao amin'ny Go, ny identifier an'ny fonosana iray dia ny url-n'ny fitahirizana azy. Misy fitaovana Goget manokana izay mandeha ho an'ny miankina rehetra, misintona azy ireo, mametraka azy ireo, manangona azy ireo ary manomana azy ireo hampiasaina raha ilaina. Mandritra izany fotoana izany, Goget dia mahafantatra momba ny html-meta. Noho izany, azonao atao ny mitazona lahatahiry http, izay ahitana rohy mankany amin'ny tahiry manokana (araka ny ataontsika, ohatra).

Inona koa no hitantsika? Http sy Json ao amin'ny tranomboky mahazatra. Misy, mazava ho azy, ny introspection - fisaintsainana, izay tokony ampiasaina amin'ny encoding / json, satria solointsika fotsiny ny zavatra tsy misy dikany.

Mihazakazaka izany izahay ary mahita fa manana tsipika 20 misy kaody mahasoa izay manangona, mihazakazaka ary manome ny enta-mavesatra amin'izao fotoana izao amin'ny milina (eo amin'ny milina izay iasany).
Inona koa no zava-dehibe amin’izay hitantsika avy hatrany eto? Mitambatra ho binary static iray (buinary). Tsy misy fiankinan-doha mihitsy ity binary ity, tsy misy tranomboky! Azo adika amin'ny rafitra rehetra izy io, mihazakazaka avy hatrany, ary hahomby.

Mandrosoa.

Mandehana: fomba sy interface

Go dia manana fomba. Azonao atao ny manambara fomba iray ho an'ny karazana fanao rehetra. Ankoatra izany, tsy voatery ho rafitra izany, fa mety ho solon'anarana amin'ny karazana sasany. Azonao atao ny manambara alias ho an'ny N32 ary manoratra fomba hanaovana zavatra mahasoa.

Ary teo no sambany nianjera tamin'ny donto ... Hita fa tsy manana kilasy toy izany i Go. Ireo izay mahafantatra an'i Go dia mety hilaza fa misy karazana fampidirana, saingy hafa tanteraka izany. Arakaraky ny tsy hiheveran'ny mpamorona azy ho toy ny lova no tsara kokoa. Tsy misy kilasy ao amin'ny Go, ary tsy misy lova koa.

Fanontaniana! Inona no nomen'ny orinasa mpanoratra notarihin'i Google antsika mba hanehoana ny fahasarotan'izao tontolo izao? Nomena interface tsara izahay!

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

Ny interface dia karazana manokana izay ahafahanao manoratra fomba tsotra, sonia fomba. Fanampin'izay, ny karazana misy an'ireo fomba ireo (dia tanterahina) dia hifanaraka amin'ity interface ity. Midika izany fa azonao atao ny manoratra tsotra izao ny fiasa mifanaraka amin'ny karazana iray, ho an'ny iray hafa (izay mifanaraka amin'io karazana interface io). Manaraka, manambara fari-pitsipika amin'ny karazana an'ity interface ity ary omeo azy ny iray amin'ireo zavatra ireo.

Ho an'ireo mpankafy hardcore dia afaka milaza aho fa ity fari-piainana ity dia misy tondro roa: ny iray ho an'ny data, ny iray ho an'ny latabatra descriptor manokana izay manokana amin'ity karazana manokana ity, ho an'ny interface an'ity karazana ity. Izany hoe, ny compiler dia manao tabilao misy famaritana toy izany amin'ny fotoana mampifandray.

Ary mazava ho azy, misy tondro ho foana ao amin'ny Go. Ny teny hoe interface {} (miaraka amin'ny braces olioly roa) dia fari-pitsipika ahafahanao manondro zavatra rehetra amin'ny ankapobeny.
Hatreto, milamina ny zava-drehetra, efa mahazatra ny zava-drehetra. Tsy misy mahagaga.

Mandehana: goroutines

Tonga amin'ny zavatra mahaliana antsika isika izao: dingana maivana - goroutine (goroutine) amin'ny teny Go.

Alexey Naidenov. ITooLabs. Raharaha fampandrosoana amin'ny sehatra finday Go (Golang). Fizarana 1

  1. Voalohany, tena maivana izy ireo (latsaky ny 2 Kb).
  2. Faharoa, ny vidin'ny famoronana goroutine toy izany dia tsinontsinona: afaka mamorona arivo isan-tsegondra ianao - tsy hisy na inona na inona hitranga.
  3. Izy ireo dia omen'ny fandaharam-potoanany manokana, izay mamindra fotsiny ny fanaraha-maso avy amin'ny goroutine iray mankany amin'ny iray hafa.
  4. Amin'ity tranga ity, ny fanaraha-maso dia afindra amin'ireto tranga manaraka ireto:
    • raha misy fanambarana mandeha (raha manomboka ny goroutine manaraka ny goroutine);
    • raha alefa ny antso Input/Out manakana;
    • raha mipoitra ny fanangonana fako;
    • raha atomboka ny fandidiana sasany misy fantsona.

Izany hoe, isaky ny mandeha amin'ny ordinatera ny programa Go, dia mahita ny isan'ny cores ao amin'ny rafitra izy, manomboka kofehy maro araka izay ilaina (firy ny cores ao amin'ny rafitra, na firy no nolazainao azy). Arak'izany, ny mpandrindra dia hampandeha ireo kofehy famonoana maivana ireo amin'ireo kofehy rafitra miasa ao amin'ny fototra tsirairay.

Tsara homarihina fa io no fomba mahomby indrindra amin'ny fampiasana vy. Ankoatra izay nasehonay dia manao zavatra betsaka kokoa izahay. Manao rafitra DPI izahay, ohatra, izay mamela ny 40 gigabits amin'ny vondrona iray (miankina amin'ny zava-mitranga amin'ireo andalana ireo).

Teo, na dia talohan'ny Mandeha aza, dia nampiasa tetika mitovy amin'izany izahay noho io antony io: satria mamela anao hamonjy ny toerana misy ny cache processeur, mampihena be ny isan'ny switch context OS (izay mitaky fotoana lava be). Averiko indray: ity no fomba mahomby indrindra amin'ny fampiasana vy.

Ity ohatra tsotra 21 andalana ity dia ohatra iray manao echo-server. Ankoatra izany, mariho fa ny asa fanompoana dia tena tsotra, dia linear. Tsy misy antso an-tariby, tsy mila manahirana sy mieritreritra... Mamaky sy manoratra fotsiny ianao!

Amin'izay fotoana izay ihany koa, raha mamaky sy manoratra ianao dia tokony ho sakanana tokoa - ity goroutine ity dia milahatra fotsiny ary alain'ny mpandrindra rehefa azo atao indray ny famonoana. Izany hoe, ity kaody tsotra ity dia afaka miasa ho toy ny mpizara echo ho an'ny fifandraisana maro araka izay avelan'ny OS amin'ity milina ity.

Hitohy tsy ho ela...

Ny doka sasany 🙂

Misaotra anao nijanona niaraka taminay. Tianao ve ny lahatsoratray? Te-hahita votoaty mahaliana kokoa? Tohano izahay amin'ny fametrahana baiko na fanolorana amin'ny namana, cloud VPS ho an'ny mpamorona manomboka amin'ny $4.99, analogue tsy manam-paharoa amin'ny mpizara ambaratonga fidirana, izay noforoninay ho anao: Ny marina rehetra momba ny VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps avy amin'ny $19 na ahoana no hizarana mpizara? (misy miaraka amin'ny RAID1 sy RAID10, hatramin'ny 24 cores ary hatramin'ny 40GB DDR4).

Dell R730xd 2x mora kokoa amin'ny foibe data Equinix Tier IV any Amsterdam? Eto ihany 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV manomboka amin'ny $199 any Holandy! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - manomboka amin'ny $99! Vakio ny momba ny Ahoana ny fananganana infrastructure corp. kilasy amin'ny fampiasana mpizara Dell R730xd E5-2650 v4 mitentina 9000 euros amin'ny denaria iray?

Source: www.habr.com

Add a comment