Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Supervisión del clúster

Esta guía le muestra cómo usar el controlador de Scala para supervisar eventos de detección y monitorización de servidores (SDAM) en una instancia de MongoDB, un conjunto de réplicas o un clúster fragmentado. Estos eventos se producen cuando se produce algún cambio en el estado de la instancia o el clúster de MongoDB al que está conectado.

El controlador de Scala define nueve eventos SDAM y proporciona las siguientes interfaces de oyente, que escuchan tres eventos SDAM cada una:

  • ClusterListener: Escucha eventos relacionados con cambios de topología, o cambios en el estado y estructura del clúster

  • ServerListener:Escucha eventos relacionados con cambios de servidores individuales

  • ServerMonitorListener: Escucha eventos relacionados con el latido o informa sobre el estado de la comunicación entre los miembros del set de réplicas

Puede utilizar información sobre eventos SDAM en su aplicación para comprender los cambios del clúster, evaluar el estado del clúster o realizar una planificación de capacidad.

Puedes acceder a los detalles sobre los eventos SDAM suscribiéndote a ellos en tu aplicación. Para suscribirse a un evento, cree una clase que implemente la interfaz ClusterListener, ServerListener o ServerMonitorListener. Luego, añade el listener a tu cliente configurando una instancia de MongoClientSettings y pasándola al constructor de MongoClient.

El siguiente código crea la clase TestClusterListener, que implementa la interfaz ClusterListener. La clase contiene los siguientes métodos para gestionar eventos relacionados con la topología:

  • clusterOpening(): Imprime un mensaje cuando el controlador se conecta por primera vez a un clúster

  • clusterClosed(): Imprime un mensaje cuando el controlador se desconecta de un clúster

  • clusterDescriptionChanged(): Imprime un mensaje sobre cambios en la disponibilidad de lectura y escritura del clúster

case class TestClusterListener(readPreference: ReadPreference) extends ClusterListener {
var isWritable: Boolean = false
var isReadable: Boolean = false
override def clusterOpening(event: ClusterOpeningEvent): Unit =
println(s"Cluster with ID ${event.getClusterId} opening")
override def clusterClosed(event: ClusterClosedEvent): Unit =
println(s"Cluster with ID ${event.getClusterId} closed")
override def clusterDescriptionChanged(event: ClusterDescriptionChangedEvent): Unit = {
if (!isWritable) {
if (event.getNewDescription.hasWritableServer) {
isWritable = true
println("Writable server available")
}
} else {
if (!event.getNewDescription.hasWritableServer) {
isWritable = false
println("No writable server available")
}
}
if (!isReadable) {
if (event.getNewDescription.hasReadableServer(readPreference)) {
isReadable = true
println("Readable server available")
}
} else {
if (!event.getNewDescription.hasReadableServer(readPreference)) {
isReadable = false
println("No readable server available")
}
}
}
}

Luego, suscríbete a la clase TestClusterListener configurando los ajustes para tu instancia MongoClient, como se muestra en el siguiente código:

val uri: ConnectionString = ConnectionString("<connection string>")
val settings: MongoClientSettings = MongoClientSettings
.builder()
.applyToClusterSettings((builder: ClusterSettings.Builder) =>
builder.addClusterListener(TestClusterListener(ReadPreference.secondary())))
.applyConnectionString(uri)
.build()
val client: MongoClient = MongoClient(settings)

Cuando ejecuta la aplicación, su suscriptor registra el evento SDAM y genera mensajes como el siguiente:

Cluster with ID ClusterId{value='...', description='...'} opening
Writable server available
Readable server available
Cluster with ID ClusterId{value='...', description='...'} closed

Se puede suscribirse a los eventos SDAM definiendo una clase que implemente la interfaz de escucha correspondiente al evento e incluya un método para procesar el evento. La siguiente tabla proporciona el nombre de cada evento SDAM, la interfaz de escucha que gestiona el evento y una descripción de cuándo se publica el evento:

Tipo de evento
Interfaz de escucha
Descripción

Evento de cambio de descripción del clúster

Se crea cuando la descripción de la topología cambia, como cuando se elige un nuevo primario.

Se crea cuando el driver se conecta por primera vez al clúster.

Se crea cuando el controlador se desconecta del clúster.

Se crea cuando cambia la descripción del servidor.

Se crea cuando se agrega un nuevo servidor a la topología.

Se crea cuando un servidor existente se elimina de la topología.

Se crea cuando el monitor del servidor envía un comando hello al servidor. Esta acción se denomina latido.

Se crea cuando el latido cardíaco tiene éxito.

Se crea cuando falla la señal de vida.

Para ver una lista completa de clases de supervisión de eventos, consulta el paquete evento en la documentación de la API de Java.

Para obtener más información sobre cualquiera de los métodos mencionados en esta guía, consulta la siguiente documentación de la API:

Volver

MongoDB búsqueda

En esta página