mongocxx::client vs mongocxx::pool
Un mongocxx::client independiente utiliza un algoritmo de un solo subproceso para supervisar el estado del clúster al que está conectado. Al conectarse a un conjunto de réplicas, el subproceso detiene el funcionamiento cada 60 segundos para comprobar el estado del clúster. Un mongocxx::pool, por otro lado, utiliza un subproceso en segundo plano independiente para cada servidor del clúster, cada uno de los cuales comprueba el estado del servidor que supervisa cada 10 segundos. Debido a las ventajas de rendimiento que ofrece supervisar el clúster en segundo plano en lugar de detenerlo, se recomienda encarecidamente utilizar un mongocxx::pool en lugar de un conjunto de clientes independientes si la aplicación tiene acceso a varios subprocesos, incluso si solo utiliza uno.
Grupos de conexiones y seguridad de subprocesos
Un mongocxx::pool puede compartirse entre varios subprocesos y usarse para crear clientes. Sin embargo, cada mongocxx::client solo puede usarse en un único subproceso. Consulte la Documentación de seguridad de subprocesos para obtener detalles sobre cómo usar un mongocxx::client de manera segura para subprocesos.
Configuración de un grupo de conexiones
La cantidad de clientes en un grupo de conexiones se determina mediante los parámetros URI minPoolSize y maxPoolSize. Las opciones minPoolSize y maxPoolSize establecen los objetivos de uso de recursos cuando el controlador está inactivo o se utiliza por completo. Cuando se utiliza por completo, hay disponibles hasta el tamaño máximo de cliente del grupo. Cuando los clientes se devuelven al grupo, se destruyen hasta que este se reduce al tamaño mínimo del grupo.
maxPoolSize | El número máximo de clientes creados por un mongocxx::pool (tanto en el pool como extraídos). El valor predeterminado es 100. Una vez alcanzado, mongocxx::pool::acquire se bloquea hasta que otro subproceso devuelva un cliente al pool. |
minPoolSize | Establece un tamaño objetivo para el grupo cuando está inactivo. Una vez creado este número de clientes, nunca habrá menos de este número en el grupo. Si se crean clientes adicionales por encima del tamaño mínimo del grupo (minPoolSize), se destruirán al regresar al grupo. El valor predeterminado es "0", lo que deshabilita esta función. Cuando está deshabilitada, los clientes nunca se destruyen. |
Uso de un pool de conexiones
Para usar un pool de conexiones, primero cree un mongocxx::pool y pase la URI como argumento. Luego, llame a mongocxx::pool::acquire para recibir un cliente del pool. El cliente se devolverá automáticamente al pool cuando salga del ámbito.
Vea el Ejemplo de grupo de conexiones para obtener más detalles.