Acuerdo de nivel de servicio (SLA) para disponibilidad de Event Streams
Plan Estándar
El plan estándar de Event Streams proporciona una arquitectura de alta disponibilidad mediante el despliegue de la región de varias zonas. En una ubicación de varias zonas, el servicio Event Streams se distribuye en tres zonas de disponibilidad, lo que significa que el clúster tiene capacidad de recuperación ante el error de una sola zona o de cualquier componente de esa zona.
El servicio Event Streams se proporciona con disponibilidad de 99.99 % en el Plan Estándar. Para obtener más información sobre el SLA para servicios de alta disponibilidad en IBM Cloud®, consulte Acuerdos de nivel de servicio para IBM Cloud(nube pública).
Plan de empresa
El plan empresa de Event Streams proporciona una arquitectura altamente disponible mediante el despliegue de la región de varias zonas. En una ubicación de varias zonas, el servicio Event Streams se distribuye en tres zonas de disponibilidad, lo que significa que el clúster es resistente al error de una sola zona o de cualquier componente de esa zona.
En una implementación en una región con varias zonas, el servicio Event Streams se proporciona con una disponibilidad del 99.99 % en el plan Enterprise. Para obtener más información sobre el SLA para servicios de alta disponibilidad en IBM Cloud, consulte Acuerdos de nivel de servicio para IBM Cloud(nube pública).
Cuando el servicio Event Streams se ejecuta en una configuración que no es de alta disponibilidad, como en ubicaciones de zona única, la disponibilidad es del 99.9 %. Para obtener más información sobre el SLA para servicios no altamente disponibles en IBM Cloud, consulte Acuerdos de nivel de servicio para IBM Cloud(nube pública).
¿Cómo la medimos?
Las instancias de servicio se supervisan constantemente en cuanto a rendimiento, índice de errores y respuesta a operaciones sintéticas. Las paradas se registran. Para obtener más información, consulte Estado de servicio para Event Streams.
La disponibilidad se refiere a la capacidad de las aplicaciones para producir y consumir mensajes desde temas Kafka.
¿Qué se necesita tener en cuenta para alcanzar esta disponibilidad?
Para alcanzar altos niveles de disponibilidad desde la perspectiva de las aplicaciones, debe tenerse en cuenta la conectividad, el rendimiento y la coherencia y durabilidad de los mensajes. Los usuarios tienen la responsabilidad de diseñar sus aplicaciones para optimizar estos tres elementos para su negocio.
Conectividad
Debido a la naturaleza dinámica de la nube, las aplicaciones deben esperar interrupciones de la conexión. Una interrupción de la conexión no se considera una anomalía de servicio.
Reintentos
Los clientes de Kafka proporcionan lógica de reconexión, pero debe habilitar de forma explícita las reconexiones para los productores. Para más información, consulte la propiedad retries
. Las conexiones se restauran en 60 segundos.
Duplicados
La habilitación de los reintentos puede dar como resultado mensajes duplicados. Dependiendo de cuándo se pierde una conexión, es posible que el productor no pueda determinar si un mensaje ha sido procesado correctamente por el servidor y por lo tanto debe volver a enviar el mensaje al reconectarse. Diseñe aplicaciones para que esperen mensajes duplicados.
Si no se pueden tolerar duplicados, puede utilizar la característica de productor idempotent
(a partir de Kafka 1.1) para evitar duplicados durante los reintentos. Para más información, consulte la propiedad enable.idempotence
.
Productividad
El rendimiento se expresa como el número de bytes por segundo que pueden enviarse y recibirse en un clúster.
Orientación específica para el plan estándar
Para obtener información de orientación de rendimiento, consulte Límites y cuotas - Estándar.
Orientación específica para el plan empresa
Para obtener información de orientaciones para un mejor rendimiento, consulte Límites y cuotas - Empresa.
Medida
Instrumentar las aplicaciones para ser conscientes de cómo se están comportando. Por ejemplo, el número de mensajes enviados y recibidos, los tamaños de los mensajes y los códigos de retorno. Entender el uso de una aplicación le ayuda a configurar adecuadamente sus recursos, como por ejemplo el tiempo de retención de los mensajes por temas.
Saturación
A medida que se acerca al límite del tráfico que se puede producir en el clúster, los productores empiezan a ser regulados, aumenta la latencia y, en última instancia, se producen errores como los errores de tiempo de espera excedido. Según la configuración, es posible que también haya repercusión en la coherencia y la durabilidad de los mensajes. Para obtener más información, consulte Coherencia y durabilidad de los mensajes.
Coherencia y durabilidad de los mensajes
Kafka logra su disponibilidad y durabilidad al replicar los mensajes que recibe en otros nodos del clúster, que se pueden utilizar en caso de anomalía. Event Streams utiliza tres réplicas (default.replication.factor = 3), lo que significa que cada mensaje recibido por un nodo se replica en otros dos nodos en zonas de disponibilidad distintas. De esta forma puede tolerarse la pérdida de un nodo o de una zona de disponibilidad sin pérdida de datos ni de capacidades.
Modalidad de productor acks
Aunque todos los mensajes se replican, las aplicaciones pueden controlar la solidez con la que los mensajes que producen se transfieren al servicio utilizando la propiedad del modo de productor ( acks
). Esta propiedad proporciona
una opción entre la velocidad y el riesgo de perder mensajes. Con Kafka 3.0, el valor de cliente predeterminado es acks=all
(antes de esta versión era acks=1
). El valor acks=all
significa que el productor
devuelve un resultado satisfactorio, tan pronto como el intermediario al que está conectado y al menos otro intermediario en el clúster, ha reconocido que ha recibido el mensaje. La ventaja de utilizar acks=all
es que ofrece
el nivel más alto de durabilidad y, por lo tanto, protección contra la pérdida de datos de mensaje.
Réplicas en sincronización
En la configuración que Event Streams utiliza, Kafka elige un intermediario como líder para cada réplica de partición y otros dos intermediarios como seguidores. Los datos de mensaje de los clientes se envían al líder de la partición y se replican a los seguidores. Si los seguidores se mantienen al día con el líder, se consideran réplicas "en sincronización". El líder, por definición, siempre se considera que está sincronizado.
Si el líder de una partición deja de estar disponible, quizás debido al mantenimiento que se aplica al intermediario, Kafka elige automáticamente una de las otras réplicas en sincronización para convertirse en el nuevo líder. Este proceso se produce rápidamente y lo manejan automáticamente los clientes de Kafka.
Elecciones de líderes impuras
Event Streams inhabilita las elecciones de líder no limpias. Esta configuración no se puede cambiar.
El término elección de líder no limpia describe cómo Kafka responde en una situación en la que toda la réplica en sincronización para una partición deja de estar disponible. Cuando las elecciones de líder no limpias están habilitadas, Kafka se recupera haciendo que la primera réplica pase a estar disponible como líder para la partición, independientemente de si está sincronizada o no. Esto puede hacer que se pierdan datos de mensaje si la réplica seleccionada para ser líder no ha replicado todos los datos de mensaje del líder anterior. Cuando las elecciones de líder no limpias están inhabilitadas (como es el caso de Event Streams), Kafka espera a que una réplica en sincronización esté disponible y elige que sea el nuevo líder de la partición. Esto evita la posibilidad de pérdida de datos de mensaje que se puede producir cuando se habilitan elecciones de líder no limpias. La compensación es que la recuperación puede tardar más tiempo porque es posible que Kafka tenga que esperar a que un intermediario específico vuelva a estar en línea antes de que una partición esté disponible para que los clientes produzcan y consuman datos de mensajes.
Despliegues en ubicación de una sola zona
Si desea obtener la máxima disponibilidad, le recomendamos nuestros entornos públicos de alta disponibilidad que se han diseñado en nuestras ubicaciones multizona. En una ubicación multizona, nuestros clústeres de Kafka se distribuyen en 3 zonas de disponibilidad, lo que significa que el clúster es resistente al error de una sola zona o de cualquier componente dentro de dicha zona. Algunos clientes requieren una ubicación geográfica y, por lo tanto, desean aprovisionar un clúster de Event Streams s en una ubicación geográfica local pero de una sola zona. Event Streams admite este modelo de implementación, sin embargo, tenga en cuenta las siguientes compensaciones de disponibilidad:
-
En una ubicación de una sola zona, hay categorías de errores únicos que pueden dejar el clúster fuera de línea durante un período de tiempo. Por ejemplo, el error de todo un centro de datos o la actualización o error de un componente compartido como, por ejemplo, el hipervisor subyacente, SAN o la red. Estas anomalías se reflejan en un acuerdo de nivel de servicio reducido para ubicaciones de una sola zona.
-
Una ventaja de distribuir e Kafka s por muchas zonas es minimizar la posibilidad de un fallo que pueda hacer caer todo un clúster. Por el contrario, existe una pequeña posibilidad de que un solo fallo pueda hacer caer todo el clúster dentro de una zona. En casos extremos, también podrían perderse datos. Por ejemplo, incluso si los productores utilizan
acks=all
, si todos los nodos Kafka se han caído simultáneamente, es posible que haya algunos mensajes que los intermediarios hayan reconocido recibir, pero que el sistema de archivos subyacente no haya completado el vaciado en disco. Es posible que esos mensajes sin borrar se pierdan.
Para obtener más información, consulte Acuses de recibo de mensajes. En muchos casos de uso, no constituye ningún problema. Sin embargo, si la pérdida de mensajes no es aceptable bajo ninguna circunstancia, tenga en cuenta otras estrategias como, por ejemplo, utilizar un clúster de zona de disponibilidad múltiple, una réplica de regiones cruzadas o la sincronización por puntos de comprobación de los mensajes del lado del productor.
Para obtener más información, consulte clústeres de una sola zona y clústeres multizonas.