Capítulo 17: comprensión en profundidad ETCD: ETCD Optimización del rendimiento de práctica

conocimiento profundo ETCD: ETCD Optimización del rendimiento de práctica

Este artículo se comparten las siguientes cinco áreas:

  1. ETCD antes de la lección de la opinión;
  2. Descripción del rendimiento de ETCD;
  3. ETCD optimización del rendimiento final -server;
  4. ETCD optimización del rendimiento final -client.

ETCD antes de la lección de la opinión

ETCD nació en compañía CoreOS, mediante el desarrollo del lenguaje Golang, KeyValue es un motor de almacenamiento distribuido. Podemos utilizar ETCD como un sistema distribuido de metadatos almacenados en una base de datos, almacenar información meta importante dentro del sistema. ETCD también ampliamente utilizado por grandes empresas.

La siguiente figura muestra la arquitectura básica ETCD:

avatar

Como se indicó anteriormente, un grupo de tres nodos: un dos líder y el seguidor. Cada nodo datos de sincronización algoritmo de balsa, y almacena los datos a través de boltdb. Cuando un nodo de colgar, los otros nodos serán elegidos automáticamente un Líder, mantener una alta disponibilidad dispone de todo el clúster. petición de cliente puede ser completado mediante la conexión de un nodo arbitrariamente.

Comprender el rendimiento ETCD

En primer lugar nos fijamos en un mapa:

avatar

La figura es un diagrama de la arquitectura ETCD clúster estándar. clúster ETCD puede dividirse en varios componentes del núcleo: capa Raft por ejemplo, azul, rojo capa de almacenamiento, la capa interna se divide en treeIndex almacenamiento capa boltdb y subyacente almacén persistente capa de clave / valor. Que cada capa pueden haber dado lugar a la pérdida de rendimiento del ETCD.

Primer vistazo capa de balsa, los datos de sincronización de red necesita balsa, RTT y / ancho de banda IO está entre el nodo de red afecta al rendimiento del ETCD. Además, la influencia WAL También se ha escrito a la velocidad del disco IO.

Vistazo a la capa de almacenamiento, el disco IO fdatasync ETCD retraso afectará el bloque de bloqueo de capa índice de rendimiento también afecta al rendimiento del ETCD. Además, boltdb cerraduras y el rendimiento Tx boltdb sí también afectará en gran medida el rendimiento del ETCD.

Desde otro punto de vista, donde los parámetros del núcleo de acogida ETCD capas api y retraso GRPC, sino que también afectará el rendimiento del ETCD.

-server final optimización del rendimiento ETCD

Aquí para decirnos sobre el lado del servidor específica ETCD optimización del rendimiento.

ETCD optimización del rendimiento del servidor - el despliegue de hardware

servidor de las partes requiere suficiente CPU y de memoria en hardware para proteger el ETCD plazo. En segundo lugar, como un disco IO es muy dependiente del programa de base de datos, IO ETCD latencia y necesidades muy buen disco duro SSD, ETCD es un sistema de almacenamiento de clave / valor distribuidos, condiciones de la red, sino que también es muy importante. Por último, el despliegue, tenemos que tratar de separarlo desplegado para evitar la interferencia con el desempeño de otros programas albergarán el ETCD.

pequeños socios interesados ​​pueden hacer clic en el siguiente enlace para ETCD información oficial requisitos de configuración recomendada:

https://coreos.com/etcd/docs/latest/op-guide/hardware/

ETCD optimización del rendimiento del servidor - Software

ETCD de software se divide en muchas capas, lo siguiente describe brevemente la optimización del rendimiento de acuerdo a diferentes niveles. ¿Quieres saber la profundidad de sus propios estudiantes pueden acceder a la siguiente GitHub PR para obtener los cambios en el código específico.

  • El primero es específico para ETCD la capa de índice de memoria optimización: optimizar el uso de bloqueos internos para reducir el tiempo de espera. La implementación original es atravesada usando el cebador interno BTree relativamente gruesa granularidad de bloqueo interno, la cerradura ETCD afecta en gran medida el rendimiento, la nueva optimización reduce el efecto de esta parte de la demora se reduce.

referencia específica a los siguientes enlaces: https://github.com/coreos/etcd/pull/9511

  • Para su uso en la optimización del tamaño del contrato de arrendamiento: la revocación de arrendamiento y algoritmos de optimización caducado, el hecho de atravesar la lista original de la complejidad O (n) a O (log n), resuelve el problema del uso a gran escala del contrato de arrendamiento.

referencia específica a los siguientes enlaces: https://github.com/coreos/etcd/pull/ 9418

  • Por último, para su uso en un boltdb parte trasera ** ** optimización: el extremo posterior del límite de tamaño de lote de ajuste / intervalo, se puede configurar de forma dinámica para que los diferentes hardware y la carga de trabajo, estos parámetros se fijan antes de un valor conservador.

referencia específica a los siguientes enlaces:
https://github.com/etcd-io/etcd/commit/3faed211e535729a9dc36198a8aab8799099d0f3

  • Otro punto es optimizado por el ingeniero de Google cuenta plenamente simultáneas de lectura: Llamada boltdb tx optimizar el uso de los bloqueos de lectura-escritura, mejorar el rendimiento de lectura.

referencia específica a los siguientes enlaces: https://github.com/etcd-io/etcd/pull/10523

ETCD asignación de almacenamiento interno freelist basa en un nuevo algoritmo para el reciclaje de hashmap separado

Otro optimización del rendimiento es también en gran medida, aquí nos centramos en lo que contribuyó una actuación por Ali optimización. Esta optimización del rendimiento mejora considerablemente el rendimiento ETCD almacenamiento interno, y su nombre es: El reciclaje de nuevo algoritmo de distribución ETCD freelist memoria interna segregada HashMap basada.

Artículo CNCF:
https://www.cncf.io/blog/2019/05/09/performance-optimization-of-etcd-in-web-scale-data-scenario/

avatar

La figura ETCD está en una única arquitectura de nodo, como se boltdb almacenamiento persistente interna toda la llave / valor, y por lo tanto el rendimiento es bueno o malo calidad del desempeño boltdb ETCD juega un papel muy importante. Ali internamente, que utilizan una gran cantidad de ETCD como una memoria interna de metadatos, en el curso de los problemas de rendimiento que encontramos boltdb a la participación de todos los presentes.

avatar

La imagen de arriba es un algoritmo básico ETCD asignación interna de memoria recuperada, aquí damos un conocimiento básico. En primer lugar, el tamaño interno ETCE página de uso por defecto es de 4 KB para almacenar datos. Como se muestra en las figuras indican que el ID de página, rojo indica que la página está siendo utilizado, no se utilizan para el blanco.

Cuando el usuario desea eliminar los datos, no ETCD poner este espacio de almacenamiento se devuelve inmediatamente al sistema, pero retenido dentro de la primera y mantener una página estanque para mejorar el rendimiento de su próximo uso. Esto se llama la página de piscina freelist, que se muestra en la Fig., El ID de página de la freelist 43, 45, están siendo utilizados 46,50,53, el ID de página está en un estado de inactividad 42,44,47,48,49,51,52.

Cuando un nuevo necesidades de almacenamiento de datos de una página de configuración continua 3, las necesidades de la edad de algoritmo para realizar la cabeza de exploración de la freelist, y finalmente volver a la página de identificación de partida 47, se puede ver en esta exploración lineal convencional dentro de la freelist ETCD algoritmo, bajo una gran cantidad de datos o de fragmentación interna casos graves, el rendimiento se reducirá drásticamente.

Para solucionar este problema, hemos diseñado e implementado una distribución basada en la nueva lista libre segregado algoritmo de recolección HashMap. El tamaño de página algoritmo continuamente como una HashMap clave, el valor es el ID del conjunto a partir de configuraciones. Cuando se almacena una nueva página, sólo necesitamos la complejidad del tiempo de O (1) para consultar este valor HashMap, rápidamente obtener el ID de inicio de la página.

A continuación, vaya al ejemplo anterior, cuando el tamaño necesario para la página 3 continua de las veces mediante la consulta de este HashMap será capaz de encontrar rápidamente la página de inicio con ID 47.

También en la página de la liberación, que también se utiliza el HashMap hacer la optimización. Por ejemplo, un ID de página de la Fig. 45, cuando el tiempo de liberación, se puede hacer por delante y hacia atrás se fusionaron para formar una gran páginas continuas, es decir, formar un ID de página de partida 44, el tamaño de página es un continuo 6.

En resumen: El tiempo de la complejidad de la nueva asignación de algoritmo de O (n) a O (1), recuperándose de la optimización O (nlogn) a O (1), ETCD leer la memoria interna y el rendimiento de escritura ya no se limita en la escena real, para optimizar su rendimiento un par de veces. Puede ser ampliado a partir de un único clúster recomendadas de almacenamiento de 2 GB a 100 GB. La optimización de la Ali interna está actualmente en uso, y la salida a la comunidad de código abierto.

Mención que este software de optimización decir más que aquí, en el ETCD estará en la nueva versión se liberan, podemos mirar a utilizarlo.

ETCD final optimización del rendimiento -client

Una vez más introducir las mejores prácticas en el uso de los clientes ETCD rendimiento.

En primer lugar, vamos a ver ETCD servidor al cliente para proporcionar algunos API: Ponga, Get, reloj, Transacciones, Arrendamientos muchas operaciones.

avatar

Para las operaciones en más clientes, resumimos algunas mejores prácticas de la llamada:

  1. operaciones Put dirigidas a evitar el uso de valor grande, línea de corriente para simplificar aún más simplificar, por ejemplo, bajo K8S uso CRD;
  2. En segundo lugar, ETCD sí mismo que no son adecuados para el almacenamiento y frecuentes cambios de información de metadatos clave / valor. Así el cliente en el uso de la necesidad de evitar cambios frecuentes para crear una clave / valor. Este es, por ejemplo los datos de latido para el nuevo nodo nodo bajo K8S subirlo siguió esta práctica;
  3. Por último, hay que evitar la creación de un gran número de contrato de arrendamiento, trate de elegir su reutilización. Por ejemplo, en K8S, la gestión de datos de eventos: el mismo tiempo de expiración TTL del evento también elegir un arrendamiento similar multiplexado, en lugar de crear un nuevo contrato de arrendamiento.

Por último, recuerde una cosa: mantener a los clientes a utilizar las mejores prácticas para asegurar que el clúster ETCD estable y un funcionamiento eficiente.

Esta sección resume

Esta sección es para terminar aquí, ya que resumimos aquí:

  • En primer lugar, entendemos el fondo de rendimiento ETCD, entendemos el potencial punto de cuello de botella del principio detrás;
  • optimización analítica ETCD lado del servidor rendimiento, optimización en términos de algoritmo de software de hardware / despliegue / núcleo interno;
  • Aprender el uso del cliente ETCD de las mejores prácticas;

Por último, espero que los estudiantes que leen esta sección, puede ser cosechado, ejecute un clúster estable y eficiente para ETCD que ayuda. Espero que seguirá centrándose en la parte inferior de campos maravillosos.

Supongo que te gusta

Origin www.cnblogs.com/passzhang/p/12556525.html
Recomendado
Clasificación