Я пытаюсь определить архитектуру производственного сегментированного сервера mongoDB, я вижу в документации, что каждый сегмент должен содержать 3 набора реплик. Я хотел бы иметь преимущества сегментирования (возможность вычислять распределенные запросы в узлах в зависимости от ключа сегмента) и функциональность аварийного переключения репликации, но при этом сокращая бюджет (и количество серверов).
Идея состоит в том, чтобы использовать небольшие машины с 7 ГБ ОЗУ и 2 ядрами 2 ГГц:
Я искал и обнаружил, что некоторые люди устанавливали разные реплики узлов, разделяющих шарды, в следующей схеме:
Server 1: shard1, rep-shard2, arbitrer3
Server 2: shard2, rep-shard1, arbitrer2
Server 3: shard3, rep-shard2, arbitrer1
Я пробовал это с помощью докера, и он работает, однако я не знаю, могут ли у меня проблемы с производительностью, если я использую тот же узел, что и набор реплик и осколок.
Другой вариант - использовать 4 кластера и 2 осколка со следующей схемой, которая мне не очень нравится (1 узел больше, 1 осколок меньше), но, возможно, было бы лучше с точки зрения производительности.
Server1: shard1,
Server2: rep-shard1 arbitrer2
Server3: shard2,
Server4: rep-shard2 arbitrer1