--- aliases: tags: - maturity/🌱 date: 2024-11-13 --- WebSocket-соСдинСниС, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ [[../system-design/RESTful|REST]], ΠΈΠΌΠ΅Π΅Ρ‚ состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСно ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса `Session`. Π­Ρ‚ΠΎ создаСт трудности ΠΏΡ€ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ наш сСрвис Ρ‡Π°Ρ‚ΠΎΠ² Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ Π² Kubernetes с 3 Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌΠΈ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‡Π°Ρ‚Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° с нашим ΠΎΠ½Π»Π°ΠΉΠ½-Ρ‡Π°Ρ‚ΠΎΠΌ. [[highload/Балансировка Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ|Балансировщик Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ]], ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ round robin, распрСдСляСт соСдинСния ΠΌΠ΅ΠΆΠ΄Ρƒ трСмя Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌΠΈ, ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ соСдинСниС (каТдая Π²ΠΊΠ»Π°Π΄ΠΊΠ°) ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° свою Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ==каТдая Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ своих ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅ΠΏΠ»ΠΈΠΊ==. Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ отправляСт Π½ΠΎΠ²ΠΎΠ΅ сообщСниС Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ это сообщСниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅, которая ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ этой Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅. Π•ΡΡ‚ΡŒ нСсколько способов Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для сСрвисов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… WebSocket. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚: 1. **НС ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий**. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прилоТСниях строгая синхронизация ΠΌΠ΅ΠΆΠ΄Ρƒ WebSocket-соСдинСниями Π½Π΅ трСбуСтся. НапримСр, ==Ссли вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСния ΠΈΠ»ΠΈ отправляСт Π΄Π°Π½Π½Ρ‹Π΅ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈ Π²Π°ΠΌ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅Ρ‚ нСобходимости Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.== 2. **Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ балансировки**. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ балансировку Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС соСдинСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‡Π°Ρ‚Π° всСгда Π½Π°ΠΏΡ€Π°Π²Π»ΡΠ»ΠΈΡΡŒ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ распрСдСлСниС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ синхронизации ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌΠΈ. 3. [[Π’ΠΎΠ½ΠΊΠΈΠΉ Websocket ΠΊΠ»ΠΈΠ΅Π½Ρ‚]] *** ## ΠœΠ΅Ρ‚Π° информация **ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../meta/zero/00 HighLoad|00 HighLoad]] **Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: [[architecture/highload/Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅|Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅]] **Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: **Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2024-11-13]] **Автор**:: ### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ - ### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ - [[Π’ΠΎΠ½ΠΊΠΈΠΉ Websocket ΠΊΠ»ΠΈΠ΅Π½Ρ‚]]