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.
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.