Quando eu uso um único mongos como 1.1.1.1:30000
, o driver retornará em 20ms para encontrar um lote de documentos.
Quando eu uso 1.1.1.1:30000,1.1.1.2:30000,1.1.1.3:30000
, custa 60ms , três vezes mais para devolver. (para encontrar o mesmo lote)
E quando uso 5 instâncias de mongos, 5 vezes mais.
É melhor usar mongos localmente, talvez. Mas por que?
Desculpe pela minha ignorância sobre o mongo. O que eu sei é que o cliente mongo é sempre descrito assim
mongoc_client_t é um tipo opaco que fornece acesso a um servidor MongoDB, conjunto de réplicas ou cluster fragmentado.
O que não pode explicar o que aconteceu e por que o driver mongo custa mais tempo usando mais nó mongos no uri assim:
mongocxx::client client_;
client_.reset(new mongocxx::client{mongocxx::uri{"1.1.1.1:30000,1.1.1.2:30000,1.1.1.3:30000"}});
...
mongocxx::read_preference read_preference;
read_preference.mode(mongocxx::read_preference::read_mode::k_secondary_preferred);
find_options.read_preference(read_preference);
auto collection = (*client_)["db"]["col"];
auto cursor = collection.find(filter_builder.view(), find_options);
...
PS: Todos os mongos se referem ao mesmo cluster.
Agora estou tentando depurar o driver mais recente.
Meus drivers neste caso:
mongo-c-driver:
#define MONGOC_VERSION_S "1.5.1"
driver mongo-cxx:
#define MONGOCXX_VERSION_STRING "3.1.1"
tempo de rede e latência :
1.1.1.1,1.1.1.2,1.1.1.3 todos na mesma sala
latência:
ping localhost 0.03ms
ping 1.1.1.2(from 1.1.1.1) 0.2ms
tamanho do lote: cerca de 100
find{"uid":{"$in":[1,2,3...,100]}}
uid é um índice garantido.