Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Alexey Naydenov, CEO ITooLabsloquitur de progressu telecommunicationum suggestuum pro operariorum telecomium in Go (Golang) lingua programmandi. Alexey etiam experientiam suam communicat in explicandis et operandis suggestu in uno ex maximis operariorum telecom Asianorum, quae suggestum ad operas mail voce adhibita (VoiceMail) et Virtualis PBX (Cloud PBX).

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Alexey Naydenov (infra – AN); - Hi omnes! Nomen mihi est Alexey Naydenov. Ego ITooLabs moderator. Ante omnia respondere velim quod hic agimus et quomodo hic finierim.

Si Fori Bitrix24 spectas (sectionem "Telephonia"), tunc 14 applicationes et 36 quae ibi (40%) nos sunt:

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Accuratius, hi sunt socii nostri operator, sed post omnia haec suggestum est nostrum (Platform as servitii) - quod illis pro parvo denario vendimus. Profecto loqui de hoc suggestu evolutionis velim et quomodo venimus ad Ire.

Numeri nostri tribunal nunc:

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

44 operator sociis, inter Megafon. Generaliter vere amo nos ire in varios casus, et actualem accessum habemus ad centum milia signatorum 100 operariorum hic in Russia. Si quis igitur in aliqua re notiones habet, eas semper libenter audiemus.

  • (V) societates user.
  • 20 signatores in summa. Haec omnia b000b - cum societatibus tantum laboramus.
  • Per minutis interdiu vocat CCC.
  • 100 miliones minutissimorum anni proxime vocantes (celebravimus). Hoc non habet rationem tractatus interni qui in nostro suggestu praesto sunt.

Quomodo incipit?

Quomodo ius dudes etiam suggestum facere committitur? Etiam ratio habenda est nobis historiam "incepti Hardcore" evolutionis habere, et quidem exactissimo tempore anni ad negotium! Laetum illud tempus erat quo ad emptorem veneris ac dices: "Nobis duobus pluribus servientibus opus est." Lorem ac: β€œNulla quaestio! Habemus decem in eculeo.'

Ita fecimus Oraculum, Java, WebSphere, Db2 et omnia supellectilia. Itaque solutiones venditoris optimas sane cepimus, easque integravimus et cum ea auferre conati sunt. in nostro ambulavimus. Hoc initium tale esset.

Haec omnia in MMIX actu inceperunt. Ab anno 2009, in solutionibus operantium arcte implicati sumus, uno modo vel alio. Morem virtualem PBXs aliquot fecimus (sicut in ordine nunc habemus): eam inspeximus, decrevimus bonum esse, et initium interni constituimus incipere.

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

VMWare cepimus. Cum in nostro essemus, venditorem venditorem statim relinquere debebamus. Omnia de illis novimus: quod promissiones dividi debent per 3, et multiplicari sumptus oportet 10. Ideo fecerunt DirDB et cetera.

Tunc crescere incepit. Exosculatio huic ministerio addita est quod suggestum diutius obire non posset. Tunc servo exosculatio ab MySQL Mongo movetur. Quam ob rem solutionem laborantem cepimus, qui processus vocat omnes qui illuc vadunt;

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Alicubi autem, intus, ipse idem venditor productum nere - principale, unum nuclei, quod semel cepimus. Circa finem MMXI, summam bottleneck pro nobis intelleximus, utique hoc productum esset - in illud curreremus. Murum ante nos vidimus, in quem admisso more clientes veniebant.
Itaque opus est ad aliquid faciendum. Utique satis multam investigationem de variis fructibus gessimus, tam aperto fonte quam venditore. Hoc nunc non moror - id non est quod loquimur. Novissima errorum optio censebamus nostrum suggestum facere.

Denique ad hanc optionem venimus. Quare? Quia omnes venditores et fontes aperti effecti factae sunt ad solvendas difficultates quae erant 10 annorum. Bene, si 10 annos natus, et quidam plus! Electio nobis manifesta facta est: vel vale dicimus cum magna idea optimi servitii (pro sociis, operariis et nobis), vel aliquid de nostro facimus.

Aliquid de nostro facere decrevimus!

Rostra requisita

Si diutius aliquid egisti (utens aliquo alio productum), tunc cogitatio tarde format in capite tuo: quomodo ego hoc facerem? Cum omnes programmatores in comitatu sumus (praeter salespopulos, non sunt programmatores non sunt), requisita nostra olim evoluta sunt, et manifesta fuerunt;

  1. Altitudo celeritatis. Venditor productum quod nos torquebat non satisfacit, primum, quod omnia longa et tarde evaserunt. Hoc celeriter voluimus - multum ideas habuimus! Adhuc multa notiones habemus, sed tunc index idearum talis erat ut ante decem annos videretur. Nunc tantum anno.
  2. Maximum usum multi-core ferrei. Hoc etiam nobis magnum fuit, cum videremus modo plus ac plures choros fore.
  3. Princeps commendatio. Aliquid etiam cum clamamus.
  4. Repugnantia defectibus.
  5. Voluimus finire cum processu diurnorum diurnorum. Ad hoc opus est sermone electionis.

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Itaque, ex requisitis ad opus quod nobis destinavimus, linguae postulata ratione plane logica augentur.

  1. Si subsidia multi-corei systemata volumus, auxilio ad executionem parallelam indigemus.
  2. Si celeritas progressionis indigemus, lingua opus est quae progressionem competitive sustinet, programmatum competitive. Si quis differentiam non offendit, valde simplex est;
    • programmatio parallela est quomodo duo diversa fila in diversis nucleis efficiuntur;
    • Concursus exsecutio, vel pressius, concursus subsidii, est quomodo lingua (vel runtime non refert) adiuvat celare omnem multiplicitatem quae ex parallela executione provenit.
  3. Alta stabilitas. Uti patet, botro opus erat, et meliori quam in venditore facto.

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Non multum bene habemus, si meministis. Uno modo, Erlang - amamus et cognoscimus, fuit meus personalis, personalis ventus. Secundo, Java ne quidem Java, sed in specie Scala est. Tertio linguam quam tunc omnino nesciebamus β€” Ite. Iam tum apparuerat, vel potius iam biennium erat, sed nondum dimissum erat.

Ite vicit!

Historia Go

Praesent efficitur diam in dictum dictum. Experiar cur.

Brevis Historia Go. Incepit anno 2007, anno 2009 aperuit, prima versio anno 2012 dimissa est (hoc est, ante primam emissionem laborasse coepimus). Google initiator erat, qui reponere, ut suspicor, Java voluit.

Auctores clarissimi sunt;

  • Ken Thomson, qui post Unix fuit, utf-8 excogitavit, in consilio 9 systematis laboravit;
  • Rob Pike, qui utf-8 cum Ken excogitavit, etiam in Plan 9, Inferno, Limbo apud Bell Labs laboravit;
  • Robert Giesmer, quem scimus amoremque inveniendi Compiler Java HotSpot et pro labore suo de generante in V8 (interprete Google Javascript);
  • Et super 700 contributores, inclusis quibusdam nostris inaequaliter.

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Ite: primum aspectum

Linguam videmus plus vel minus simplicem et intelligibilem. Typi manifesti habemus: in quibusdam declarari opus est, in aliis non esse necessarium (hoc modo rationes inferri aliter atque aliter).

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Videri potest quod structurae modum describere. Videri potest quod notio monstratoris (ubi asteriscus est). Videri potest peculiare subsidium esse ad declarandum initializationem vestium et vestium consociationum.

Paene clarum est - vivere potes. Conemur scribere Salve, mundus:

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Quid videmus? Hoc est C-similis syntaxis, semicolon ad libitum est. Separator potest esse per duas lineas, sed solum si hae duae constructiones sint in eadem linea.

Videmus uncos in structuris moderandis (in 14th linea) libitum esse, sed capreolis crispis semper requiri. Videmus typing hoc statice esse. Tim frequentius sumitur. Hoc exemplum paulo perplexius est quam solitum Salve, orbis terrarum - tantum ut ostenderet bibliothecam esse.

Quid aliud videmus quod magni momenti est? Codex in fasciculos digestus est. Et ut sarcina in tuo codice utaris, ea importare debes importare directivam - hoc etiam magni momenti est. Lorem ipsum - operatur. Magna!

Experiamur aliquid magis complicatum proximum: Salve, mundi, sed modo nunc est servo suo. Quid hic interesting videmus?

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Uno modo, ut modulo. Hoc significat quod munus nostrum est "primum genus civis" et multum interesting res facere potes in stilo functionis. Deinde aliquid inopinatum videmus: importat nexus directivos directe ad conditorium GitHub. Iustum est, ita est – etiam ut ita fiat.

In Go, universalis identificatrix sarcinae domicilium repositorii est. Peculiaris utilitas est Goget, quae omnes clientelas arcesset, eas conficiat, eas instituat, eas componat et ad usum, si opus sit, praeparet. Eodem tempore scit Goget de meta HTML. Proinde, directorium http habere potes qui nexus continebit cum repositorio tuo specifico (sicut agimus, exempli gratia).

Quid aliud videmus? Http and Json in the standard library. Est, patet, introspectio - reflexio, quae adhibenda est in scriptione/json, quia simpliciter aliquod obiectum arbitrarium substituimus.

Currimus et videmus nos habere codicem utilem in 20 lineis, qui conficit, currit et nuntiat currenti mediae machinae onus (in machina in qua emittitur).
Quid aliud interest ut hic statim videre possimus? Componitur in unum binarium statarium (buinarium). Hic binarius nullas omnino clientelas, nullas bibliothecas habet! Ad quamlibet rationem transcribere potes, statim curre, et operaberis.

Procedente die.

Go: Methodi et Interfaces

Ire modos habet. Methodum cuiuslibet consuetudinis generis declarare potes. Haec autem structura non necessario est, sed fortasse alicuius generis alia. Alias ​​pro N32 declarare potes et modos scribe ad aliquid utile faciendum.

Et hic in stuporem incidimus primum... Evenit quod Ire non habet classes. Qui noverunt Ire possent dicere inclusio genus esse, sed aliud omnino. Elit citius, quo melius de hereditate cogitet. Non sunt classes in Go, et nulla est hereditas.

Quaestio! Quae societas auctorum a Google nobis data est ut multiplicitatem mundi reddamus? Dederunt nobis interfaces!

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

Interfaces speciale genus est quod permittit te scribere modos modos, modum signaturae. Praeterea, quaelibet ratio cuius modi sunt, huic instrumento respondebit. Hoc significat, quod munus unius speciei, alterius (quod correspondet generi interfaciei) simpliciter describere possis. Deinceps variabilem rationem huius interfaciei declaramus et aliquid ex his obiectis ei assignamus.

Pro Hardcore fans, dicere possum hanc variabilem significationes duos actu habere: unum ad notas, alterum ad specialem tabulam descriptorum, quae est propria huic speciei, ad huiusmodi interfaciendum. Hoc est, compilator tabulas descriptores tales creat tempore conjunctionis.

Et in Go, sane indicia sunt irrita. Verbum interfaciei {} (cum duabus adstringit crispis) variabilis est quae te ad aliquod objectum in principio demonstrare sinit.
Hactenus omnia subtilia, omnia nota sunt. Nihil mirum.

Go: goroutines

Nunc veniamus ad id quod nobis interest: leves processus - goroutines (goroutines) in Go terminologia.

Alexey Naydenov. ITooLabs. Causa evolutionis in Go (Golang) suggestum telephonicum. Pars I

  1. Primo, vere leves sunt (minus quam 2 KB).
  2. Secundo, sumptuum goroutine talem creandi neglegenda sunt: ​​ex bis mille facere potes - nihil fiet.
  3. Serviuntur propriae cedulae, quae solum ab uno goroutine ad alium transfert imperium.
  4. Hoc in casu imperium in sequentibus transfertur;
    • si go dictio offendit (si goroutine incipit proximus goroutine);
    • si interclusio Input/E vocationem possit;
    • si quisquiliarum collectio incipit;
    • si aliqua operatio per canales educitur.

Hoc est, quandocumque programmatis Go in computatrale currit, numerum metretarum in systemate determinat, quot stamina inmittit quot opus est (quot nuclei in systemate vel quot tibi narraverunt). Proinde, schedula haec stamina levia exsecutionis in omnibus his stamina systematis operantibus in unoquoque nucleo percurret.

Notandum quod haec est efficacissima via ad ferrum utendum. Adde quod ostenditur, nos multum amplius. Facimus, exempli gratia, systemata DPI quae unitatem unam 40 gigabitis ministrare permittunt (prout iis quae in his lineis fiunt).

Ibi, etiam ante Ite, eodem plane consilio usi sumus hac de causa: quia sinit nos loci processus cache conservare et signanter numerum virgarum contextus OS minuere (quod etiam multum temporis occupat). Dico: haec est efficacissima ad ferrum utendum.

Hoc simplex 21 versus exemplum est exemplum quod simpliciter resonat servo. Quaeso nota munus servitutis simplicissimum, linearis. Nulla callbacks sunt, nulla necessitas molesta et cogitata... Lege et scribe modo!

Simul, si legas et scribes, obsisteret actu - haec goroutine simpliciter in queue ponitur et ab schedula sumitur, cum iterum exsecutio fieri potest. Hoc est, simplex hic codex agere potest ut resonare servo tot nexus quot OS in illa machina permittat.

Propediem...

Quidam ads

Gratias tibi ago pro manendo nobiscum. Placetne tibi vasa nostra? Vis videre plus interesting contentus? Suscipe nos ponendo ordinem vel commendando amicos; cloud VPS for developers from $4.99, unicum analogum de ingressu servientibus, quod a nobis pro vobis est inventum: Tota veritas de VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps e $19 vel quomodo ministrator communicabit? (praesto cum RAID1 et RAID10, usque ad 24 coros et usque ad 40GB DDR4).

Dell R730xd 2x vilius in Equinix Tier IV centri Amstelodami? Tantum hic 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV from $199 in Belgio! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - from $99! Read about Quomodo aedificare infrastructuras: Ed. classis cum usu Dell R730xd E5-2650 v4 servientibus valet 9000 nummis Europaeis?

Source: www.habr.com