De movendo a Redis ad Redis botri

De movendo a Redis ad Redis botri

Veniens ad opus quod plus quam decennium evolvere est, minime mirum est in eo technologias iam datas invenire. Sed quid, si sex menses habeas onus 10 pluries, et sumptus lapsorum multiplicabis centies? In hoc casu, te ipsum Highload frigidum debes. Absente autem ancilla, rem solvendam mihi mandaverunt. In prima parte articuli dicam tibi quomodo movimus de Redis usque ad Redis-botrus, et in secunda parte consilium dabo quomodo incipias utendo botro et quid attendere ad utendo.

Technologiae selectio

An hoc malum est? separatum Redis (standalone redis) in configuratione 1 domini et N servorum? Cur technologiam obsoletam voco?

Imo, Redis non est malum illud.

  • Primum, Redis non sustinet calamitatem recuperationis machinae post dominum defectum. Ad hanc problema solvendam conformationem latis translationis VIPs ad novum dominum usi sumus, mutando munus unius servi et mutandi reliquorum. Haec mechanismus laboravit, sed certa solutio dici non potuit. Uno modo, ficti terrores, et secundo, quod disponibile erat, et post operationem manualem, quae requirebatur ad accusandum fontem.

  • Secundo, unum tantum dominum duxi ad quaestionem de sharding. Plures glomerulos independens "1 dominum et N servos" creare debebamus, tum manualem databases inter has machinas distribuere et speramus cras unum e databases tantum non intumescere ut ad singularem instantiam moveatur.

Quae optiones meus es tu!

  • Pretiosissima et ditissima solutio est Redis-Inceptum. Haec solutio cohibenti cum auxilio technico plena est. Quamvis id quod ex technicis prospectibus specimen spectat, rationum ideologicarum nobis non convenit.
  • redis-botrus. Ex archa subsidium est domino deficienti et shardingi. Interfacius non fere differt a versione regulari. Spectat promissum, de foveis postea loquemur.
  • Tarantool, Memcache, Aerospike et alii. Omnia haec instrumenta idem fere faciunt. Sed unusquisque defectus suos habet. Non decrevimus omnia ova nostra in uno canistro ponere. Memcache et Tarantool utimur ad alia negotia et prospiciens dicam in usu nostro plures difficultates cum illis fuisse.

Specimina usuum

Videamus quae problemata historice solvimus cum Redis et quas functiones usi sumus:

  • Cache ante petitiones ad officia remota sicut 2GIS | Golang

    Set MGET MSET "SELECT DB"

  • Cache ante MYSQL | PHP

    Set MGET MSET EXAMINO "CLAVIS EXEMPLUM" "Select DB"

  • Summa repono pro servitio operandi cum sessionibus et coordinatis agitator | Golang

    Adepto MGET MSET "Select DB" "ADD GEO Key" "GET GEO CLAVIS" EXAMINO

Ut vides, nulla superiora mathematicis. Quid ergo difficultas? Singulos modos separatim inspiciamus.

modum
Description
Features of Redis botri
arbitrium

Get set
Scribere / legere clavis

MGET MSET
Scribere / legere plures claves
Claves in diversis nodis erunt. Bibliothecae paratae factae multi-operationes tantum intra nodi unam conficere possunt
Repone MGET cum pipeline de N GET res

SELECT DB *
Select the base will work with
Non plures databases support
Omnia in unum database. Addere praemittit claves

LEGO
Ite per omnes claves in datorum
Quia unum datorum habemus, per omnes claves in botro nimis carus est
Invariatum intra unam clavem tene et HSCAN in hac clave fac. Aut omnino nolunt

Geo
Res cum geokey
In geokey non est sharded

CLAVIS EXEMPLUM
Searching for a key by pattern
Cum unum datorum habemus, per omnes claves in botro quaerebimus. Nimis pretiosa
Negare vel conservare invariatum, ut in casu SCAN

Redis vs Redis botri

Quid amittimus et quid proficimus cum mutando in botrum?

  • Incommoda: functionalitatem plurium datorum amittimus.
    • Si in uno botro datas logice affinia velimus, fusum in forma praefixionum facere debebimus.
    • Omnes operationes "basilias" amittimus, ut Scan, DBSIZE, CLEAR DB, etc.
    • Multi operationes multo difficiliores factae sunt ad efficiendum quia accessum pluribus nodis requirere potest.
  • commoda:
    • Formam culpae tolerantiae dominum failover.
    • Redis Sharding in latere.
    • Data serie inter nodos atomice et sine tempore down.
    • Adde et redistribuere facultatem et onera sine downtime.

Concludam, si non opus est tolerantiae culpae providere, tunc movere ad botrum non valet, quia munus non leve esse potest. Sed si primum inter variam literam et botrum eligo, botrum eligas, quia non est deterius, et insuper aliquorum medebitur tibi medelam.

Praeparans movere

Sit scriptor satus cum requisitis ad movendum;

  • Seamless sit. Plena statio servitii pro 5 minutis nobis non convenit.
  • Salvus sit et pedetentim quam maxime. Volo aliquam potestatem in re publica habere. Nolumus omnia simul effundere et per bullam reverti orare.
  • Minima notitia damnum movens. Difficillimum esse intelligimus atomice movere, ut concedamus aliquam desyncronizationem inter notas regulares et aggregatas Redis.

Botrus sustentationem

Modo antequam movemur, cogitare debemus an botrum sustinere possimus;

  • CHARTA. Prometheus et Grafana utimur ad graphes CPU onere, memoria usu, clientium numero, numero GET, SET, AUTH operationibus, etc.
  • PERITIA. Finge cras habebis botrum magnum sub officio tuo. Si fregerit, nemo nisi reficere potes. Si tardius incipit, ad te quisque curret. Si opibus addere vel onere redistribuere debes, ad te redi. Ut 25 ne canescant, his casibus providere convenit et in antecessum deprime quomodo technologiae sub aliquibus actionibus se gerant. De hoc fusius in sectione "Peritia" dicamus.
  • Cras ac suscipit ipsum. Botrus cum deiecerit, vis primum scire. Hic nos ad notificationem limitamus omnes nodos easdem informationes reddere de statu botri (sic, aliter accidit). Aliae quaestiones citius animadverteri possunt per officia clientium summis ab Redis.

transiebat

Quomodo movebimus;

  • Imprimis bibliothecam parare debes cum botro laborare. Ire-redis ut fundamentum in versionis Go cepimus ac parum mutavimus ut nobis conveniat. Multi methodos per fistulas implevimus, et regulas quoque leviter emendavimus ad petitiones iterandas. Versio PHP plures difficultates habuit, sed tandem in php-redis consedimus. Botrus nuper introductus favet et spectat bonum ad nostram sententiam.
  • Deinde ipsum botrum explicas. Hoc proprie fit in duobus praeceptis ex fasciculi conformatione. De ambitu infra disseremus.
  • Gradatim enim movendo siccis modo utimur. Cum bibliothecae versiones duas habeamus eodem instrumento (unam pro versione regulari, alteram pro botro), nihil constat ad tegumentum efficiendum quod cum versione separata et in duplicata parallela omnes petitiones botri laboret; respondeo et scribe discrepantiam in lignis (in nostro casu in NewRelic). Ita, etsi botrus litera in rollout erumpit, productio nostra non afficietur.
  • Botrum in sicco modo evolutum, discrepantias responsionis graphium placide intueri possumus. Si error tarde certe, sed certe in parva aliqua constanti, omnia denique sunt. Cur adhuc discrepant? Quia notatio in versione separata paulo ante quam in botro occurrit, et ob microlag, notitia divergere potest. Reliquum est videre omnia discrepantia, et si omnia per non atomicam recordi explicantur, tunc movere possumus.
  • Nunc siccum modum in oppositum commutare potes. Scribemus et legemus ex botro, et duplicemus illud in versione separata. Quod? In altera hebdomade opus botri observare velim. Si repente evenit ut problemata in summo onere essemus aut aliquid in ratione non habuimus, semper in vetusto codice ac notitia currenti per siccum modum reverti debebimus.
  • Reliquum est ut versionem separatam deprimat modus siccus et deprimat.

Expertise

Primo breviter de botri consilio.

In primis, Redis est clavis pretii copia. Chordae arbitrariae ut claves sunt. Numeri, chordae, et integrae structurae uti valores possunt. Ex his permulta sunt, sed ad intelligendum communem structuram hoc non pertinet ad nos.
Proximus gradus abstractionis post claves sunt foramina (slots). Quaelibet clavis ad unam foramina 16 pertinet. Numerus clavium intra quamlibet socors esse potest. Ita omnes claves in 383 disiunctionis occasum dividuntur.
De movendo a Redis ad Redis botri

Deinceps nodes N magister in botro esse debet. Quaelibet nodi cogitari potest de instantia Redis separati, quae omnia de aliis nodi intra botrum cognoscit. Quilibet magister nodi plures foramina continet. Quaeque socors ad unum solum nodi dominum pertinet. Omnes foramina inter nodos distribuenda sunt. Si foramina aliqua non sortiantur, claves in eis repositae inaccessibiles erunt. Sensum efficit ut uterque dominus nodi currendi in machina logica vel physica separata. Memorabile quoque est quod singula nodi tantum in unum nucleum decurrunt, et si vis multiplices Redis instantiarum in eadem machina logica currere, fac discurrere in diversis nucleis (non hoc temptavimus, sed in theoria illa debet operari) . Per se, dominus nodi nodos regulares providebit, et plures nodos magistri permittunt scribere et legere petitiones scalare.

Postquam omnes claves inter foramina distributa sunt, et foramina inter nodos domini dispersa sunt, arbitrarius numerus nodis servi singulis nodi domini addi possunt. In unaquaque tali nexu cum domino servi, replicatio normalis laborabit. Servi opus est ut petitiones legent et pro defectu in casu domini deficiant.
De movendo a Redis ad Redis botri

Nunc de operationibus utilius agere possimus.

Systema per Redis-CLI accedemus. Cum Redis unicum aculeum non habet, sequentes operationes in quolibet nodis exercere potes. Singulis in locis animum adverto facultatem agendi sub onere operandi.

  • Primum ac maximum opus est operatio nodis botri. Redit status botri, ostendit elenchum nodis, eorum munerum, rima distributio, etc. Plura haberi possunt utens botrus info et gregarius foramina.
  • Pulchrum esset nodes addere et removere posse. Ad eam rem sunt glomerati obviam et botrum immemores operationes. Quaeso note quod botrus obliviosus applicandus est ad omnem nodi, tam domini quam ad replicas. Et botrum tantum dignum est, ut in una node vocetur. Differentia haec incomperta esse potest, ut melius sit discere prius quam abeas vivere cum botro tuo. Nodus additus tuto in pugna fit et operationem botri nullo modo afficit (quod logicum est). Si nodi e botro removere incipias, fac debes nullas foramina in eo relicta esse (aliter accessum ad omnes claves in hac nodo amittendas). Item, dominum qui servos habet ne deleat, alioquin novum dominum suffragium supervacaneum faciet. Si nodi non iam foramina habent, tunc haec parva quaestio est, sed quid opus est extra electiones si servos primum delere possumus.
  • Si opus fortiter permuto domino et servo dignitates, tum botrum omiserit mandatum faciet. Cum vocantem in bello, debes intelligere quod dominus in operatione non praesto est. Typice transitum minus quam alterum incidit, sed atomicum non est. Exspectare potes quod in hoc tempore aliquae petitiones ad dominum deficiant.
  • Priusquam nodi a botro removeantur, nulla foramina super eo relicta sunt. Melius est illis redistribuere utentes mandatum botri reshard. Foramina ab uno domino in alium transferentur. Tota operatio plures minutas capere potest, ex volumine translationis notitiarum dependet, sed processus translationis tuta est nec operationi botri ullo modo afficit. Ita omnes notitiae ab uno nodo in alium immediate sub fasce transferri possunt, et sine cura de eius promptitudine. Sed sunt etiam argutiae. Uno modo, data translatio coniungitur cum onere nodis recipientis et mittentis. Si nodi recipiens in processu iam graviter onustus est, tunc eam novis acceptionibus non onerare debes. Secundo, cum primum misso domino non remanet una socors, omnes servi ejus statim ad dominum eunt, ad quem haec foramina transferuntur. Et dubium est, quod hi omnes servi notitia statim synchronizem volent. Et felix eris si partialis magis quam plena synchronisatio est. Hanc rationem accipe et compone operationes foramina transferendi et servi inactivare / transferendi. Vel spero te satis tuto habere.
  • Quid faceres, si in translatione invenias te alicubi foramina amisisse? Spero hanc quaestionem non tangit te, sed si facit, est botrus fix operandi. Saltem, foramina per nodos temere sparget ordine. Commendo reprehendo operationem eius primum nodi removendo foramina ex botro distributa. Cum notitia in foraminibus incomplexis iam perpendat, nimis sero est de problematibus de promptu harum foraminibus solliciti. Vicissim foramina distributa operatio non pertinet.
  • Alius utilis operandi monitor est. Permittit te videre in reali tempore totum petitionum album ad nodo euntem. Etiam illud comprehendere potes, si opus est negotiandi causa.

Hoc quoque domino failover dignum memoratu agitur. Denique est, et, ut arbitror, ​​magna facit. Tamen, ne putes, si funiculum potentiae machinae cum magistro nodo unplug, Redis statim transibit et clientes damna non animadvertunt. In usu meo, commutatio fit in brevi. Hoc tempore, nonnulla notitia perpendendi erit: domini inevitabilitas deprehensa est, nodi suffragium novum, servi switched, notitia synchronizata est. Optime fac tibi ut schema laborat exercitia localia. Botrum excita in laptop tuo, minimum oneris da, ruinam simula (exempli gratia, portuum claudendo), et celeritatem mutandi expende. Opinor, solum post hoc modo diem alterumve ludens confidere potes in operatione technicae artis. Bene, vel speres quod programmata media interreti probabiliter utitur opera.

configuratione

Saepe conformatio prima est quae opus est instrumento incipere. Et cum omnia operantur, ne quidem config attingere vis. Aliquid molitur ad cogendum te redire ad occasus et per eas diligenter. In memoria mea habuimus saltem duos graves errores ob incuriam figurarum. Sedulo attende ad sequentia puncta:

  • X timeout
    Tempus post quod clausi sunt quies hospites (in secundis). 0 - non claudere
    Non omnis bibliotheca nostra hospites recte claudere poterat. Hoc occasum inactivare periclitamur limitem numero clientium ferire. Contra, si talis quaestio est, tunc latae terminationis amissarum coniunctionum larvam sustinebunt, nec animadvertere possumus. Praeterea hoc institutum cum necessariis persistere non possis.
  • Salvum xy & apponendo sic;
    Salvo RDB snapshot.
    RDB/AOF quaestiones infra singillatim agemus.
  • stop, scribit-in-bgsave-error non & ancillae serve-nota data sic
    Si enabled, si RDB snapshot frangit, dominus mutationem postulationum accipere desinet. Si nexum ad dominum amittitur, servus precibus respondere pergit (sic). Aut respondebunt prohibere (non)
    Laeti non sumus cum situ in quo Redis in cucurbita vertit.
  • repl-ping-servus tempus 5
    Post hoc tempus, solliciti incipiemus dominum fractum esse et tempus est agendi rationem deficientis exsequi.
    Manually stateram inter positivos falsos et fallacem invenire debebis. In praxi nostra haec 5 secundis est.
  • repl-backlog-size 1024mb & epl-backlog-ttl 0
    Prorsus hanc multam datam reponere possumus in quiddam ob imaginem fallacem. Si quiddam decurrit, omnino synchronizare debebis.
    Usu suggerit melius esse ut pluris statuatur. Causae multae sunt cur a imagine pigri incipiant. Si defecerit, tum verisimillimum est dominus tuus iam obire obluctans, et plena synchronisatio novissima palea erit.
  • maxclients 10000
    Maximum numerum unius temporis clientium.
    Apud nos melius est pluris aestimare. Redis tractat 10k hospites modo denique. Modo fac satis bases in systemate.
  • maxmemory-consilium volatile-ttl
    Regula qua claves deletae sunt cum modus memoriae praesto est.
    Hic non refert regulam ipsam, sed intellectum quomodo fiet. Redis laudari potest eius facultas regulariter laborandi cum ad memoriam terminum pervenerit.

RDB et AOF difficultates

Etsi Redis ipsa omnia informationes in RAM recondit, etiam mechanismus est ad notitias orbis servatas. Accuratius tres machinationes;

  • RDB-snapshot - plena omnium notitiarum snapshot. Pone utens configuratione conserva XY et legit "Save plenam snapshot omnium notitiarum omnium X secundis, si saltem Y claves mutatae sunt."
  • Appendice tantum fasciculus - index operationum ordine peraguntur. Novas operationes advenientes addit tabella singulis X secundis vel singulis Y operationibus.
  • RDB et AOF composita ex duobus prioribus.

Omnes modi commoda et incommoda sua habent, omnes non enumerabo, solum admoneo quae, ut mea fert opinio, non sint perspicua.

Primum, servata RDB snapshots postulat vocantem FURCA. Si data est sors, haec omnia Redis suspendi potest per spatium paucorum millium secundorum ad alterum. Praeterea ratio in memoriam collocare debet pro tali iaculatorio, quod ducit necessitatem ut duplicem copiam RAM in machina logicali custodiat: si 8 GB partita sint pro Redis, tunc 16 GB praesto sit in machina virtuali cum illud.

Secundo sunt problemata synchronisationum partialium. In AOF modo, cum servus coniungitur, loco synchronisationis partialis, plena synchronisatio praestari potest. Quare hoc fiat, non potui intelligere. Sed hoc memorabile est.

Haec duo puncta iam nos consideremus num re hac notitia in orbe indigeamus si omnia iam a servis duplicata sunt. Data nonnisi amitti possunt si omnes servi deficiunt, et haec quaestio est "ignis in DC" gradu. Compromissum, proponere potes ut servis tantum notitias serves, sed in hoc casu fac necesse est ut servi in ​​calamitate recuperationis domini numquam fiant (hoc enim in config servo prioritas est). Nosmet ipsi in singulis casibus cogitamus utrum necessarium sit ut notitia orbis servetur, et saepissime respondetur "nullus".

conclusio,

Demum spero me generalem notionem dare potuisse quomodo racemorum opera pro iis qui id omnino non audiverunt, ac etiam nonnullas notiones non perspicuas pro iis qui ea usi fuerunt, animum advertere. iamdudum.
Gratiae pro tempore tuo et, ut semper, gratissimi argumenti commentantur.

Source: www.habr.com

Add a comment