sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB lastbalansering i flera AWS-instanser

Det här kommer inte att vara ett fullständigt svar, det finns för många detaljer och jag skulle kunna skriva en hel uppsats om den här frågan precis som många andra, men eftersom jag inte har så mycket tid över kommer jag att lägga till några kommentarer om vad jag ser.

Replika set är inte designade för att fungera så. Om du vill ha lastbalans kanske du faktiskt letar efter sönderdelning som gör att du kan göra detta.

Replikering är för automatisk failover.

Eftersom, för att hålla dig uppdaterad, dina medlemmar kommer att få lika många ops som den primära, verkar det som att det här kanske inte hjälper för mycket.

I verkligheten, istället för att ha en server med många anslutningar i kö, har du många anslutningar på många servrar som står i kö för inaktuella data eftersom medlemskonsistensen är eventuell, inte omedelbar till skillnad från ACID-tekniker, men som sagt att de bara så småningom är konsekventa med 32 ms vilket betyder att de inte släpar tillräckligt för att ge anständig genomströmning om den primära är laddad.

Eftersom läsningar ÄR samtidiga kommer du att få samma hastighet oavsett om du läser från primär eller sekundär. Jag antar att du kan fördröja en slav för att skapa en paus med OPs, men det skulle ge tillbaka massivt inaktuella data.

För att inte nämna att MongoDB inte är multi-master som sådan kan du bara skriva till en nod i taget gör slaveOK inte till den mest användbara inställningen i världen längre och jag har sett många gånger där 10gen själva rekommenderar att du använder sharding över denna inställning.

Detta skulle kräva din egen kodning. Då kanske du vill överväga att faktiskt använda en databas som stöder http://en.wikipedia .org/wiki/Multi-master_replication

Detta beror på att hastigheten du letar efter mest sannolikt är i skrivningar inte läser som jag diskuterade ovan.

Detta är det rekommenderade sättet men du har hittat varningen med det. Detta är tyvärr något som förblir olöst som multimasterreplikering är tänkt att lösa, men multimasterreplikering lägger till sitt eget skepp av pestråttor till själva Europa och jag skulle starkt rekommendera att du gör några seriösa efterforskningar innan du tänker på om MongoDB kan för närvarande inte betjäna dina behov.

Du kanske inte oroar dig för någonting egentligen eftersom fsync-kön är utformad för att hantera IO-flaskhalsen som saktar ner dina skrivningar som det skulle göra i SQL och läsningar är samtidiga så om du planerar ditt schema och arbetssätt rätt bör du kunna få en massiv antal OP.

Det finns faktiskt en länkad fråga här från en 10gen anställd som är mycket bra att läsa:https:/ /stackoverflow.com/a/17459488/383478 och det visar hur mycket genomströmning MongoDB kan uppnå under belastning.

Det kommer snart att växa med den nya dokumentnivålåsningen som redan finns i dev-grenen.



  1. Redis - Befordra en slav till master manuellt

  2. att använda :=ger oanvänt fel men att använda =inte i Go

  3. Mongo Query med Regex i Node JS som arbetar PÅ EN VARIABEL

  4. Behöver en distinkt räkning på flera fält som har sammanfogats från en annan samling med hjälp av mongodb aggregeringsfråga