Escalar la base de datos. Microsoft AlwaysOn

Oye. Mi nombre es Tigran Petrosyan, soy un ingeniero líder en soporte técnico en Docsvision, y hoy hablaré sobre la aplicación de la tecnología MS SQL AlwaysOn. Este es el segundo artículo de la miniserie Enterprise ECM Scalability, en el que el primer artículo de mi colega se centró en la tecnología de escalado de búsqueda Elasticsearch .



Ambos materiales pueden ser de interés no solo para quienes trabajan con Docsvision, sino también para todos los interesados ​​en tecnologías de escala.



Algunas palabras sobre por qué estamos hablando de eso.



La Ăşltima versiĂłn de la plataforma EDMS / ECM Docsvision, que estamos desarrollando, se diferencia fundamentalmente de versiones anteriores en su arquitectura modular. Era importante proporcionar la capacidad de escalar el sistema (y casi de forma ilimitada) mientras se mantenĂ­a la velocidad de trabajo. Una de las tecnologĂ­as subyacentes a las nuevas capacidades de la plataforma es MS SQL AlwaysOn.



Mis colegas ya han hablado sobre las tecnologías de escalamiento que subyacen a las nuevas características de la plataforma: hay una serie de 4 mini-seminarios web en YouTube , una serie de 3 artículos en Medium ( artículo # 1 , artículo 2 y artículo # 3dedicado al tema del escalado de bases de datos). Estos materiales indican más claramente qué problemas resolvimos y qué logramos al resolverlos.

Consideraré una característica específica de MS SQL AlwaysOn que aumenta la confiabilidad y el rendimiento del servidor de base de datos.



imagen

Figura: 1. Hoy en dĂ­a, la arquitectura de la plataforma Docsvision se ve asĂ­.



Servicio de escalado de bases de datos. MS SQL AlwaysOn



Las herramientas para mejorar el rendimiento y el escalado del servicio de base de datos de nuestra plataforma Docsvision incluyen la capacidad de crear grupos de servidores de bases de datos. Esta funciĂłn la proporciona la tecnologĂ­a MS SQL AlwaysOn.



Los grupos de disponibilidad AlwaysOn dentro de la base de datos de Docsvision pueden realizar dos tareas a la vez:



  • La alta disponibilidad asegura un funcionamiento ininterrumpido del sistema;
  • La carga de lectura de la base de datos se realiza parcialmente en las rĂ©plicas.


El principio de funcionamiento del modo Always On es crear un clĂşster de servidores, entre los que puede elegir:

  • Servidor maestro: el servidor principal que registra todos los cambios en el sistema (lectura, escritura);
  • El servidor esclavo es un servidor de replicaciĂłn que duplica todos los cambios en el sistema, pero es de solo lectura. Cada servidor de replicaciĂłn almacena una base de datos (metadatos) para almacenar datos intermedios para el funcionamiento de consultas de bĂşsqueda y vistas.




Figura: 2. Equilibrio de la carga entre servidores.



Como puede ver en el diagrama, lo que distribuimos es la carga de lectura, ya que la inmensa mayorĂ­a de las operaciones de los usuarios en el sistema son operaciones de lectura (bĂşsqueda, informes, apertura de documentos).



Durante las pruebas, inicialmente teníamos un servidor maestro más poderoso que un servidor esclavo. Sin embargo, al superar la cifra de unos 40 mil usuarios, vimos que los servidores esclavos no podían hacer frente, y el maestro, por el contrario, estaba infrautilizado. Esta fue una confirmación práctica de que hay más solicitudes de lectura, generan más carga, por lo que primero lo distribuimos entre los nodos.



Cuando el modo Siempre encendido está funcionando, hay varios tipos de solicitudes de usuario:



  • . , , , «Read Only», , slave-, master- . «Read Only», master-, .. .
  • . «Timestamp», . «Timestamp» . , «Timestamp» : ( Timestamp), - ( Timestamp Timestamp – , ), – . , , «Timestamp» , slave- master- , «Timestamp» .
  • , . slave- «Metadata» ( ). slave- , , .


slave-:



  • slave-, . Round Robin, .. , , slave- .
  • , . Always On slave- . , slave- . , , slave- .
  • master- slave :



    • GetCardXmlData – , XML ;
    • SectionReadRowsData – , ;
    • SearchCreateProcessor – ;
    • ViewCreateProcessor – ;
    • CardGetState – ;
    • ReportGetData – ;
    • RowGetData – ;
    • RowGetHierarchy – ;
    • CardGetType – , ;
    • SessionGetIdList;
    • UserGetInfo.


El uso de la tecnología MS SQL Always le permite aumentar sin problemas la capacidad del servidor y distribuir el aumento de carga. En las pruebas, logramos una carga de más de 100.000 usuarios simultáneos, en gran parte debido al escalado a nivel de la base de datos.



Estaré encantado de responder a sus preguntas.



All Articles