Quaerere ad I TB / s celeritatem

TL;DR: Quattuor annos Google cum idea pro novo servo monitoria instrumentum reliquit. Idea erat munera solitaria in unum servitium coniungere solere collectione et analysin logatae, metrice collectio; summis et dashboards. Unum e principiorum est quod vere servitus debet esse celerdeuotionem facilem, interactivam, iucundam experientiam praebens. Hoc requirit processus multi-gigabyte notitiarum partium in fractiones secundi dum moratur in budget. Instrumenta administratione stipes existentia saepe tardae et clunky sunt, sic obnixi sumus cum bona provocatione: vehementer instrumentum cogitans ut usoribus novam experientiam praebeat.

Articulus hic describitur quomodo apud Scalyr hanc quaestionem solvimus applicando modos scholae veteris, vim violentam accedentem, stratis superfluis eliminatis et structuras datas implicatas vitando. Has lectiones ad tua opera machinalis adhibere potes.

Vetus School Power

Analysis index plerumque incipit a investigatione: omnes epistulas inveniunt quae certum exemplar aequant. In Scalyr, hi sunt decem vel centeni gigabytarum lignorum ex multis servientibus. Hodiernus aditus, pro regula, constructionem implicat alicuius notitiae complexae structurae optimized ad inquisitionem faciendam. Hoc certe in Google vidi, ubi hoc genere satis boni sunt. Sed multo crassiore accessu insevimus: lineares tabularum intuens. Et operatus est - perscrutabilem faciem praebemus, quae velocior est ordines magnitudinis quam competitores nostri (vide animationem in fine).

Praecipua perceptio fuit quod moderni processores quidem valde celeres sunt ad operationes simplices et directas. Hoc facile est falli in systematibus multiplicibus, multi- stratis, quae in I/O velocitate et operationibus retis nituntur, et huiusmodi systemata hodie usitatissima sunt. Ita consilio elaboraverunt ut stratis et excessus stratis regit. Multis processibus et ministrantibus in parallelis, quaesitio celeritas 1 TB per secundam pervenit.

Clavis tollit ex hoc articulo:

  • Investigatio violenta violenta est accessus viabilis ad problemata realia mundi solvenda, magnarum problematum.
  • Vim vis est ars artificii, non solutio operis. Sicut quaelibet ars, quibusdam quaestionibus quam aliis aptior est, et male vel bene perfici potest.
  • Vis maxime bonum assequendum stabulum fructibus.
  • Efficax usus violentiae violentae optimizing codicem requirit et sufficientes facultates tempore suo applicat. Opportunum est si servitores tui sub onere non usoris graves ac usoris operationes prioritas maneant.
  • In consilio totius systematis euismod pendet, non solum in interiore ansa algorithmus.

(Hic articulus describit inquisitionem pro notitia in memoria. Pleraque cum uter facit truncum inquisitionis, Scalyr servientes iam conditivo sunt. Sequens articulus tractabit de inquisitione ligna vacuefacta. Eadem principia applicabunt: codicem efficientem, vim violentam. magnis opibus computational).

Vim modum

Traditionaliter, magna notitia copiae indicem keyword uti inquiritur. Cum ad tigna ministranti applicata, hoc significat quaerendo singula verba in trunco. Ad singula verba, omnium inclusionum indicem debes facere. Inde facile omnes nuntios cum hoc verbo invenire, exempli gratia "errorem", "incendium" vel "transactionem_16851951" - in indice vide.

Hoc accessu apud Google usus sum et bene laboravi. Sed in Scalyr ligna byte byte quaerimus.

Quare? Ex algorithmico abstracto aspectu, index keywords multo efficaciores sunt quam vis inquisitionum violentarum. Sed algorithmos non vendimus, effectus vendimus. Ac perficiendum est non solum de algorithms, sed etiam de systematibus machinalis. Consideranda sunt omnia: volumen notitiarum, inquisitionis genus, hardware promptuarium et contextus programmatum. Placuit ut ad quaestionem particularem nostram aptiorem quam ad indicem aliquid simile 'grep' pertineret.

Indices magni sunt, sed limites habent. Unum verbum facile invenire est. Sed quaerens nuntios pluribus verbis, ut "googlebotus" et "404", multo difficilius est. Investigatio locutionis sicut "exceptio rudis" requirit graviorem indicem, qui non solum omnes epistulas cum verbo isto memorat, sed etiam locum specificum verbi.

Vera difficultas venit cum verba non quaeris. Vis dicamus videre quantum negotiatio ab autocinetis venit. Prima cogitatio est omnia pro verbo 'bot' quaerere. Hoc modo invenies nonnulla automata: Googlebotus, Bingbot et multi alii. Hic autem "bot" non verbum, sed pars est. Si "bot" in indice quaerimus, nullum nuntia cum verbo 'Googlebot' reperimus. Si singula verba in indicem quaeras et deinde indicem percontationum inventarum lustra, inquisitionem multum retardabit. Quam ob rem programmata quaedam loga non permittunt inquisitiones vel (ut melius) speciales syntaxin cum inferioribus effectibus. Hoc volumus evitare.

Alia quaestio est interpunctio. Visne omnes petitiones invenire e 50.168.29.7? Quid de debugging omnia continentur? [error]? Subscripta plerumque omittitur interpunctio.

Denique fabrum instrumenta potentissima amant, et quaestio interdum nonnisi cum iusto expressione solvi potest. Index keyword in hoc non admodum convenit.

praeterea indices complex. Singula epistulae pluribus indicibus keywords adicienda sunt. Hae tabulae in forma facili omni tempore servandae sunt. Queritur cum verbis, fragmentis verbi, vel expressionibus regularibus in operationes multi- listas transferendas oportet, et eventus lustratos et coniunctos ad efficiendum effectum statutum. In contextu magna-scalae, multi-tenentis servitii, haec multiplicitas efficit quaestiones perficiendas, quae cum algorithms analysibus non visibiles sunt.

Keywords indices multum spatii etiam capiunt, et ceptaculum maius sumptus in ratio administrationis index est.

E contra, unaquaeque investigatio multum vim computandi consumere potest. Nostros users-magnas celeritates percontationes pro singularibus quaestionibus aestimant, sed tales interrogationes raro fiunt. Ad investigationes typicas quaerendas, exempli gratia, pro ashboardday, artificiis specialibus utimur (eas in proximo articulo describemus). Aliae satis rarae sunt petitiones quas raro plus uno tempore procedere debeas. Sed hoc non significat servos nostros occupatos non esse: occupati sunt operibus accipiendi, examinandi et comprimendi novas nuntios, erectiones aestimandi, notitias antiquas comprimentes, et sic porro. Ita satis significantem copiam processuum habemus quae ad interrogationes exsequendas adhiberi possunt.

Bruta vis operatur si brutum habes (et multum vis)

Vis violenta optima in quaestionibus simplicibus cum parvis lorculis internis optime operatur. Saepe ansam internam optimizare potes ut ad celeritates maximas currendum sit. Si signum est multiplex, multo difficilius est ad optimize.

Inquisitionis nostratis codicem primitus maiusculum ansam interiorem habuit. Epistulas in paginas 4K componimus; in unaquaque pagina quasdam epistulas (in UTF-8) continet et per singula mandata metadata sunt. Metadata structura est quae longitudinem pretii, nuntii ID interni, aliosque agros enodavit. Investigatio cycli sic erat:

Quaerere ad I TB / s celeritatem

Haec versio simplicior in ipso codice est. Sed etiam hic, multiplex objectum placements, notitia exemplarium, ac munus vocat visibiles sunt. JVM satis bonum est ad munus optimizing vocat et res evanidas collocandas, ideo melius hoc codice laboravit quam nos meruimus. In probatione, clientes satis feliciter usi sunt. Sed tandem eam ad gradum cepimus.

(Quaeres cur epistulas in hac forma cum 4K paginis, textibus et metadatas conponamus potius quam cum lignis directe operando. Multae sunt rationes, quae eo decoquunt quod machinae scalyri interius magis similis datorum distributo quam Inquisitionis textus saepe cum DBMS-styli filtra in margine post parsingi stipes coniungitur. Possumus simul multa milia lignorum simul quaerere, et fasciculi textus simplices non sunt aptae administrationi nostrae transactionis, replicatae, distributae).

Initio visum est talem codicem ad vim optimizationem non admodum idoneam fuisse. "Verus opus" in String.indexOf() CPU profile non dominantur. Id est, haec sola methodus optimizing effectum notabilem efficere.

Ita fit ut metadata in initio cuiusque paginae condimus, et textus omnium epistularum in utf-8 in altero fine refertus est. Usus, fasciam rescripsimus ad totam paginam statim investigandam:

Quaerere ad I TB / s celeritatem

Haec versio recta in visum operatur raw byte[] et omnia mandata statim per totam 4K paginam scrutatur.

Id multo invidunt optimize, ad vim brute modus. Ansa inquisitionis internae simul pro tota pagina 4K appellatur, potius quam separatim in singulis stationibus. Nulla exemplaria notitiarum, nulla destinatio rerum. Incomplexae operationes metadatae non solum dicuntur, cum effectus positivus est, et non in omni verbo. Hoc modo ton capitis eliminavimus, et reliquum oneris in parva ansa inquisitionis internae coacta est, quae ad ulteriorem optimam aptissima est.

Nostra quaestio actualis algorithmus innititur magna idea Leonidae Volnitsky. Similis est algorithmo Boyer-Moore, circa longitudinem omissis chordae inquisitionis in singulis gradibus. Praecipua differentia est quod duos bytes simul coercet ut falsas pares circumscribat.

Nostra exsecutio requirit tabulam aspectalem creandi 64K pro singulis inquisitionibus, sed nihil comparatum est cum gigabytis notitiarum quas per investigationem invenimus. Ansa interior processuum plurium gigabytarum per alterum in uno nucleo. In praxi, stabilis effectus circa 1,25 GB per secundam in singulis nucleis, et emendandi locus est. Potest aliquid capitis extra ansam interiorem tollere, et cogitamus experiri ansam interiorem in C loco Javae.

Utimur vi

Locuti sumus inquisitionem illam logam "dure" impleri posse, sed quantum "potentia" habemus? Satis multi.

1 core: Cum recte adhibetur, nucleus unus processus moderni in suo iure satis potens est.

VI metretas: Currentes sumus in Amazonibus hi1.4xlarge et i2.4xlarge SSD servientes, singuli cum 8 coros (16 stamina). Ut supra dictum est, hi nuclei plerumque cum background operationes occupantur. Cum usor perscrutationem exercet, res background suspenduntur, omnes 8 coros ad quaerendum solvens. Investigatio plerumque in secundo scissura perficit, post quod opus background repetit (programma throttlum efficit ut verberatio inquisitionis inquisitionis cum curriculo operis magni momenti non impedit).

VI metretas: ad firmitatem servientes in circulos domini/servos ordinamus. Quisque dominus unum SSD et unum EBS servo sub eius imperio habet. Si servo principale inruerit, statim in locum suum SSD server. Toto fere tempore dominus et servus bene laborant, ita ut singulae notitiae scandalum in duobus diversis servis quaesitum sit (servus EBS processus infirmus habet, ideo non consideramus). Munus inter eos dividimus, ut summa 16 nucleorum in promptu habeamus.

Multi metretas: In proximo futuro notitias per servitores distribuemus ita ut omnes participes fiant processus non-trivialis petitionis. Omnis nibh laboris. Nota: consilium implevimus et celeritatem inquisitionis augevimus ad 1 TB/s, vide notam in fine articuli].

Simplicitas efficit fidem

Alia utilitas violentae methodi satis constans est eius effectus. Typice, perscrutatio non admodum sensilis est ad singula problemata ac notitias positas (conicio ideo "crassa" appellatum esse.

Index keyword interdum incredibiles eventus celeriter gignit, alias vero non facit. Dicamus te habere 50 GB lignorum in quibus vocabulum emptoris_5987235982 ter exacte apparet. Investigatio huius vocabuli tres locos directe ab indice numerat et statim complebit. Sed complexus investigationum wildcardorum potest milia keywords lustrare et longum tempus capere.

Ex altera parte, violentia inquisitionum plus minusve eandem celeritatem pro quavis interrogatione praestant. Melior est longa quaeri verba, sed vel singula quaerimus indolem satis celeriter.

Simplicitas violentae methodus significat suam perficiendi proximam ad maximum suum theoreticum. Pauciora sunt optiones pro insperato orbe onerando, contentiones sepositae, regula persequentis, et milia aliarum causarum defectio. Modo spectavi petitiones ab utentibus Scalyr factas hebdomadam proximam in servo nostro frequentissimo. Petitiones erant 14. Ex eis octo plus quam unum alterum sumpserunt; XCIX% intra CXI milliseconds (si instrumenta analysi log non usi sunt, mihi crede: id est ieiunium).

Stabilis, certa effectio magni momenti est ad facilitatis usum ministerii. Si periodice desit, utentes eam tamquam levem sentient et inviti eo utuntur.

Iniuriarum quaerere in agendo

Hic est brevis animatio quae in actu inquisitionem Scalyr ostendit. Demo rationem habemus ubi omnem eventum in omni reposito publico Github importamus. In hoc demo, pretium hebdomadae notarum examinamus: circa DC GB ligna rudium.

Vivo conscripta video, sine praeparatione speciali, in escritorio meo (circiter 5000 chiliometrorum a servo). In perficientur quod late ex te videre web client ipsumac etiam ieiunium et certum backend. Quotiens mora est sine indicator "loading", illud me intermittit ut legere possis quod insto sum.

Quaerere ad I TB / s celeritatem

Ad summam:

Cum magna copia notitiarum dispensando, bonum algorithmum eligere interest, sed "bonum" non significat "amatum". Cogita quomodo codicem tuum operetur in usu. Analysis theorica algorithmorum nonnullas res relinquit quae magni momenti in rerum natura esse possunt. Simpliciores algorithmi faciliores sunt ad optimize et firmiores in extremis condicionibus.

Item de contextu cogitandum in quo codice exsecutioni mandabitur. In nostro casu satis potentes nobis opus est ministratoribus ad negotia background administranda. Utentes inchoare perscrutantes raro relative, ita mutuari possumus integram catervam ministrantium ad tempus breve opus ad singulas inquisitiones perficiendas.

Vim violentam methodo utentes, celeriter, certa, flexibili inquisitione per stipes lignorum implevimus. Speremus ideas has inceptis utiles esse.

Edit: Titulus et textus ab "Quaerere XX GB per secundam" mutati sunt ad "Quaerere secundum 20 TB" per hos annos in incremento perficiendi reflectere. Haec celeritatis incrementa imprimis ob mutationum specierum ac numerorum EC1 ministrantium hodie positi sumus ad auctam basim emptoris serviendam. Mutationes mox venientes sunt quae aliam boostm dramaticam in efficientiam operationalem praebebunt, nec expectare possumus eas communicare.

Source: www.habr.com