Quomodo nos in Sportmaster ratio caching elegit. Pars I

Salve! Nomen meum est Alexey Pyankov, elit sum in comitatu Sportmaster. In illo post Dixi quomodo opus in Sportmaster website incohatum esse anno 2012, quae incepta per "trudere" et vice versa, quae moechus collegimus.

Hodie cogitationes communicare volo quae alium locum sequuntur - eligens caching systema Javae backend in situ admin panel. Haec argumentatio singularem significationem mihi habet - quamquam historia per duos tantum menses explicatur, per hos 2 dies 60-12 horas laboravimus ac sine uno die interivimus. numquam putabam aut cogitabam quod tam difficile esset potuisse laborare.

Itaque textum in 2 partes dispicio ut eam omnino non onerem. Sed contra, prima pars erit levissima praeparatio, introductio, quaedam considerationes de caching. Si elit iam peritus es vel cum caches laboravi, ex parte technica nihil novi in ​​hoc articulo erit verisimile. Sed juniori, tam parva recensio, potest ei indicare utram partem inspiciat, si in tantis triviis se invenerit.

Quomodo nos in Sportmaster ratio caching elegit. Pars I

Cum nova versio in Sportmaster website producta est, notitia in via recepta est, ut ea leniter, non satis commoda esset. Fundamentum tabulae erat paratae versioni prioris situs (Bitrix), quae in ETL trahenda erat, ad novam formam redacta et variis parvis rebus ex duodecim systematibus pluribus locupletata. Ut picturae novae seu producti descriptionis in situ appareant, expectare debebas in crastinum - updates tantum noctu, semel in die.

In primis tantae sollicitudines fuerunt a primis septimanis producendi ut tam incommoditates contentorum actoribus ludibrio essent. Sed, simul ac omnia consedit, progressum rei continuavit - paucis post mensibus, ineunte MMXV, admin panel active evolvere coepimus. In 2015 et 2015, omnia bene aguntur, regulariter solvimus, admin tabula plus ac magis notitiarum praeparationum operit, et ad hoc paramus quod mox turma nostra committenda est rei maximi momenti et implicatae. circuitio (plena praeparatio et sustentatio notitiarum omnium productorum). Aestate autem MMXVII, ante Lorem cursus commodo commodo, in difficillimo situ reperiet consilium - propter difficultates caching. De hoc facto in secunda parte huius editionis utriusque partis loqui cupio.

Sed in hac poste e longinquo incipiam, cogitationes quasdam - notiones de caching exhibebo, quae bonus gradus esset ante magnum propositum librum pertractare.

Cum caching negotium occurs

Munus caching non solum apparent. Tincidunt sumus scribentes programmatum et volumus esse in demanda. Si res in postulatis prospere evenit, utentes veniam. Et magis ac magis. Suspendisse a erat et tellus efficitur mattis a sit amet felis.

In primis aetatibus non cogitamus de optimization et codice effectus. Summa est functionality, celeriter gubernatorem et hypotheses temptat. Et si onus crescit, ferrum sentinamus. Augemus eam bis vel ter, quinquies, fortasse 10 ter. Alicubi hic - non permittunt pecuniae posse. Quotiens numerus users augebit? Non erit similis 2-5-10, sed, si bene, erit ab 100-1000 ad 100 milies. Hoc est, citius aut serius, ipsum facere debebis.

Dicamus aliquam codicis partem (quam partem vocamus functionem) diu indecens sumit, et tempus exsecutionis minuere volumus. Ad munus datorum accessum potest esse, vel exsecutio alicuius logicae multiplicis esse potest - summa res est quae longum tempus exsequi capit. Quantum potes tempus minuere exsecutionis? In termino, ad nihilum redigere potes, ulterius. Quomodo supplicium minuere potes tempus ad nihilum? Responsio: Omnino exsecutionem tollendam. Sed statim eventum redde. Quomodo exitum invenire potes? Responde: vel computa, vel alicubi aspice. Longum tempus supputare. Explorare autem est, exempli gratia, recordari eventum, ut munus prodeat ultimum tempus cum iisdem parametris vocatur.

Id est nobis maximus exsecutio muneris non est. Satis est scire ex quonam ambitu ambitus exeat. Deinde, si valores moduli in forma rei repraesentantur, quae tamquam clavis in aliqua reposita adhiberi potest, tunc effectus calculi servari et perlegere proximo tempore accessum potest. Si haec scriptura et lectio eventus celerior est quam munus exsequens, lucrum in terminis celeritatis habemus. Quaestus quaestus quantitatem 100, M, et 1000 miliens attingere potest (100^10 potius exceptio, at in basi satis languidi, satis potest).

Basic requisita ad caching system

Primum, quod ratio caching exigentia fieri potest, celeritas celeritatis legitur et, ut paulo minus, celeritatem scribe. Hoc verum est, sed usque dum ratio ad productionem devolvitur.

Hanc causam agamus.

Dicamus nos onus hodiernam ferramentis praebuisse ac nunc paulatim caching inducere. Numerus utentium paulatim crescit, onus crescit - cachinulas addimus, huc illuc cochleae. Hoc aliquamdiu pergit, et nunc graves functiones fere amplius non vocantur - totum onus principale in cella cadit. Numerus utentium hoc tempore N temporibus crevit.

Et si copia initialis ferramentorum 2-5 temporum esse potuit, tunc ope cella emendare possemus per factorem 10 vel, in bono casu, per 100 factorem, alicubi fortasse per factorem. 1000. Id est, eodem ferramento – 100 pluries processimus petitiones. Magna, digna gingiberi!

Nunc autem, uno momento, casu, ratio ingruat et concidit cella. Nihil speciale - tamen, cache electum est secundum postulationem "celeritate alta legere et scribere, cetera nihil refert".

Relativum ad initium oneris, subsidia ferrea nostra erant 2-5 vicibus, et onus in hoc tempore 10-100 temporibus augebatur. Cache utendo, resecti nos vocat ad graves functiones et ideo omnia operata sunt. Et nunc sine cella, quotiens ratio nostra retardabit? Quid nobis fiet? Ratio cadet.

Etiamsi cella nostra non fragorem fecit, sed ad tempus tantum purgata, calefieri oportebit, et hoc aliquo tempore erit. Et temporibus, consectetur officia in eveniet molestias.

Conclusio: Incepta productionis valde onerata desiderant systema cachinni non solum ut celeritates altas legantur et scribant, sed etiam ut salus data et resistentia in defectibus conserventur.

Dolor electionis

In consilio cum tabula admin, electio sic ivit: primum Hazelcast inauguavimus, quia Iam familiares eramus hoc facto ab experientia principalis situs. Hic vero optio haec evasit ut non succederet - sub onere nostro, Hazelcast non modo tardus est, sed valde tardus. Et in illo tempore iam signati sumus ad tempus remissionis.

Praedo: quam exacte circumstantiae elaboraverunt nos tam multam et acuto et temporis situ confectam desideravimus - in secunda parte dicam - et quomodo finierimus et quomodo ejecimus. Nunc autem - modo multum accentus esse dicam, et "cogitare - nescio quo modo cogitare possum, lagenam excutimus." "utrem excutiens" etiam vastator est, eo magis postea.

Quod fecimus;

  1. Indicem facimus omnium systematum quae Google et StackOverflow suadent. Paulo plus XXX "
  2. Experimenta scribimus cum onere typico ad productionem. Ad hoc faciendum, notas memoravimus quae per systema in ambitu productionis transeunt - quaedam sniffer pro notitia non retis, sed intra systematis. Prorsus haec notitia adhibita est in probat.
  3. Cum tota turma, quisque proximam rationem e indice eligit, conformat, ac probat. Experimentum non transit, onus non portat – abicimus et in proximam in acie transgredimur.
  4. Die 17 systematis patefactum est omnia desperare. Desine quassare utrem, tempus est serio cogitare.

Sed haec optio est, cum debes eligere rationem, quae "per celeritatem" in praeparatis probationibus obtinebit. Quid, si talia non sunt adhuc probata, et vis cito eligere?

Exemplar hanc optionem (difficile est opinari medium+ elit in vacuo vivere, et tempore electionis nondum suam praeoptationem conformavit quam ut primum experiri productum - ergo ulterius ratio magis theoristae/philosophiae// de juniore).

Postulatis decretis, solutionem e archa eligendo incipiamus. Cur rotam reinvent: eamus et sistendi rationem paratam capiemus.

Si iam excipe et google illud, da vel accipe ordinem, sed generatim normae huius modi erunt. Primum, Redis occurreris, ubique auditur. Tum invenies EHCache esse vetustissima et probatissima ratio. Deinde scribemus de Tarantool, domestica evolutione quae unicam solutionis rationem habet. Ac etiam Ignite, quia nunc in ortum favoris et fauore SberTech fruitur. In fine etiam est Hazelcast, quia in inceptis mundi saepe inter magnas turmas apparet.

Elenchus non est copioseus, justos systematum adsunt. Et unum tantum cochleae erimus. Sumamus electos 5 systemata pro "pulchritudinis certamine" et delectum faciamus. Quis victor erit?

redis

Legimus ea quae in rutrum scribunt.
redis — opensource project. Data repositionis in memoria praebet, facultatem servandi in disco, partiendo, promptam facultatem et recuperationem a retis outages.

Omne pulchrum videtur, potes illud et cochleae in - omne opus facit. Sed solum ad ludum, alios candidatos inspiciamus.

EhCache

EhCache - "plenissimus latibulum pro Java" (translatio slogani e officiali). Item opensource. Et tunc intelligimus Redis non esse pro Java, sed generale, et cum eo penitus opus est fascia. et EhCache commodius erit. Quid aliud ratio promittit? Certa, probata, plena functionality. Bene est etiam frequentissimum. Et cella terabytes de data.

Redis oblitus est, paratus sum EhCache eligere.

Sed sensus pietatis urget me videre quid bonum sit de Tarantool.

Tarantool

Tarantool - occurrit designatio "Real-time data integrationis suggestu". Sonat valde complicatum, ut singillatim paginam legamus et magnam enuntiationem inveniamus: "Caches 100% notitiarum in RAM". Haec quaestiones movere debet - tamen multo plus notitiae quam memoria potest esse. Explicatio est quod significat Tarantool non currere serialization ad scribendum notitias ad orbis ex memoria. Instead, humili gradu lineae systematis utitur, cum memoria simpliciter ad limam systematis redacta cum optimo I/O effectu est. In genere aliquid mirabile fecerunt et refrigerant.

Inspiciamus exsecutiones: Mail.ru via corporata, Avito, Beeline, Megafon, Alfa-Bank, Gazprom...

Si dubia de Tarantool adhuc essent, tunc casus exsecutionis apud Mastercard me absolvit. Tarantool capio.

Sed usquam…

ignium

Estne aliquid plus ... ignium, occisus est ut "in memoria computandi suggestum... in memoria celeritatum in petabytis notitiarum." Multa praeterea commoda hic sunt: ​​distributa in memoria cella, celerrime calculi repositionis et cella, scansio horizontalis, promptitudo, stricta integritas. Fere evenit ut ieiunas ignias sit.

Implementations: Sberbank, American Airlines, Yahoo! Iaponia. Et tunc invenio Ignitum non solum in Sberbank impleri, sed turma SberTech suos suos ad equos ignitos emittit ut ipsum productum excolant. Hoc est omnino captare et Ignite capere paratus sum.

Cur omnino incertum est, Quintum punctum quaero.

corylus

Ego ad locum coryluslegens. Et evenit ut quam celerrime solutio caching distributa sit Hazelcast. Est ordo magnitudinis velocior omnibus aliis solutionibus et generatim est dux in campo memoriae in- euismod data. Hoc in rerum prospectu, ut aliquid aliud capias, non est te ipsum revereri. Etiam notitia repositionis redundans utitur ad continuam operationem botri sine notitia damni.

Ita est, paratus sum ad Hazelcastum capere.

collatio

Sed si spectes, omnes quinque candidati ita describuntur ut quisque eorum sit optimus. Quomodo eligere? Videmus quae sit popularis, comparationes quaeramus, et capitis abibit.

Invenimus unum sic обзорnostras, 5 systemata elige.

Quomodo nos in Sportmaster ratio caching elegit. Pars I

Hic sorted: Redis est in summo, Hazelcast secundo loco est, Tarantool et Ignite popularis sunt, EhCache fuit et manet.

Sed intueamur calculi modus: nexus cum websites, cura generalis in systemate, officium praebet - magna! Hoc est, cum ratio mea deficit, dicam: “Imo certum est! Multi officium offert... Simplex comparatio talis non faciet.

Haec omnia systemata caching tantum non sunt. Habent etiam multum functionality, etiam cum data non exantlaretur clienti ad expediendum, sed e converso: signum quod in notitia exsecutioni mandari debet servo, ibi fit, et effectus redditur. Et non tam saepe considerantur ut caching ratio separata.

Bene, non desistamus, directam systematum comparationem inveniamus. Sumamus capita duo optiones - Redis et Hazelcast. Nos celeritati studemus, eosque ex hoc parametro comparabimus.

Hz vs Redis

Hoc invenimus collatio:
Quomodo nos in Sportmaster ratio caching elegit. Pars I

Caeruleum est Redis, rubrum est Hazelcast. Hazelcast ubique vincit, et ratio huius rei est: multi- plicata est valde optimized, singula opera cum partitione sua, ideo non sunt interclusio. Et Redis est simplex liciatorium, non prodest a modernis multi-core CPUs. Hazelcast asynchronum I/O habet, Redis-Jedis bases obturans habet. Post omnes, Hazelcast binario protocollo utitur, et Redis textum centricum est, id est inhabilis.

Si modo, ad alium comparationis fontem accedamus. quid ostendet nobis?

Redis vs Hz

alium collatio:
Quomodo nos in Sportmaster ratio caching elegit. Pars I

Hic e contrario rubra eft Redis. Hoc est, Redis outperforms Hazelcast in terminis faciendis. Hazelcast primam comparationem vicit, secundam Redis vicit. Ius hic accuratissime explicavit cur Hazelcast comparationem priorem vicit.

Evenit ut eventus primi ante armatae erant: Redis in archa basi ductus est, et Hazelcast causa experimenti ad formandam erat. Tum evenit: primum cuivis credere possumus, deinde, cum tandem rationem eligimus, adhuc recte configurare necesse est. Hae unctiones includunt justos, parametros fere centum.

Concutiens utrem

Totum autem processum, quem nunc fecimus, cum hac metaphora explicare possum: "Excutere utrem." Hoc est, nunc propositum non habes, nunc summa res est posse legere acervum. Et hominem in turma mea professionalem habeo, qui hoc in temporibus dubiis prorsus operatur.

Quid agit? Rem fractam videt, ACERVUM vestigium videt, aliqua verba ex eo sumit (quae eius peritia in programmatis sunt), perquirit in Google, ACERVUS inter responsa invenit. Sine lectione, sine cogitatione, inter interrogata responsa eligit simile quiddam sententiae "hoc et illud" (eligat tale responsum est ingenium eius, quia non semper responsum quod maxime placet); applicat, comibus: si quid mutatur, magnum. Si non mutata, revolve. Et repetere Lorem-reprehendo inquisitionem. Et hoc modo intuenti operam dat ut codicem post aliquod tempus operetur. Nescit cur, quid fecerit nescit, non potest explicare. Sed! Haec contagio operatur. Et exstinguitur ignis. Nunc quid fecimus. Cum progressio operatur, facilior est ordo magnitudinis. Etiam sit amet tempus nisi.

Haec methodus hoc exemplo optime explicatur.

Olim popularis fuit in utre navem colligere. Eodem tempore navis magna et fragilis est, et uter valde angusta est, impossibilis est intus impellere. Quomodo convenit?

Quomodo nos in Sportmaster ratio caching elegit. Pars I

Talis methodus, celerrime et efficax.

Navis fasciculum parvarum rerum constat: fustes, funes, vela, glutinum. Haec omnia in ampulla mittimus.
Utrem ambabus manibus accipimus et excutimus initium. Nos excutimus et excutimus eam. Plerumque fit purgamentum totum scilicet. Sed interdum. Interdum evenit ut navis sit! Accuratius simile quid navis.

Aliquid alicui hoc ostendimus: "Seryoga, vides!" e longinquo autem similis navis. Sed hoc perdurare non potest.

Alter est modus. Provectioribus latinas adhibentur, ut hackers.

Huic homini negotium dedi, omnia fecit ac reliquit. Et aspicis - simile factum est. Et post aliquantum, cum signum finale opus est, hoc ab eo incipit... Bonum est quod iam longe curritur. Hi guys sunt qui, exemplo amphorae, hoc faciunt: vides, ubi fundum est, vitrum flectit. Et non plane liquet utrum sit diaphanum vel non. Tum "hackers" hoc fundum abscindere, ibi navem inserere, iterum imum glute, et quasi id est quomodo futurum est.

Ex parte quaestionis constituendae, omnia recte esse videntur. Sed utens in exemplum: cur navem hanc omnino, quae usquam eget? Aliquam functionality non praebet. Tales fere naves sunt dona amplissimis hominibus, qui pluteo super eos, ut quaedam symboli, in signum imposuerunt. Et si talis est, dux magnae rei, vel summus officialis, quomodo stabit vexillum pro tali stragulo, cuius cervix excisa est? Utilius est si numquam sciret. Quomodo igitur hae naves evadunt quae magnae personae dari possunt?

Solus locus clavem quod vere non potest aliquid de corpore est. Et puppis navis recta in collo convenit. Navis autem extra utrem congregata est. Sed navem non convenit, verum ornamentum est. Accedunt speciales vectibus componentibus, quae tum levari sinunt. Exempli gratia, vela complicata, intus diligenter emissa, deinde, ope forpicum, exactissime adamussim trahuntur et elevantur. Effectus est artis opus quod conscientia pura et superbia donari potest.

Et si velimus propositum bene esse, saltem unus gemmarius in manipulus esse debet. Ille qui qualitatem facti curat et omnia considerat, nihil immolat, etiam in momentis urgentibus, cum circumstantiae urgentem necessitatem maximi momenti faciunt. Omnia prospera incepta quae sustineri possunt, quae temporis experti sunt, hoc principio aedificantur. Est aliquid valde accuratum et singulare in illis, quod omnibus facultatibus promptis commodum est. In exemplum cum nave in utre, eo quod puppis navis per collum elatur.

Revertentes ad munus servientis eligendi nostri, quomodo haec methodus applicanda est? Hanc optionem eligendi praebeo ex omnibus systematibus quae sunt - utrem noli commovere, noli eligere, sed vide quid in principio habeant, quid exspectes cum systema eligendo.

Ubi quaerere collum utrem

Non conemur utrem, non omnia quae singillatim percurramus, sed videamus quae problemata oriantur si subito, nostro negotio, talem rationem ipsi moliamur. Utique non conveniemus cursoriam, sed hoc schemate utemur ut nos adiuvent quae puncta in descriptionibus productis operam dabimus. Talem schema delineamus.

Quomodo nos in Sportmaster ratio caching elegit. Pars I

Si ratio distribuitur, plures ministros habebimus (6). Quattuor esse dicamus (est eas in tabula ponere convenit, sed tamen tot esse possunt quot voles). Si ministri in diversis nodis sunt, significat eos omnes aliquos codicem currere, qui curam habent ut istae nodi glomerantur et, in eventu intermissione, inter se coniungant et cognoscant.

Opus est etiam codice logicae (2), qui est actu caching. Clientes penitus cum hoc codice per aliquot API. Cliens codici (1) potest vel intra idem JVM esse vel per reticulum accedere. Ratio intus perficienda est sententia cuius obiecti discedendi in cella et quae eiciendi. Memoriam adhibemus (3) ad thesaurum recondendum, sed si opus est, aliquas notitias in orbe terrarum servare possumus (4).

Videamus in quibus partibus onus fiat. Nam omnis sagitta et omnis nodi oneratur. Uno modo, inter codicem clientem et api, si communicatio retis est, subsidentia satis notabilis esse potest. Secundo, intra ipsius api compagem - si eam multiplici logica superamus, in problemata cum CPU currere possumus. Et pulchrum esset si logicae tempus memoriae non tereret. Et restat commercium cum tabella systematis - in versione vulgari hoc serialize / restituo et scribe / legitur.

liinc commercium cum botro. Verisimile erit in eadem ratione, sed potest esse separatim. Hic etiam debes considerare translationem notitiarum, celeritas serializationis et interactionum inter botrum datarum.

Nunc, una ex parte, fingere possumus "quid anni vertent" in systemate cella cum petitiones ex codice nostro dispensando, et vicissim aestimare possumus quid et quot petitiones codicis nostri huic systemati generabunt. Hoc satis est ad electionem plus minusve sobriam faciendam - systema pro casu nostro utendi eligendi.

corylus

Videamus quomodo compositionem hanc ad album nostrum applicemus. Veluti Hazelcast.

Ut notitias ex Hazelcaste ponerent, accessiones codicis huius api (1) api. Hz permittit te ut servo embedded currere, et in hoc casu accessus api methodus intra JVM voca, quae libera considerari potest.

Ut ad logicam in (2) laborandum, Hz innititur e byte ordinatae clavis serialisatae - hoc est, clavis in aliquo casu serialized erit. Necessarium est supra caput Hz.
Consilia evictionis bene perficiuntur, sed ad casus speciales tuos potes addere. De hac parte solliciti non est.

Repono (4) coniungi potest. Magna. Commercio (5) enim immersa instanter considerari potest. Data commutatio inter nodos in botro (6) - Immo exstat. Haec est collocatio in culpa tolerantiae inpensa celeritatis. Hz pluma Prope-cache te permittit reducere pretium - notitia ex aliis nodi acceptis in botro conditivo erit.

Quid his conditionibus fieri potest ut celeritas augeatur?

Exempli gratia, ne serialization clavis in (2) - aliud cella super Hazelcast adiungat, notitia calidissima. Sportmagister Julius ad hoc elegit.

Ad planum retorquens (6), Hz duo genera repositionis praebet: IMap et ReplicatedMap.
Quomodo nos in Sportmaster ratio caching elegit. Pars I

Memorabilis est quomodo Hazelcast in acervum technologiae lusorium obtinuit.

Anno 2012, cum in ipso primo gubernatore loci futuri laboraremus, Hazelcast fuit qui evasit primum nexum quem quaero engine reddidit. Cognitio incepit "primum tempus" - capti sumus eo quod mox duabus horis post, cum Hz in systema advenisti, laboravit. Et bene laboravit. In fine diei compluribus probatis peregimus et laeti eramus. Atque haec subsidia vigoris satis erat ad superandas admirationes, quas Hz per tempus proiecerat. Nunc ipsum dolor sit amet, consectetuer Hazelcast nulla ratione ut deserunt.

Talia autem argumenta quae "primum vinculum in quaestionis machinae" et "HelloWorld celeriter convenerunt", sunt, utique, exceptio et notio momenti quo electio facta est. Verae probationes pro electo systemate a solutione in productionem incipiunt, et in hoc statu attendere debes cum rationem aliquam eligens, etiam cache. Profecto in nostro casu dicere possumus quod per accidens elegit nos Hazelcast, sed tunc evenit ut recte eligeremus.

Ad productionem, multo maiora: vigilantia, in singulis nodis defecta tractans, replicatio data, scalis sumptus. Hoc est, operae pretium esse animadvertere ad operas quae in sustentatione systematis oriuntur - cum onere decies plus quam institutum est, cum aliquid in loco iniquum aliquid incurrimus, cum novam versionem evolvere necesse est. de codice, repone data et ea clam clientibus.

Ad haec omnia requisita, Hazelcast libellum certe convenit.

Tertia pars sequetur

Sed Hazelcast non est panacea. Anno MMXVII, Hazelcast admin cache elegit, simpliciter bonas impressiones ab experientia praeterita. Hoc munere fungebatur crudelissimo ioco, propter quod nos in difficili situ invenimus et "heroice" ex eo evecti sunt per LX dies. Sed plura in altera parte.

Interea... Felix Novus Codex!

Source: www.habr.com

Add a comment