Mise à l'échelle de la base de données. Microsoft AlwaysOn

Hey. Je m'appelle Tigran Petrosyan, je suis un ingénieur leader du support technique chez Docsvision, et aujourd'hui je vais vous parler de l'application de la technologie MS SQL AlwaysOn. Il s'agit du deuxième article de la mini-série Enterprise ECM Scalability, dans laquelle le premier article de mon collègue portait sur la technologie de mise à l'échelle de recherche d'Elasticsearch .



Les deux documents peuvent intéresser non seulement ceux qui travaillent avec Docsvision, mais également tous ceux qui s'intéressent aux technologies de mise à l'échelle.



Quelques mots sur pourquoi nous en parlons



La dernière version de la plate-forme EDMS / ECM Docsvision, que nous développons, diffère fondamentalement des versions précédentes par son architecture modulaire. Il était important de fournir la capacité de faire évoluer le système (et pratiquement illimité) tout en maintenant la vitesse de travail. L'une des technologies sous-jacentes aux nouvelles capacités de la plate-forme est MS SQL AlwaysOn.



Mes collègues ont déjà parlé des technologies de scaling sous-tendant les nouvelles capacités de la plateforme: il existe une série de 4 mini-webinaires sur YouTube , une série de 3 articles sur Medium ( article n ° 1 , article 2 et article n ° 3juste consacré au sujet de la mise à l'échelle de la base de données). Ces documents indiquent plus clairement les problèmes que nous avons résolus et ce que nous avons accompli en les résolvant.

Je considérerai une caractéristique spécifique de MS SQL AlwaysOn qui augmente la fiabilité et les performances du serveur de base de données.



image

Figure: 1. Aujourd'hui, l'architecture de la plate-forme Docsvision ressemble à ceci.



Mise à l'échelle du service de base de données. MS SQL AlwaysOn



Les outils permettant d'améliorer les performances et la mise à l'échelle du service de base de données de notre plate-forme Docsvision incluent la possibilité de créer des clusters de serveurs de base de données. Cette fonctionnalité est fournie par la technologie MS SQL AlwaysOn.



Les groupes de disponibilité AlwaysOn de la base de données Docsvision peuvent effectuer deux tâches à la fois:



  • Un haut niveau de disponibilité garantit un fonctionnement ininterrompu du système;
  • La charge lors de la lecture de la base de données est partiellement effectuée sur les répliques.


Le principe de fonctionnement du mode Always On est de créer un cluster de serveurs, parmi lesquels vous pouvez choisir:

  • Serveur maître - le serveur principal qui enregistre toutes les modifications du système (lecture, écriture);
  • Le serveur esclave est un serveur de réplication qui duplique toutes les modifications du système, mais qui est en lecture seule. Chaque serveur de réplication stocke une base de données (métadonnées) pour stocker des données intermédiaires pour le fonctionnement des requêtes de recherche et des vues.




Figure: 2. Équilibrage de la charge entre les serveurs.



Comme vous pouvez le voir sur le diagramme, c'est la charge de lecture que nous distribuons, puisque la très grande majorité des opérations utilisateur dans le système sont des opérations de lecture (recherche, rapports, ouverture de documents).



Lors des tests, nous avions initialement un serveur maître plus puissant qu'un serveur esclave. Cependant, en dépassant le chiffre d'environ 40 mille utilisateurs, nous avons vu que les serveurs esclaves étaient incapables de faire face et que le maître, au contraire, était sous-utilisé. C'était une confirmation pratique qu'il y a plus de requêtes de lecture, elles génèrent plus de charge, donc tout d'abord nous la répartissons entre les nœuds.



Lorsque le mode Always On fonctionne, il existe plusieurs types de requêtes utilisateur:



  • . , , , «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.


L'utilisation de la technologie MS SQL Always vous permet d'augmenter en douceur les capacités du serveur et de répartir la charge accrue. Lors des tests, nous avons atteint une charge de plus de 100 000 utilisateurs simultanés, en grande partie grâce à la mise à l'échelle au niveau de la base de données.



Je serai heureux de répondre à vos questions.



All Articles