Bioyino - distributa, metri scalable aggregator

Sic collige metri. sicut nos. Concedimus etiam metrice. Nimirum res necessarias. Hodie loquemur de primo nexu systematis vigilantiae - statsd-compatible servientis aggregationis bioyinocur scripsimus et cur omisso brubeck.

Bioyino - distributa, metri scalable aggregator

Ex articulis superioribus nostris (1, 2) invenire potes quod usque ad aliquod tempus notis collegimus utendo Brubeck. Legitur in C. Ex codice sententia, tam simplex est quam obturaculum (hoc interest cum conferre voles) et, praesertim, tractat volumina nostra 2 decies centena millia metri secundo (MPS) ad apicem. sine ullis quaestionibus. Documenta affirmat 4 decies centena MPS cum asterisco subsidium. Hoc significat quod figuram dictam obtinebis si retiaculum recte in Linux configuras. (MPS quot potes consequi nescimus si retiaculum ut est deseris). Quamvis haec commoda, aliquot graves de brubeck querelas habuimus.

Vindicare 1 . Github, elaborandi elit, illud sustentans substitit: inaequalitates et fixas publicans, nostrum acceptando et (non solum nostrum) PR. Paucis proximis mensibus (alicubi a Februario-March 2018) actio resumpsit, sed ante annos fere 2 summa tranquillitas fuit. Praeterea, consilium augetur nam internum Gihub necessitatesquod grave impedimentum fieri potest novis inductionibus.

Vindicare 2 . Accuratio calculorum. Brubeck colligit summam 65536 valorum pro aggregatione. In casu nostro, aliquot metrice, tempore aggregationis (30 secundis), multo plures valores attingere possunt (1 ad apicem). Ex hac sampling, maximi ac minimi valores inutiles videntur. Exempli gratia;

Bioyino - distributa, metri scalable aggregator
Sicut erat

Bioyino - distributa, metri scalable aggregator
Quomodo debuerit

Eadem ratione ponderis plerumque perperam computantur. Adde hic cimex cum 32-bito supernatantis exuberantia, qui vulgo servo segfault ad recipiendum quasi innocens metricus emittit, et omnia magna fiunt. Cimex obiter non fixum.

Et tandem, Dictum X *. In tempore scribendi prompti sumus eam omnibus exhibere 14 plus minusve operis statsd operationes quas invenire potuimus. Fingamus aliquem infrastructuram unicam tantum ita crevisse ut 4 decies centena MPS accipere iam satis non sit. Aut etiam si nondum crevit, sed metrici iam tanti momenti sunt ut etiam breves, 2-3 minuti in chartis immergantur iam critici fieri possunt et inexsuperabilis tristitiae inter dispensatores praebent. Cum de tristitia agitur, opus ingratum est, solutiones technicae necessariae sunt.

Uno modo, culpa tolerantiae, ita quod quaestio subitanea de servo zombie apocalypsi psychiatricis causat non in officio. Secundo, scalis plusquam 4 decies centena MPS accipere posse, quin in ACERVUM Linux profunde fodiat et ad debitam magnitudinem placide crescens "in latitudinem".

Cum locum ad scalas habuimus, a culpa tolerantiae incipere decrevimus. "CIRCA! Culpa tolerantia! Simplex est, id facere possumus", 2 ministrantes cogitavimus et deduximus, exemplum Brubeckius in singulis suscitans. Ad hoc faciendum commercium metrice cum metris utriusque ministris exscribere debebamus ac etiam pro hoc scribere parva utilitas. Solvimus culpa patientiam difficultatem hoc, sed .... non optime. In primis omnia magna videbantur: unumquodque Brubeck suam collectionis versionem colligit, datas scribit Graphite semel singulis 30 secundis, antiquum intervallum (hoc in Graphite factum est). Si quis servo subito deficiat, alterum semper habemus cum suo exemplari notitiae aggregatae. Sed hic est quaestio: si server deficit, "vulsum" in graphis apparet. Hoc ex eo quod brubeck scriptor XXX secundis intervallis inter se non congruens est, et in momento fragoris unus ex illis non est overscriptus. Cum incipit secundus servo, idem accidit. Tolerabilius quidem, sed melius volo! Quaestio scalabilitatis etiam non recessit. Omnia metrica adhuc "vola" uni servo, ideoque limitantur ad 30-2 decies centena MPS, secundum retis gradum.

Si parum cogitas de problemate et simul nix trulla effodere, tunc sequens notio manifesta in mentem venit: opus statsd quod in modo distributo operari potest. Hoc est, unum quod instrumento synchronisationi inter nodos tempore et metrico. "Certe, talis solutio probabiliter iam existit", diximus et ad Google .... perreximus. et nihil invenerunt. Post varias statsd documenta perambulans (https://github.com/etsy/statsd/wiki#server-implementations ad diem 11.12.2017 Decembris XNUMX), nihil omnino invenimus. Apparet, nec tincidunt nec utentes harum solutionum adhuc multae metricae occurrunt, alioquin certo cum aliquo ascendissent.

Et tunc recordati sumus de "toy" statsd - bioyino, quod scriptum est apud Justum pro Fun hackathon (nomen propositi a scriptione ante initium hackathonis generatum est) et intelleximus nos instanter nostra statsd indigere. Quod?

  • quia pauci sunt statsd clones in mundo;
  • quia possibile est optatam vel prope optatam culpam tolerantiae et scalabilitatis praebere (including synchronum aggregatum metri inter servientes et problema mittendi certamina solvenda);
  • quia metri accuratius computare potest quam Brubeckius;
  • quia potes te ipsum accuratiorem statisticam colligere, quod Brubeckius nobis fere non praebuit,
  • quia facultas programmatis meae hyperperformance distributae scalae labariae applicationis habui, quae architecturam alterius hyperfori similis omnino non repetet, id est.

Quid scribam? Nempe in Rust. Quare?

  • quia iam erat prototypum solutio;
  • quia auctor articuli iam tunc sciebat Rust et studuit scribere aliquid in eo ad producendum cum opportunitate illud in aperto fonte ponere;
  • quia linguae cum GC non sunt nobis aptae propter naturam negotiationis receptae (fere realis) et GC moras fere ingratas sunt;
  • quod opus maximum perficientur comparari C
  • quia rubigo nobis sine interrito concurrentia praebet, et si scribere coepimus in C/C++, in gravioribus nuditatibus, exuberantibus quiddam, generis conditionibus et aliis FORMIDULOSUS verba, quam Brubeckius exaravimus.

Argumentum etiam fuit contra Rust. Societatem inceptis in Rust creandis expertem habuit, et nunc etiam non cogitamus ea uti in summa incepta. Ideo erant graves timores ut nihil operetur, sed casus capere placuit et conatus est.

Tempus transivit...

Denique, post aliquot conatus defecerunt, prima versio laboratum parata est. Quid accidit? Hoc ita factum est.

Bioyino - distributa, metri scalable aggregator

Quilibet nodi suum ordinem metri accipit et cumulat eas, nec metricas aggregat pro illis speciebus ubi plena copia requiritur ad ultimam aggregationem. Nodi inter se conexi sunt quodam genere protocollo cincinno distributo, quod unum solum (hic clamavimus) inter se deligere sinit, dignum metri causa ad Magnum mittendum. Hoc problema est currently esse certus per consulesed in futurum auctoris cupiditates extendunt own implementation Raft, where the most worthy one will, course, be consensus aucto- nodi. Praeter consensum, nodi saepius (semel per alterum per defectionem) mittunt ad proximos illas partes metri pre-congregati quas in secundo illo colligere potuimus. Evenit ut scalae et culpae tolerantiae conserventur β€” uterque nodi adhuc plenam metri copiam tenet, sed metrici iam aggregati mittuntur, per TCP et in protocollum binarium encoded, itaque duplicatio gratuita signanter ad UDP reducuntur. Quamvis magnus numerus metri advenientis, cumulus memoriam exiguum requirit et etiam minus CPU. Nostris enim mertics compressibilibus valde, hoc solum paucae decem megabytarum notitiarum. Ut bonus additus, in Graphite non necessarias notitias rescribemus, sicut apud Burbeckium factum est.

UDP cum metricis fasciculis inaequalis sunt inter nodos in apparatu retis per simplicem rotundum Robinum. Scilicet, hardware retis non contenta fasciculorum parse et ideo multo plus quam 4M per secundam trahere potest, ne dicam metrics de quibus nihil omnino scit. Si consideremus metricos non semel in singulis fasciculis venire, tunc nullas quaestiones perficiendas hoc loco praevidemus. Si servo inruerit, celeriter fabrica retiacula (intra 1-2 secundis) hoc facto detegit et a conversione servo ingruente removet. Qua de causa nodi passivi (i.e., non-duces) in et off in praxim converti possunt sine notis in chartis deductiones. Maximam amittimus partem metri quae in secundo ultimo fpectat. Subita iactura / shutdown / transibit ducis adhuc minorem anomaliam creabit (XXX secundo intervallo adhuc e sync e est), sed si communicatio est inter nodi, hae difficultates minui possunt, exempli gratia, emittente synchronisationi facis .

Pauca de structura interna. Multiplicatio quidem applicatio est, sed stamina architectura alia est quam usus in Brubeck. Stamina in Brubeck eadem sunt - singulae earum responsabiles sunt utriusque notitiae collectionis et aggregationis. In bioyino, operarii in duos circulos divisi sunt: ​​qui reticuli responsales et aggregationis responsales sunt. Haec divisio permittit ut mollius applicationem moderandi secundum rationem metricam: ubi intensiva aggregatio requiritur, aggregatores addere potes, ubi multum est commercii retis, numerum retis fluit addere potes. In momento, servientibus nostris in retis 8 et 4 aggregationis operam dabimus.

Pars computationis (responsible pro aggregatione) est satis taediosa. Buffers retis repleti inter fluxiones numerandas distribuuntur, ubi postea parseduntur et aggregatur. Postulantibus, metrice dantur ad alias nodos mittendas. Haec omnia, etiam notitia nodis inter mittens et cum Consule operante, asynchrone conficitur, in compage currit tokio.

Multo plures problemata in evolutione causata sunt a parte reticulari quae ad metricos recipiendos pertinet. Praecipuum propositum separationis retis in singulas res influit, desiderium minuendi tempus quo fluxus impendit non notitia legere nervum. Optiones asynchronas UDP utentes et recvmsg regulares cito evanuerunt: prima nimium usoris spatium CPU consumit ad processus eventus, secunda nimis multas virgas contextus requirit. Ideo nunc usus est recvmmsg with large buffers (and buffers, gentlemen duces, are nothing to you!). Firmamentum pro regularibus UDP casibus levibus servatur ubi recvmmsg non opus est. In multimessage modo principale consequi potest: maxima pars temporis, reticulum linum radit OS queue - notitia ex neruo legit et eam ad quiddam usoris transfert, modo interdum mutando ad quiddam refertum praebendum. aggregatores. Queue in nervum fere non accumulat, numerus fasciculorum omissorum paene non crescit.

illud

In uncinis defaltis, magnitudo quiddam positum est ut satis magna sit. Si subito volueris experiri servo tuo, hoc incurrere potes quod, misso paucitate metri, in Graphite non pervenient, remanentes in retis quiddam. Cum paucitate metri elaborare debes, bufsize et molis-queue-amplitudinem ad minora in config ponendam.

Denique nonnullae chartse pro chartis amantibus.

Statistica in numero metri advenientis pro singulis servientibus: plus quam 2 decies centena MPS.

Bioyino - distributa, metri scalable aggregator

Nodorum inactivare unum et metri redistribuendi advenientis.

Bioyino - distributa, metri scalable aggregator

Statistics in exitu metrico: una tantum nodi semper mittit - umbone incursionis.

Bioyino - distributa, metri scalable aggregator

Statistica operationis cuiusque nodi, attentis erroribus variis modulorum systematis.

Bioyino - distributa, metri scalable aggregator

Copiae metricae enarratio (metrica nomina latent).

Bioyino - distributa, metri scalable aggregator

Quid cum hoc proximo molimur? Scilicet scribe codicem, damnare...! Propositum primum propositum fuit ut fons apertus et ita per totam vitam manebit. Consilia immediata nostra includunt commutatione ad nostram versionem Raft, mutata parem protocollum ad unum portatilem, adiectis adiectis statisticis internis, nova genera metri, cimex fixa et aliae emendationes.

Utique omnibus gratum est auxilium in evolutione propositi: creare PR, Exitus, si fieri potest, respondebimus, emendabimus, etc.

Eo dicto, omnes gentes, emite elephantos nostros!



Source: www.habr.com