Penskalaan database. Microsoft AlwaysOn

Hei. Nama saya Tigran Petrosyan, saya adalah teknisi dukungan teknis terkemuka di Docsvision, dan hari ini saya akan memberi tahu Anda tentang penerapan teknologi MS SQL AlwaysOn. Ini adalah artikel kedua dalam seri mini Skalabilitas ECM Perusahaan, di mana artikel pertama kolega saya berfokus pada teknologi penskalaan penelusuran Elasticsearch .



Kedua materi tersebut mungkin menarik tidak hanya bagi mereka yang bekerja dengan Docsvision, tetapi juga bagi semua orang yang tertarik dengan teknologi penskalaan.



Beberapa kata tentang mengapa kita membicarakannya



Versi terbaru dari platform EDMS / ECM Docsvision, yang kami kembangkan, secara fundamental berbeda dari versi sebelumnya dalam arsitektur modularnya. Penting untuk memberikan kemampuan untuk menskalakan sistem (dan hampir tidak terbatas) sambil mempertahankan kecepatan kerja. Salah satu teknologi yang mendasari kemampuan baru platform ini adalah MS SQL AlwaysOn.



Kolega saya telah membicarakan tentang teknologi penskalaan yang mendasari kemampuan baru platform: ada rangkaian 4 webinar mini di YouTube , rangkaian 3 artikel di Medium ( artikel # 1 , artikel 2 , dan artikel # 3hanya dikhususkan untuk topik penskalaan database). Materi ini lebih jelas menunjukkan masalah apa yang kita selesaikan dan apa yang kita capai dalam menyelesaikannya.

Saya akan mempertimbangkan satu fitur spesifik MS SQL AlwaysOn yang meningkatkan keandalan dan kinerja server database.



gambar

Angka: 1. Saat ini arsitektur platform Docsvision terlihat seperti ini.



Penskalaan layanan database. MS SQL AlwaysOn



Alat untuk meningkatkan kinerja dan penskalaan layanan basis data dari platform Docsvision kami mencakup kemampuan untuk membuat kelompok server basis data. Fitur ini disediakan oleh teknologi MS SQL AlwaysOn.



Grup ketersediaan AlwaysOn dalam database Docsvision dapat melakukan dua tugas sekaligus:



  • Ketersediaan tinggi memastikan pengoperasian sistem yang tidak terganggu;
  • Beban membaca dari database sebagian dilakukan pada replika.


Prinsip pengoperasian mode Always On adalah untuk membuat sekelompok server, di antaranya Anda dapat memilih:

  • Server master - server utama yang mencatat semua perubahan dalam sistem (baca, tulis);
  • Server budak adalah server replikasi yang menduplikasi semua perubahan dalam sistem, tetapi hanya-baca. Setiap server replikasi menyimpan database (Metadata) untuk menyimpan data perantara untuk pengoperasian kueri dan tampilan pencarian.




Angka: 2. Load balancing antar server.



Seperti yang Anda lihat di diagram, beban membaca itulah yang kami distribusikan, karena sebagian besar operasi pengguna dalam sistem adalah operasi baca (penelusuran, laporan, pembukaan dokumen).



Selama pengujian, awalnya kami memiliki server master yang lebih kuat daripada server budak. Namun, ketika mengatasi angka sekitar 40 ribu pengguna, kami melihat bahwa server budak tidak dapat mengatasinya, dan master, sebaliknya, kurang dimanfaatkan. Ini adalah konfirmasi praktis bahwa ada lebih banyak permintaan baca, permintaan tersebut menghasilkan lebih banyak beban, jadi pertama-tama kami mendistribusikannya di antara node.



Saat mode Selalu Aktif berfungsi, ada beberapa jenis permintaan pengguna:



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


Menggunakan teknologi MS SQL Always memungkinkan Anda untuk meningkatkan kapasitas server dengan lancar dan mendistribusikan beban yang meningkat. Pada pengujian, kami mencapai beban 100.000+ pengguna secara bersamaan, sebagian besar karena penskalaan di tingkat database.



Saya akan dengan senang hati menjawab pertanyaan Anda.



All Articles