mongodb: conjunto de réplicas com balanceador de carga

9

Existe uma opção para balanceamento de carga com conjuntos de réplicas mongodb? Não estou pedindo um HAProxy ou similar, mas um recurso interno do mongodb. Não foi possível encontrar dicas para isso nos documentos.

ledy
fonte

Respostas:

11

Se você estiver usando sharding, o "balanceador de carga" é o processo mongos - na verdade, é mais como um roteador - mantém uma cópia na memória do banco de dados de configuração e pode tomar decisões com base na chave shard.

Se você quer dizer balanceamento de carga entre conjuntos de réplicas idênticos ou entre os membros do conjunto, há uma solicitação de recurso para que os mongos lidem com esse cenário também ( https://jira.mongodb.org/browse/SERVER-1594 ), no entanto como os drivers operam, não é realmente necessário (porém, tornaria os drivers menos complexos).

Em um único conjunto de réplicas, você não pode distribuir gravações, todas elas devem ir para o primário. Você já pode distribuir leituras para os secundários, via Preferências de leitura, conforme julgar apropriado. O motorista acompanha o que é primário e o que é secundário e encaminha as consultas adequadamente.

Adam C
fonte
2

O 'balanceamento de carga' é alcançado via sharding. Ao fragmentar, você realmente distribui gravações / atualizações em fragmentos individuais. Não existe um algoritmo específico que faça isso, pois o mongo permitirá particionar os dados com base na combinação de teclas que você deseja. Os melhores algoritmos de partição são aqueles que possuem um composto de entradas sequenciais mais um aleatório.

Por exemplo, um ID do usuário pode ser particionado da seguinte maneira

xx-sha1(user email) 
xx = time sequence

Esteja ciente de que, para implementar o sharding, você precisa ter três servidores de configuração e os nós de dados. Os nós de dados podem ser agrupados em conjuntos de réplicas para redundância e podem ser usados ​​(somente se você puder) para ler dados de secundários. Digo apenas se você puder ler os dados porque a replicação é feita de forma assíncrona, portanto não há garantia de que os novos dados estejam disponíveis no momento da consulta nos secundários.

Lembre-se de que o algoritmo de partição depende totalmente de você e deve atender às necessidades do seu aplicativo. Além disso, você deve considerar se deseja apenas escrever os dados e apenas ter leituras ocasionais ou se precisa lê-los logo após escrevê-los.

silviud
fonte