Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ рассказа ΠΎ нашСм тСрнистом ΠΏΡƒΡ‚ΠΈ ΠΊ созданию ΠΌΠΎΡ‰Π½ΠΎΠΉ, высоконагруТСнной систСмы, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π‘ΠΈΡ€ΠΆΠΈ. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΡƒΡ‚: habr.com/ru/post/444300

ВаинствСнная ошибка

ПослС многочислСнных тСстов обновлённая Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-клиринговая систСма Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° Π² строй, ΠΈ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π±Π°Π³ΠΎΠΌ, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΏΠΎΡ€Ρƒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ-ΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ²Π΅ΡΡ‚ΡŒ.

ВскорС послС запуска Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ сСрвСрС ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°ΡΡŒ с ошибкой. ΠŸΡ€ΠΈ этом Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΌ сСрвСрС всё Π±Ρ‹Π»ΠΎ Π² порядкС. Оказалось, Ρ‡Ρ‚ΠΎ простая матСматичСская опСрация вычислСния экспонСнты Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ сСрвСрС Π΄Π°Π»Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°! ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ изыскания, ΠΈ Π² SSE2-рСгистрС нашли ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±ΠΈΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой.

Написали ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ для вычислСния экспонСнты с выставлСнным Π±ΠΈΡ‚ΠΎΠΌ округлСния. Π’Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎΠΉ вСрсии RedHat Linux, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ использовали, Π±Ρ‹Π» Π±Π°Π³ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с матСматичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, ΠΊΠΎΠ³Π΄Π° вставлялся Π·Π»ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½Ρ‹ΠΉ Π±ΠΈΡ‚. ΠœΡ‹ сообщили ΠΎΠ± этом Π² RedHat, Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚ Π½ΠΈΡ… ΠΏΠ°Ρ‚Ρ‡ ΠΈ Π½Π°ΠΊΠ°Ρ‚ΠΈΠ»ΠΈ Π΅Π³ΠΎ. Ошибка большС Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π°, Π½ΠΎ Π±Ρ‹Π»ΠΎ нСпонятно, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ взялся этот Π±ΠΈΡ‚? Π—Π° Π½Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π»Π° функция fesetround ΠΈΠ· языка Π‘. ΠœΡ‹ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ свой ΠΊΠΎΠ΄ Π² поисках ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠΉ ошибки: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ситуации; рассмотрСли всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовали ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅; ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ воспроизвСсти ΡΠ±ΠΎΠΉΠ½ΡƒΡŽ сСссию; использовали Ρ€Π°Π·Π½Ρ‹Π΅ компиляторы с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ опциями; примСняли статичСский ΠΈ динамичСский Π°Π½Π°Π»ΠΈΠ·.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ошибки Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ.

Π’ΠΎΠ³Π΄Π° Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ: ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ΅ тСстированиС процСссоров; ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ; Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Π½Π°Π»ΠΈ тСсты Π½Π° ΠΎΡ‡Π΅Π½ΡŒ маловСроятный сцСнарий ΠΌΠ½ΠΎΠ³ΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ошибки Π² ΠΎΠ΄Π½ΠΎΠΉ ячСйкС. Π‘Π΅Π·Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π½ΠΎ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π° Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈΠ· ΠΌΠΈΡ€Π° Ρ„ΠΈΠ·ΠΈΠΊΠΈ высоких энСргий: Π² наш Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π΅Π»Π° какая-Π½ΠΈΠ±ΡƒΠ΄ΡŒ высокоэнСргСтичСская частица, ΠΏΡ€ΠΎΠ±ΠΈΠ»Π° стСнку корпуса, ΠΏΠΎΠΏΠ°Π»Π° Π² процСссор ΠΈ Π²Ρ‹Π·Π²Π°Π»Π° Π·Π°Π»ΠΈΠΏΠ°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π½ΠΎΠΉ Π·Π°Ρ‰Π΅Π»ΠΊΠΈ Π² Ρ‚ΠΎΠΌ самом Π±ΠΈΡ‚Π΅. Π­Ρ‚Π° абсурдная тСория ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Β«Π½Π΅ΠΉΡ‚Ρ€ΠΈΠ½ΠΎΒ». Если Π²Ρ‹ Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ‚ Ρ„ΠΈΠ·ΠΈΠΊΠΈ элСмСнтарных частиц: Π½Π΅ΠΉΡ‚Ρ€ΠΈΠ½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΌ ΠΌΠΈΡ€ΠΎΠΌ, ΠΈ ΡƒΠΆ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ способны ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ процСссора.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ сбоя Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, Π½Π° всякий случай ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Β«ΠΏΡ€ΠΎΠ²ΠΈΠ½ΠΈΠ²ΡˆΠΈΠΉΡΡΒ» сСрвСр ΠΈΠ· эксплуатации.

Бпустя ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ систСму горячСго рСзСрвирования: Π²Π²Π΅Π»ΠΈ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Β«Ρ‚Ρ‘ΠΏΠ»Ρ‹Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Ρ‹Β» (warm) β€” асинхронныС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Они ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ…, Π½ΠΎ ΠΏΡ€ΠΈ этом warm’ы Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ взаимодСйствия с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сСрвСрами.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Для Ρ‡Π΅Π³ΠΎ это Π±Ρ‹Π»ΠΎ сдСлано? Если Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ сСрвСр Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· строя, Ρ‚ΠΎ привязанный ΠΊ Π³Π»Π°Π²Π½ΠΎΠΌΡƒ сСрвСру warm становится Π½ΠΎΠ²Ρ‹ΠΌ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΌ. Π’ΠΎ Π΅ΡΡ‚ΡŒ послС сбоя систСма Π½Π΅ остаётся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠΉ сСссии с ΠΎΠ΄Π½ΠΈΠΌ Π³Π»Π°Π²Π½Ρ‹ΠΌ сСрвСром.

А ΠΊΠΎΠ³Π΄Π° новая вСрсия систСмы Π±Ρ‹Π»Π° протСстирована ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ, снова Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка с ΠΎΠΊΡ€ΡƒΠ³Π»ΡΡŽΡ‰ΠΈΠΌ Π±ΠΈΡ‚ΠΎΠΌ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ количСства warm-сСрвСров ошибка стала ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‡Π°Ρ‰Π΅. ΠŸΡ€ΠΈ этом Π²Π΅Π½Π΄ΠΎΡ€Ρƒ ΠΏΡ€Π΅Π΄ΡŠΡΠ²ΠΈΡ‚ΡŒ Π±Ρ‹Π»ΠΎ Π½Π΅Ρ‡Π΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π² Π½Π΅Ρ‚.

Π’ Ρ…ΠΎΠ΄Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ситуации Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° тСория, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связана с ОБ. ΠœΡ‹ написали ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π² бСсконСчном Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fesetround, Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΈ провСряСт Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· sleep, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ дСлаСтся это Π²ΠΎ мноТСствС ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π°Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ sleep ΠΈ количСства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΌΡ‹ стали устойчиво Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сбой Π±ΠΈΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· 5 ΠΌΠΈΠ½ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹. Однако слуТба ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Red Hat Π½Π΅ смогла Π΅Ρ‘ воспроизвСсти. ВСстированиС Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π°ΡˆΠΈΡ… сСрвСров ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ ошибкС ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ лишь Ρ‚Π΅ ΠΈΠ· Π½ΠΈΡ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… установлСны ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ процСссоры. ΠŸΡ€ΠΈ этом ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ядро Ρ€Π΅ΡˆΠ°Π» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΌΡ‹ просто Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ОБ, Π° истинная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π±Π°Π³Π° Ρ‚Π°ΠΊ ΠΈ ΠΎΡΡ‚Π°Π»Π°ΡΡŒ нСвыяснСнной.

И Π²Π΄Ρ€ΡƒΠ³ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ Π½Π° Π₯Π°Π±Ρ€Π΅ Π²Ρ‹ΡˆΠ»Π° ΡΡ‚Π°Ρ‚ΡŒΡ «Как я нашСл Π±Π°Π³ Π² процСссорах Intel SkylakeΒ». Описанная Π² Π½Π΅ΠΉ ситуация Π±Ρ‹Π»Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Π½Π°ΡˆΡƒ, Π½ΠΎ Π°Π²Ρ‚ΠΎΡ€ продвинулся Π² расслСдовании дальшС ΠΈ Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΠ» Ρ‚Π΅ΠΎΡ€ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ошибка Π±Ρ‹Π»Π° Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π΅. А ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ядСр Linux ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ систСмы

Π₯отя ΠΎΡ‚ ошибки ΠΌΡ‹ избавились, эта история заставила снова ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ систСмы. Π’Π΅Π΄ΡŒ ΠΌΡ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΎΡ‚ повторСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π±Π°Π³ΠΎΠ².

Π’ основу ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Ρ‹Ρ… Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ систСмы рСзСрвирования Π»Π΅Π³Π»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹:

  • НСльзя Π½ΠΈΠΊΠΎΠΌΡƒ Π²Π΅Ρ€ΠΈΡ‚ΡŒ. Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.
  • ΠœΠ°ΠΆΠΎΡ€ΠΈΡ‚Π°Ρ€Π½ΠΎΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ консСнсуса. Как логичСскоС Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ°ΠΆΠΎΡ€ΠΈΡ‚Π°Ρ€Π½ΠΎΠΌΡƒ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΎΡ‚ΠΊΠ°Π·Ρ‹.
  • Π–ΠΈΠ²ΡƒΡ‡Π΅ΡΡ‚ΡŒ. Новая схСма горячСго рСзСрвирования Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ…ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ. Ворговля Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ΄Ρ‚ΠΈ бСспСрСбойно Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ послСднСго сСрвСра.
  • ΠΠ΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. Π›ΡŽΠ±ΠΎΠΉ простой Π²Π»Π΅Ρ‡Ρ‘Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ финансовыС ΠΏΠΎΡ‚Π΅Ρ€ΠΈ.
  • МинимальноС взаимодСйствиС ΠΏΠΎ сСти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ‹Π»Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС.
  • Π’Ρ‹Π±ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ сСрвСра Π·Π° сСкунды.

Ни ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠΌΠ΅Π²ΡˆΠΈΡ…ΡΡ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π°ΠΌ Π½Π΅ подошло, Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Raft Π΅Ρ‰Ρ‘ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зароТдался, поэтому ΠΌΡ‹ создали собствСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ взаимодСйствиС

ΠšΡ€ΠΎΠΌΠ΅ систСмы рСзСрвирования ΠΌΡ‹ занялись ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ сСтСвого взаимодСйствия. ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° прСдставляла собой мноТСство процСссов, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΡ…ΡƒΠ΄ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ влияло Π½Π° Π΄ΠΆΠΈΡ‚Ρ‚Π΅Ρ€ ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ. ИмСя сотни процСссов, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… TCP-соСдинСния, ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π±Ρ‹Π»ΠΈ постоянно ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, Π° Π² микросСкундном ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ это довольно Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ опСрация. Но Ρ…ΡƒΠΆΠ΅ всСго Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° процСсс ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΎΠ½ отправлял Π΅Π³ΠΎ Π² ΠΎΠ΄Π½Ρƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ SystemV, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΆΠ΄Π°Π» события ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ SystemV. Однако ΠΏΡ€ΠΈ большом количСствС ΡƒΠ·Π»ΠΎΠ² поступлСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ TCP-ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² ΠΎΠ΄Π½ΠΎΠΌ процСссС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой для ОБ Π΄Π²Π° ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ события. Π’ этом случаС, Ссли для ΠΎΠ±Π΅ΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ доступных физичСских процСссоров, ΠΎΠ΄Π½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ, Π° вторая встанСт Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ оТидания. ΠŸΡ€Π΅Π΄ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ послСдствия Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуациях ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ динамичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ процСсса, Π½ΠΎ это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования рСсурсоёмких систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ с использованиСм классичСского epoll, это сильно повысило ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ избавились ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов сСтСвого взаимодСйствия ΠΈ ΠΎΡ‚ взаимодСйствия Ρ‡Π΅Ρ€Π΅Π· SystemV, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сократили количСство систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. На ΠΎΠ΄Π½ΠΎΠΉ лишь подсистСмС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ порядка 8-17 микросСкунд Π² зависимости ΠΎΡ‚ сцСнария. Π­Ρ‚Π° однопоточная схСма с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ примСняСтся Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΎΠ΄Π½ΠΎΠ³ΠΎ epoll-ΠΏΠΎΡ‚ΠΎΠΊΠ° с запасом достаточно для обслуТивания всСх ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

Рост Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° Π½Π°ΡˆΡƒ систСму Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всСх Π΅Ρ‘ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Но, ΠΊ соТалСнию, стагнация Π² ростС Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты процСссоров Π² послСдниС Π³ΠΎΠ΄Ρ‹ ΡƒΠΆΠ΅ Π½Π΅ позволяла ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСссы Β«Π² Π»ΠΎΠ±Β». ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ процСсс Engine Π½Π° Ρ‚Ρ€ΠΈ уровня, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ самым Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ… являСтся систСма ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ рисков, которая ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ срСдств Π½Π° счСтах ΠΈ создаёт сами сдСлки. Но дСньги ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Π»ΡŽΡ‚Π°Ρ…, ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ запросов.

Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ Π²Π°Π»ΡŽΡ‚Π°ΠΌ: ΠΎΠ΄ΠΈΠ½ сСрвСр Ρ‚ΠΎΡ€Π³ΡƒΠ΅Ρ‚ Π΄ΠΎΠ»Π»Π°Ρ€Π°ΠΌΠΈ, Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½Ρ‚Π°ΠΌΠΈ, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π΅Π²Ρ€ΠΎ. Но Ссли ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ схСмС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Π»ΡŽΡ‚, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° рассинхронизации кошСльков. А ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слоТно ΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ кошСлькам ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎ инструмСнтам. К слову, Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°ΠΏΠ°Π΄Π½Ρ‹Ρ… Π±ΠΈΡ€ΠΆ Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ рисков Π½Π΅ стоит Ρ‚Π°ΠΊ остро, ΠΊΠ°ΠΊ Ρƒ нас, поэтому Ρ‡Π°Ρ‰Π΅ всСго это дСлаСтся Π² ΠΎΡ„Π»Π°ΠΉΠ½Π΅. Нам ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.

Поясним Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’Ρ€Π΅ΠΉΠ΄Π΅Ρ€ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΊΡƒΠΏΠΈΡ‚ΡŒ 30 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ², ΠΈ запрос ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ: ΠΌΡ‹ провСряСм, Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ Π»ΠΈ этот Ρ‚Ρ€Π΅ΠΉΠ΄Π΅Ρ€ Π΄ΠΎ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ‚ΠΎΡ€Π³ΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²Π°. Если всё Π² порядкС, запрос ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² систСму ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ рисков, Ρ‚.Π΅. Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ достаточности срСдств Π½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ сдСлки. Π’Π°ΠΌ ставится ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠ°, Ρ‡Ρ‚ΠΎ нСобходимая сумма Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°. Π”Π°Π»ΡŒΡˆΠ΅ запрос пСрСадрСсуСтся Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠΉ систСмС, которая одобряСт ΠΈΠ»ΠΈ Π½Π΅ одобряСт Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ. Допустим, транзакция ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° β€” Ρ‚ΠΎΠ³Π΄Π° систСма ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ рисков ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ дСньги Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, ΠΈ Ρ€ΡƒΠ±Π»ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π΄ΠΎΠ»Π»Π°Ρ€Ρ‹.

Π’ Ρ†Π΅Π»ΠΎΠΌ, систСма ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ рисков содСрТит слоТныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ выполняСт большой ΠΎΠ±ΡŠΡ‘ΠΌ ΠΎΡ‡Π΅Π½ΡŒ рСсурсоёмких вычислСний, Π° Π½Π΅ просто провСряСт «остаток Π½Π° счётС», ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠ² ΠΊ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ процСсса Engine Π½Π° ΡƒΡ€ΠΎΠ²Π½ΠΈ, ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: имСвшийся Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄ Π½Π° этапах Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ использовал ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ массив Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ всю ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ позаимствовали Ρƒ соврСмСнных процСссоров ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ инструкций: каТдая ΠΈΠ· Π½ΠΈΡ… разбиваСтся Π½Π° ΠΌΠ΅Π»ΠΊΠΈΠ΅ этапы ΠΈ Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ выполняСтся нСсколько дСйствий.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

ПослС нСбольшой Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΌΡ‹ создали ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ транзакция Ρ€Π°Π·Π±ΠΈΠ²Π°Π»Π°ΡΡŒ Π½Π° 4 этапа ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°: сСтСвоС взаимодСйствиС, валидация, исполнСния ΠΈ публикация Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π£ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ систСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ. ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ пСрвая транзакция, ΠΈ Π² ΠΎΠ±Π΅ΠΈΡ… систСмах отправляСтся Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ. Π’ΡƒΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ вторая транзакция: Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ систСмС ΠΎΠ½Π° сразу ΠΆΠ΅ бСрётся Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ кладётся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ, ΠΏΠΎΠΊΠ° пСрвая транзакция ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ этап ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ основноС прСимущСство ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ быстрСС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

Π’Π°ΠΊ Ρƒ нас появилась систСма ASTS+.

ΠŸΡ€Π°Π²Π΄Π°, с ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°ΠΌΠΈ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ всё Ρ‚Π°ΠΊ Π³Π»Π°Π΄ΠΊΠΎ. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ транзакция, которая влияСт Π½Π° массивы Π΄Π°Π½Π½Ρ‹Ρ… Π² сосСднСй Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, это характСрная ситуация для Π±ΠΈΡ€ΠΆΠΈ. Π’Π°ΠΊΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ нСльзя ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π­Ρ‚Π° ситуация называСтся data hazard, ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ просто ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ: ΠΊΠΎΠ³Π΄Π° находящиСся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ «быстрыС» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‡Π°ΡŽΡ‚ΡΡ, ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ останавливаСтся, систСма ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Β«ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽΒ» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ снова запускаСт ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, доля Ρ‚Π°ΠΊΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π°, поэтому ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ останавливаСтся Ρ‚Π°ΠΊ Ρ€Π΅Π΄ΠΊΠΎ, Ρ‡Ρ‚ΠΎ это Π½Π΅ влияСт Π½Π° ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΈΠ½ΡΠ»ΠΈΡΡŒ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ синхронизации Ρ‚Ρ€Ρ‘Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² исполнСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ систСма Π½Π° основС ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° с ячСйками фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ этой систСмС всё ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½ΠΎ скорости ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

  • ВсС входящиС сСтСвыС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π° ΡΡ‚Π°Π΄ΠΈΡŽ Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ.
  • ΠœΡ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΈΡ… Π² массивС ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ доступны для стадии β„– 1.
  • ΠŸΡ€ΠΈΡˆΠ»Π° вторая транзакция, ΠΎΠ½Π° снова доступна для стадии β„– 1.
  • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΈΠ΄ΠΈΡ‚ доступныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΡ‚Π°Π΄ΠΈΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
  • Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ячСйку Ρ„Π»Π°Π³ΠΎΠΌ deleted β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π° доступна для Π½ΠΎΠ²ΠΎΠ³ΠΎ использования.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ обрабатываСтся вся ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ стадии Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ дСсятки микросСкунд. И Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартныС схСмы синхронизации ОБ, Ρ‚ΠΎ ΠΌΡ‹ потСряСм большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° самой синхронизации. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ стали ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ spinlock. Однако это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎΠΉ Ρ‚ΠΎΠ½ Π² real-time систСмС, ΠΈ RedHat строго-настрого Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ, поэтому ΠΌΡ‹ примСняСм spinlock Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 100 мс, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π΅ΠΆΠΈΠΌ сСмафоров, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ deadlock.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ достигли ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 8 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду. И Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π° мСсяца Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΎ LMAX Disruptor ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ описаниС схСмы с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ стадии ΠΌΠΎΠ³Π»ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² исполнСния. ВсС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π² порядкС поступлСния. Π’ ΠΈΡ‚ΠΎΠ³Π΅ пиковая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выросла с 18 тыс. Π΄ΠΎ 50 тыс. Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду.

БирТСвая систСма риск-ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚Π°

НСт ΠΏΡ€Π΅Π΄Π΅Π»Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Ρƒ, ΠΈ вскорС ΠΌΡ‹ снова занялись ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ: Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ASTS+ Π½Π°Ρ‡Π°Π»ΠΈ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ систСмы риск-ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚Π° ΠΈ расчётных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π³ΠΈΠ±ΠΊΡƒΡŽ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ Π½ΠΎΠ²ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ модСль риска, ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс fixed_point вмСсто double.

Но сразу ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π·Π°Π΄Π°Ρ‡Π°: ΠΊΠ°ΠΊ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, которая ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚, ΠΈ пСрСнСсти Π΅Ρ‘ Π² Π½ΠΎΠ²ΡƒΡŽ систСму? Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Π½ΠΎΠ²ΠΎΠΉ систСмы ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ. Π’ основС Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии, которая сСгодня трудится Π² production, Π»Π΅ΠΆΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π² Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠΉ части, ΠΈ Π² рисковой. Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ всСго Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git merge ΠΌΠ΅ΠΆΠ΄Ρƒ двумя вСрсиями. Наш ΠΊΠΎΠ»Π»Π΅Π³Π° Π•Π²Π³Π΅Π½ΠΈΠΉ ΠœΠ°Π·ΡƒΡ€Π΅Π½ΠΎΠΊ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ нСдСлю выполнял эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ ругался.

ΠŸΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ систСмы сразу ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ взаимодСйствия. ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΡˆΠΈΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΆΠΈΡ‚Ρ‚Π΅Ρ€ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ. Для этого Π»ΡƒΡ‡ΡˆΠ΅ всСго подошла ΡΠ΅Ρ‚ΡŒ InfiniBand RDMA: срСдняя Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² 4 Ρ€Π°Π·Π° мСньшС, Ρ‡Π΅ΠΌ Π² сСтях 10 G Ethernet. Но ΠΏΠΎ-настоящСму нас ΠΏΠΎΠ΄ΠΊΡƒΠΏΠΈΠ»Π° Ρ€Π°Π·Π½ΠΈΡ†Π° Π² пСрцСнтилях β€” 99 ΠΈ 99,9.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ InfiniBand Π΅ΡΡ‚ΡŒ свои слоТности. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΄Ρ€ΡƒΠ³ΠΎΠΉ API β€” ibverbs вмСсто sockets. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹Ρ… open source messaging-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. ΠœΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, Π½ΠΎ это оказалось ΠΎΡ‡Π΅Π½ΡŒ нСпросто, поэтому Π²Ρ‹Π±Ρ€Π°Π»ΠΈ коммСрчСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” Confinity Low Latency Messaging (Ρ€Π°Π½Π΅Π΅ IBM MQ LLM).

Π—Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ раздСлСния рисковой систСмы. Если просто вынСсти Risk Engine ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°, Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π΄Π²ΡƒΡ… источников ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Π’ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ultra Low Latency Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… Π΅ΡΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ reordering: Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ Π΄Π²ΡƒΡ… источников ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈ поступлСнии Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ порядкС, это рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ± очСрёдности. Но ΠΌΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ примСняСм этот Ρ€Π΅ΠΆΠΈΠΌ: ΠΎΠ½ услоТняСт вСсь процСсс, Π° Π² рядС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ поддСрТиваСтся. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Μ’Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ, Π° Π² нашСй схСмС этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ использовали ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ схСму с message broker, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с диспСтчСром, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распрСдСляСт сообщСния ΠΌΠ΅ΠΆΠ΄Ρƒ Risk Engine.

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° связана с клиСнтским доступом: ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Risk Gateway ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ…, ΠΈ для этого придётся Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² клиСнтский слой. ΠœΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ этого Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС, поэтому Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ схСмС Risk Gateway ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ вСсь ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ сильно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ систСмы.

Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’ нашСй систСмС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π² Ρ‚ΠΎΠΌ числС Π±Ρ€ΠΎΠΊΠ΅Ρ€ сообщСний. Π­Ρ‚Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмы CLLM: ΠΎΠ½Π° содСрТит RCMS-кластСр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π²Π° диспСтчСра ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ master-slave, ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· строя, систСма автоматичСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Π Π°Π±ΠΎΡ‚Π° с Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΌ Π¦ΠžΠ”ΠΎΠΌ

InfiniBand ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² качСствС локальной сСти, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ для соСдинСния стоСчного оборудования, Π° ΠΌΠ΅ΠΆΠ΄Ρƒ двумя гСографичСски распрСдСлСнными Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°ΠΌΠΈ InfiniBand-ΡΠ΅Ρ‚ΡŒ Π½Π΅ ΠΏΡ€ΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ bridge/dispatcher, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Ethernet-сСтям ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ сообщСний ΠΈ рСтранслируСт всС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ IB-ΡΠ΅Ρ‚ΡŒ. Когда Π½ΡƒΠΆΠ½Π° миграция с Π¦ΠžΠ”, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ, с ΠΊΠ°ΠΊΠΈΠΌ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π˜Ρ‚ΠΎΠ³ΠΈ

Всё Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π±Ρ‹Π»ΠΎ сдСлано Π½Π΅ Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, понадобилось нСсколько ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΌΡ‹ создали Π·Π° мСсяц, Π½ΠΎ Π΄ΠΎΠ²ΠΎΠ΄ΠΊΠ° Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ состояния заняла Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… Π»Π΅Ρ‚. ΠœΡ‹ ΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ компромисса ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ΠΌ надёТности систСмы.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ систСма Π±Ρ‹Π»Π° сильно ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°, ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ восстановлСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π΄Π²ΡƒΡ… нСзависимых источников. Если Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сообщСний ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Π»ΠΎΠ³ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ источника β€” ΠΈΠ· Risk Engine. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… всСй систСмы.

Помимо ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π½Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ клиСнтский API, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈ Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹, Π½ΠΈ ΠΊΡ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»ΠΊΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ. ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ интСрфСйсы, Π½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² модСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ.

Π’Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ нашСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΡ‹ Π½Π°Π·Π²Π°Π»ΠΈ Rebus β€” ΠΊΠ°ΠΊ сокращСниС ΠΎΡ‚ Π΄Π²ΡƒΡ… самых Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, Risk Engine ΠΈ BUS.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ огромная распрСдСлённая систСма. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ с Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹ΠΌ Gateway, Π»ΠΈΠ±ΠΎ с ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠΌ, Π»ΠΈΠ±ΠΎ с ΠΎΠ±ΠΎΠΈΠΌΠΈ сразу.

Π§Π΅Π³ΠΎ ΠΌΡ‹ Π² ΠΈΡ‚ΠΎΠ³Π΅ добились:

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы Московской Π±ΠΈΡ€ΠΆΠΈ. Π§Π°ΡΡ‚ΡŒ 2

Π‘Π½ΠΈΠ·ΠΈΠ»ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠŸΡ€ΠΈ нСбольшом ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ систСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ прСдыдущая вСрсия, Π½ΠΎ ΠΏΡ€ΠΈ этом Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.

Пиковая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выросла с 50 тыс. Π΄ΠΎ 180 тыс. Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду. Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌΡƒ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ СдинствСнный ΠΏΠΎΡ‚ΠΎΠΊ свСдСния заявок.

Π•ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ дальнСйшСго ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ: распараллСливаниС matching ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ схСмы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Gateway. БСйчас всС Gateway Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ схСмС, которая ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ пСрСстаёт Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

НапослСдок ΠΌΠΎΠ³Ρƒ Π΄Π°Ρ‚ΡŒ нСсколько совСтов Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ энтСрпрайз-систСмы:

  • Всё врСмя Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌΡƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ всСгда Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ.
  • Быстро ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ОсобСнно, Ссли Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ максимальной надСТности ΠΏΠΎ мноТСству ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Π§Π΅ΠΌ большС ΡƒΠ·Π»ΠΎΠ², Ρ‚Π΅ΠΌ большС Π½ΡƒΠΆΠ½ΠΎ рСсурсов Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.
  • ВсС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ рСсурсы Π½Π° исслСдованиС, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ сопровоТдСниС.
  • НС ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ вопросов надёТности ΠΈ восстановлСния систСмы послС сбоСв, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΈΡ… Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС проСктирования.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com