扩展数据库。微软AlwaysOn

嘿。我叫Tigran Petrosyan,我是Docsvision的领先技术支持工程师,今天我将向您介绍MS SQL AlwaysOn技术的应用。这是“ Enterprise ECM可扩展性”微型系列的第二篇文章,我的同事的第一篇文章重点介绍了Elasticsearch搜索扩展技术



两种材料可能不仅对使用Docsvision的人员感兴趣,而且也对对缩放技术感兴趣的每个人都感兴趣。



关于我们为什么要谈论的几句话



我们正在开发的EDMS / ECM平台Docsvision的最新版本在模块化体系结构上与以前的版本根本不同。在保持工作速度的同时,提供扩展系统(几乎无限)的能力非常重要。平台新功能的基础技术之一是MS SQL AlwaysOn。



我的同事们已经讨论过该平台的新功能所基于的扩展技术:YouTube上一系列的4个小型网络研讨会有关Medium一系列3篇文章第1条第2第3条)只是专门讨论数据库扩展主题)。这些材料更清楚地表明我们解决了哪些问题以及解决这些问题所取得的成就。

我将考虑MS SQL AlwaysOn的一项特定功能,该功能可以提高数据库服务器的可靠性和性能。



图片

数字:1.今天,Docsvision平台的架构看起来像这样。



扩展数据库服务。MS SQL AlwaysOn



用于改善Docsvision平台的数据库服务的性能和扩展性的工具包括创建数据库服务器集群的功能。此功能由MS SQL AlwaysOn技术提供。



Docsvision数据库中的AlwaysOn可用性组可以一次执行两项任务:



  • 高可用性确保系统不间断运行;
  • 从数据库读取的负载部分在副本上执行。


Always On模式的操作原理是创建服务器集群,您可以在其中选择:

  • 主服务器-记录系统中所有更改(读取,写入)的主服务器;
  • 从服务器是复制服务器,它复制系统中的所有更改,但是是只读的。每个复制服务器都存储一个数据库(元数据),用于存储用于搜索查询和视图操作的中间数据。




数字: 2.平衡服务器之间的负载。



正如您在图中所看到的,这是我们分发的阅读负载,因为系统中绝大多数用户操作都是阅读操作(搜索,报告,打开文档)。



在测试期间,我们最初拥有的主服务器比从属服务器更强大。但是,当克服大约4万个用户的数量时,我们看到从服务器无法应对,而相反,主服务器则未得到充分利用。这是一个实际的确认,即有更多的读取请求,它们产生了更多的负载,因此首先我们在节点之间分配它。



当始终在线模式工作时,有几种类型的用户请求:



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


使用MS SQL Always技术可使您平稳地增加服务器容量并分配增加的负载。在测试中,我们实现了100,000+个并发用户的负载,这主要是由于在数据库级别进行了扩展。



我很高兴回答您的问题。



All Articles