Sfondo
Stiamo costruendo una soluzione web che verrà utilizzata a livello globale. Per supportare l'eventuale pubblico di destinazione stiamo cercando di progettare la soluzione in modo che sia ospitata in 3 diversi data center. gli utenti verranno indirizzati al server più vicino in base ai dati sulla posizione.
Detto questo, per iniziare, implementeremo questa soluzione solo su un datacenter e solo gli utenti del Nord America avranno a disposizione questa soluzione.
Set tecnologia
MongoDB e RethinkDB sono stati abbreviati per il database. Abbiamo bisogno di qualcosa che consenta la replica multi-master, dal momento che dobbiamo essere in grado di leggere e scrivere sul database da qualsiasi data center.
problema
La direzione vuole qualcosa consegnato in due settimane. La solita solita storia. Loro ci hanno commesso ... sotto personale ecc.
Devo trovare un design che sia a prova di futuro. Non ho ancora familiarità con MongoDB per essere certo di aver identificato tutti i pezzi che ho bisogno di consegnare in questo momento e di essere ancora a prova di futuro.
La progettazione fino alla data
A partire da ora, ho intenzione di configurare ogni data center come "zona" mongodb. In ogni zona, avrò un frammento primario in questo modo:
Zona Nord America - Shard A Zona europea - Shard B Asian Zone - Shard C
Ogni frammento verrà replicato nelle altre 2 zone. Quindi Shard A farà parte di un set di repliche e quindi in Europa e in Asia, avrò una copia del frammento A.
Non sono ancora abbastanza sicuro su come progettare la chiave shard. Sto pensando ai nomi dei paesi perché avrò a disposizione dati sulla posizione come quelli a mia disposizione. Quando vedo una richiesta provenire dal Giappone, gli mando la "asia" dc, ma se viene dalla Francia, colpirà la DC europea.
Domande specifiche
- puoi creare una chiave shard in base al nome di un paese?
- quanti router mongos ho bisogno? Ne ho bisogno uno in ogni data center?
- Qual è il numero consigliato di server di configurazione?
Tp start, creerò le 3 zone ... con shard A solo per il nord americano. E replicherò (replicaset) il frammento A nelle altre 2 zone. Se ci sono delle cose speciali che devo considerare visto che ho in programma di aggiungere altri frammenti primari in seguito .. per favore fatemelo sapere.
Sto ancora rimuginando le cose quindi sono sicuro che ci sono domande che dovrei chiedere a cui non ho ancora pensato. Se avete commenti o suggerimenti, sono tutto orecchie. Grazie