Иногда Π±ΠΎΠ»ΡŒΡˆΠ΅Β β€” это мСньшС. Когда ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

Как ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ постов, появилась ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с распрСдСлённой слуТбой, Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ эту слуТбу Π­Π»Π²ΠΈΠ½. На этот Ρ€Π°Π· я Π½Π΅ сам ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΠ½Π΅ сообщили рСбята с клиСнтской части.

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

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Π­Π»Π²ΠΈΠ½Π° Π² тСстированиС, я ΠΏΡ€ΠΎΠ²Ρ‘Π» ΠΌΠ½ΠΎΠ³ΠΎ экспСримСнтов с 40 тыс. запросов Π² сСкунду (QPS), всС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠ΅Π½Π΅Π΅ 10 мс. Π― Π³ΠΎΡ‚ΠΎΠ² Π±Ρ‹Π» Π·Π°ΡΠ²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ согласСн с ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ. Но Π΅Ρ‰Ρ‘ Ρ€Π°Π· взглянув Π½Π° письмо, я ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅: я Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ тСстировал условия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ упомянули, ΠΈΡ… QPS Π±Ρ‹Π» Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ ΠΌΠΎΠΉ. Π― тСстировал Π½Π° 40k QPS, Π° ΠΎΠ½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° 1k. Π― запустил Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ экспСримСнт, Π½Π° этот Ρ€Π°Π· с Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΌ QPS, просто Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π»Π°ΠΆΠΈΡ‚ΡŒ ΠΈΡ….

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я ΠΏΠΈΡˆΡƒ ΠΎΠ± этом Π² Π±Π»ΠΎΠ³Π΅Β β€” вСроятно, Π²Ρ‹ ΡƒΠΆΠ΅ поняли: ΠΈΡ… Ρ†ΠΈΡ„Ρ€Ρ‹ оказались ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ. Π― провСрял своСго Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° снова ΠΈ снова, всё с Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ: Π½ΠΈΠ·ΠΊΠΎΠ΅ количСство запросов Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство запросов с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 10 мс. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли Π½Π° 40k QPS ΠΎΠΊΠΎΠ»ΠΎ 50 запросов Π² сСкунду ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π»ΠΈ 50 мс, Ρ‚ΠΎ Π½Π° 1k QPS ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду Π±Ρ‹Π»ΠΎ 100 запросов Π²Ρ‹ΡˆΠ΅ 50 мс. ΠŸΠ°Ρ€Π°Π΄ΠΎΠΊΡ!

Иногда большС — это мСньшС. Когда ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

Π‘ΡƒΠΆΠ°Π΅ΠΌ ΠΊΡ€ΡƒΠ³ поиска

Π‘Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ²ΡˆΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² распрСдСлённой систСмС со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ список ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹Ρ…. ΠšΠΎΠΏΠ½Ρ‘ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π­Π»Π²ΠΈΠ½Π°:

Иногда большС — это мСньшС. Когда ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ являСтся список Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (сСтСвыС Π²Ρ‹Π·ΠΎΠ²Ρ‹/поиск ΠΏΠΎ диску ΠΈ Ρ‚.Β Π΄.). ΠŸΠΎΠΏΡ‹Ρ‚Π°Π΅ΠΌΡΡ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π³Π΄Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°. Помимо ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Π­Π»Π²ΠΈΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ шаг: ΠΎΠ½ обращаСтся ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Однако это Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ кластСрС с Π­Π»Π²ΠΈΠ½ΠΎΠΌ, поэтому Ρ‚Π°ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ мСньшС, Ρ‡Π΅ΠΌ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π˜Ρ‚Π°ΠΊ, список ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹Ρ…:

  1. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ Π­Π»Π²ΠΈΠ½Ρƒ.
  2. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ Π­Π»Π²ΠΈΠ½Π° ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….
  3. Поиск Π½Π° дискС Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ….
  4. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ Π­Π»Π²ΠΈΠ½Ρƒ.
  5. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ Π­Π»Π²ΠΈΠ½Π° ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΠΈ ΠΏΡ€ΠΈ Ρ‡Ρ‘ΠΌ

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

Иногда большС — это мСньшС. Когда ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

Как Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΡ€ΠΈ использовании сСрвСра ping-ping Π½Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π° список ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹Ρ… сокращаСтся Π²Π΄Π²ΠΎΠ΅:

  1. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ Π­Π»Π²ΠΈΠ½Ρƒ.
  2. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ Π­Π»Π²ΠΈΠ½Π° ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.

Π—Π΄ΠΎΡ€ΠΎΠ²ΠΎ! Бписок быстро сокращаСтся. Π― Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ выяснил ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ.

gRPC

БСйчас самоС врСмя ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π°ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ°: gRPC. Π­Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚ Google для внутрипроцСссной связи RPC. Π₯отя gRPC Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, я ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· использовал Π΅Π³ΠΎ Π² систСмС Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°, ΠΈ я ΠΎΠΆΠΈΠ΄Π°Π», Ρ‡Ρ‚ΠΎ моя рСализация Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉΒ β€” мягко говоря.

НаличиС gRPC Π² стСкС ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ»ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ вопрос: ΠΌΠΎΠΆΠ΅Ρ‚, это моя рСализация ΠΈΠ»ΠΈ сам gRPC Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ? ДобавляСм Π² список Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ:

  1. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ gRPC
  2. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° gRPC Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ выполняСт сСтСвой Π²Ρ‹Π·ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ gRPC Π½Π° сСрвСрС
  3. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° gRPC обращаСтся ΠΊ Π­Π»Π²ΠΈΠ½Ρƒ (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅Ρ‚ Π² случаС сСрвСра ping-pong)

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, ΠΊΠ°ΠΊ выглядит ΠΊΠΎΠ΄, моя рСализация ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°/Π­Π»Π²ΠΈΠ½Π° Π½Π΅ сильно отличаСтся ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² async.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ список Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ gRPC Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования собствСнной (шаблонной?) ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΏΠ»Π΅Ρ‚Π°ΡŽΡ‚ΡΡ стСк выполнСния gRPC ΠΈ рСализация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π Π°Π΄ΠΈ простоты Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ этой ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всё исправит

Π’Ρ‹Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΠ² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ…, я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»: Β«Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π»Π΅Π³ΠΊΠΎ! ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈ ΡƒΠ·Π½Π°Π΅ΠΌ, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°Β». Π― большой ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ профилирования, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ CPU ΠΎΡ‡Π΅Π½ΡŒ быстры ΠΈ Ρ‡Π°Ρ‰Π΅ всСго Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ·ΠΊΠΈΠΌ мСстом. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ происходит, ΠΊΠΎΠ³Π΄Π° процСссор Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘. Π’ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ CPU сдСлано ΠΈΠΌΠ΅Π½Π½ΠΎ для этого: ΠΎΠ½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ записываСт всС контСкстныС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ.

Π― взял Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ профиля: ΠΏΠΎΠ΄ высоким QPS (малСнькая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°) ΠΈ с ping-pong сСрвСром Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ QPS (большая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°), ΠΊΠ°ΠΊ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‚Π°ΠΊ ΠΈ Π½Π° сторонС сСрвСра. И просто Π½Π° всякий случай Ρ‚Π°ΠΊΠΆΠ΅ взял ΠΎΠ±Ρ€Π°Π·Π΅Ρ† профиля процСссора. ΠŸΡ€ΠΈ сравнСнии ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ я ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡ‰Ρƒ Π°Π½ΠΎΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². НапримСр, Π½Π° ΠΏΠ»ΠΎΡ…ΠΎΠΉ сторонС с высокой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ происходит Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ контСкста (Π² 10 ΠΈ большС Ρ€Π°Π·). Но Π² ΠΌΠΎΡ‘ΠΌ случаС количСство ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ контСкста практичСски совпадало. К ΠΌΠΎΠ΅ΠΌΡƒ уТасу, Ρ‚Π°ΠΌ Π½Π΅ оказалось Π½ΠΈΡ‡Π΅Π³ΠΎ сущСствСнного.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

Π― Π±Ρ‹Π» Π² отчаянии. Π― Π½Π΅ Π·Π½Π°Π», ΠΊΠ°ΠΊΠΈΠ΅ Π΅Ρ‰Ρ‘ инструмСнты ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π° ΠΌΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ»Π°Π½ состоял ΠΏΠΎ сути Π² ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΈ экспСримСнтов с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вариациями, Π° Π½Π΅ Ρ‡Ρ‘Ρ‚ΠΊΠΎΠΌ диагностировании ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π§Ρ‚ΠΎ, Ссли

Π‘ самого Π½Π°Ρ‡Π°Π»Π° мСня бСспокоила ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ 50 мс. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ большоС врСмя. Π― Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Ρƒ Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ куски ΠΈΠ· ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ° Π½Π΅ смогу Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ, какая Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π—Π°Ρ‚Π΅ΠΌ послСдовал экспСримСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сработал.

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π·Π°Π΄Π½ΠΈΠΌ ΡƒΠΌΠΎΠΌ каТСтся, Ρ‡Ρ‚ΠΎ всё Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ. Π― помСстил ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° ΠΎΠ΄Π½Ρƒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ с Π­Π»Π²ΠΈΠ½ΠΎΠΌΒ β€” ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» запрос Π² localhost. И ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ исчСзло!

Иногда большС — это мСньшС. Когда ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

Π§Ρ‚ΠΎ-Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅ Ρ‚Π°ΠΊ с ΡΠ΅Ρ‚ΡŒΡŽ.

ОсваиваСм Π½Π°Π²Ρ‹ΠΊΠΈ сСтСвого ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°

Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒΡΡ: ΠΌΠΎΠΈ знания сСтСвых Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ уТасны, особСнно с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Но ΡΠ΅Ρ‚ΡŒ Π±Ρ‹Π»Π° Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹ΠΌ, ΠΈ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Π΅Ρ‘ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π»ΡŽΠ±ΠΈΡ‚ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ. Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ ping ΠΈ tracert казалось достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π½Π°Ρ‡Π°Π»ΠΎΠΌ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сСтСвого транспорта.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, я запустил PsPing Π½Π° TCP-ΠΏΠΎΡ€Ρ‚ Π­Π»Π²ΠΈΠ½Π°. Π― использовал ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ β€” Π½ΠΈΡ‡Π΅Π³ΠΎ особСнного. Из Π±ΠΎΠ»Π΅Π΅ тысячи ΠΏΠΈΠ½Π³ΠΎΠ² Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π΅ прСвысил 10 мс, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ для Ρ€Π°Π·ΠΎΠ³Ρ€Π΅Π²Π°. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ 50 мс Π² 99-ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»Π΅: Ρ‚Π°ΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 100 запросов ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠΊΠΎΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ 50 мс.

Π—Π°Ρ‚Π΅ΠΌ я ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» tracert: ΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² ΠΏΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π­Π»Π²ΠΈΠ½ΠΎΠΌ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Но ΠΈ трСйсСр вСрнулся с пустыми Ρ€ΡƒΠΊΠ°ΠΌΠΈ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π±Ρ‹Π» Π½Π΅ ΠΌΠΎΠΉ ΠΊΠΎΠ΄, Π½Π΅ рСализация gRPC ΠΈ Π½Π΅ ΡΠ΅Ρ‚ΡŒ. Π― ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π» Π²ΠΎΠ»Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° этого Π½Π΅ ΠΏΠΎΠΉΠΌΡƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ОБ ΠΌΡ‹ находимся

gRPC ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Linux, Π½ΠΎ для Windows это экзотика. Π― Ρ€Π΅ΡˆΠΈΠ» провСсти экспСримСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сработал: я создал Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Linux, скомпилировал Π­Π»Π²ΠΈΠ½Π° для Linux ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ» Π΅Ρ‘.

Иногда большС — это мСньшС. Когда ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

И Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ: Π² ping-pong сСрвСрС Linux Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, ΠΊΠ°ΠΊ Ρƒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Windows, хотя источник Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ отличался. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ gRPC для Windows.

Алгоритм НСйгла

Всё это врСмя я Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Ρ„Π»Π°Π³Π° gRPC. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я понял, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Π² gRPC Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Ρ„Π»Π°Π³Π° Windows. Π― Π½Π°ΡˆΡ‘Π» Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ RPC, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для всСх установлСнных Ρ„Π»Π°Π³ΠΎΠ² Winsock. Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ» всС эти Ρ„Π»Π°Π³ΠΈ Π² gRPC ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ» Π­Π»Π²ΠΈΠ½Π° Π½Π° Windows, Π² исправлСнном сСрвСрС ping-pong ΠΏΠΎΠ΄ Windows!

Иногда большС — это мСньшС. Когда ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

ΠŸΠΎΡ‡Ρ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎ: я Π½Π°Ρ‡Π°Π» ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ, ΠΏΠΎΠΊΠ° Π½Π΅ Π²Π΅Ρ€Π½ΡƒΠ»Π°ΡΡŒ рСгрСссия, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ я смог Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ. Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстный TCP_NODELAY, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° НСйгла.

Алгоритм НСйгла пытаСтся ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎ сСти, ΠΏΡƒΡ‚Ρ‘ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ прСвысит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ количСство Π±Π°ΠΉΡ‚. Π₯отя это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ приятно для срСднСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для сСрвСров Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ОБ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сообщСния, вызывая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ QPS. Π£ gRPC Π±Ρ‹Π» установлСн этот Ρ„Π»Π°Π³ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Linux для сокСтов TCP, Π½ΠΎ Π½Π΅ для Windows. Π― это исправил.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ QPS Π²Ρ‹Π·Π²Π°Π»Π° оптимизация ОБ. ΠžΠ³Π»ΡΠ΄Ρ‹Π²Π°ΡΡΡŒ Π½Π°Π·Π°Π΄, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΎ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ядра, Π° Π½Π΅ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. НС знаю, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ НСйгла Ρ‡Π΅Ρ€Π΅Π· Π·Π°Ρ…Π²Π°Ρ‚Ρ‹ ETW, Π½ΠΎ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно.

Π§Ρ‚ΠΎ касаСтся экспСримСнта localhost, ΠΎΠ½, вСроятно, Π½Π΅ касался фактичСского сСтСвого ΠΊΠΎΠ΄Π°, ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ НСйгла Π½Π΅ запустился, поэтому ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ исчСзли, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ обратился ΠΊ Π­Π»Π²ΠΈΠ½Ρƒ Ρ‡Π΅Ρ€Π΅Π· localhost.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠΈ количСства запросов Π² сСкунду, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ НСйгла Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π² вашСм спискС ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹Ρ…!

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ