sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose vytvoří připojení pro podporu více nájemců v node.js

Nedoporučoval bych ručně vytvářet a spravovat tato samostatná připojení. Neznám podrobnosti o vašich požadavcích na více nájemců (počet nájemců, velikost databází, očekávaný počet transakcí atd.), ale myslím, že by bylo lepší použít něco jako Funkce Mongoose useDb . Mongoose pak zvládne všechny podrobnosti o fondu připojení.

aktualizovat

Prvním směrem, který bych prozkoumal, je nastavení každého tenanta na samostatném procesu uzlu. Provozování vašich tenantů v samostatných uzlových procesech má několik zajímavých výhod. Dává to smysl z hlediska zabezpečení (izolovaná paměť) a z hlediska stability (selhání jednoho procesu tenanta neovlivní ostatní).

Za předpokladu, že nájem zakládáte na adrese URL, nastavili byste proxy server před skutečnými servery tenanta. Jeho úkolem by bylo podívat se na URL a nasměrovat na správný proces na základě těchto informací. Toto je velmi přímočarý node http proxy založit. Každá instance tenanta může být úplně stejná kódová základna, ale spouštěná s jinou konfigurací (která jim říká, jaký mongo připojovací řetězec použít).

To znamená, že můžete navrhnout svou skutečnou aplikaci, jako by nebyla pro více nájemců. Každý proces zná pouze jednu mongo databázi a není nutná žádná logika pro více nájemců. Umožňuje vám také snadno rozdělit provoz později podle zatížení. Pokud potřebujete rozdělit tenanty z důvodu výkonu, můžete to udělat transparentně na úrovni proxy. Všechny DNS mohou zůstat stejné a server, na kterém jsou instance, můžete přesunout do zákulisí. Můžete dokonce nechat proxy vyrovnat požadavky na tenanta mezi více servery.




  1. Agregát Mongoose, nelze dynamicky přidat nějakéPole:{ $not; nula }

  2. získejte kontejner python docker pro interakci s kontejnerem redis docker

  3. Jak deaktivovat flapdoodle embedded mongodb v určitých testech

  4. MongoDB $geoNear agregační kanál (pomocí možnosti dotazu a pomocí operace $match pipeline) poskytující různý počet výsledků