ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ

Наши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΈΡˆΡƒΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ сообщСния, Π½Π΅ зная усталости.
ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ
Π­Ρ‚ΠΎ довольно ΠΌΠ½ΠΎΠ³ΠΎ. Если Π±Ρ‹ Π’Ρ‹ задались Ρ†Π΅Π»ΡŒΡŽ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС сообщСния всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, это Π±Ρ‹ заняло большС 150 тысяч Π»Π΅Ρ‚. ΠŸΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π’Ρ‹ довольно ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Π½Π½Ρ‹ΠΉ Ρ‡Ρ‚Π΅Ρ† ΠΈ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ сообщСниС Π½Π΅ большС сСкунды.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… критичСски Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΠΎΠ³ΠΈΠΊΠ° хранСния ΠΈ доступа ΠΊ Π½ΠΈΠΌ Π±Ρ‹Π»Π° построСна ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ. Π˜Π½Π°Ρ‡Π΅ Π² ΠΎΠ΄ΠΈΠ½ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠΆ ΠΈ прСкрасный ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ скоро всё ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ.

Для нас этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ наступил ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄. Как ΠΌΡ‹ ΠΊ этому ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π² ΠΈΡ‚ΠΎΠ³Π΅ β€” рассказываСм ΠΏΠΎ порядку.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ вопроса

Π’ самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сообщСния Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° связкС PHP-бэкСнда ΠΈ MySQL. Π­Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для нСбольшого студСнчСского сайта. Однако этот сайт Π±Π΅Π·ΡƒΠ΄Π΅Ρ€ΠΆΠ½ΠΎ рос ΠΈ Π½Π°Ρ‡Π°Π» Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ сСбя.

Π’ ΠΊΠΎΠ½Ρ†Π΅ 2009 Π³ΠΎΠ΄Π° Π±Ρ‹Π»ΠΎ написано ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ text-engine, Π° Π² 2010 Π½Π° Π½Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π²Π΅Π»ΠΈ сообщСния.

Π’ text-engine сообщСния Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ списками β€” своСго Ρ€ΠΎΠ΄Π° Β«ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ ящиками». ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ список опрСдСляСтся uid’ом β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ-Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ всСх этих сообщСний. Π£ сообщСния Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ собСсСдника, тСкст, влоТСния ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния Π²Π½ΡƒΡ‚Ρ€ΠΈ «ящика» β€” local_id, ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ измСняСтся ΠΈ назначаСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Π½ΠΎΠ²Ρ‹Ρ… сообщСний. Β«Π―Ρ‰ΠΈΠΊΠΈΒ» нСзависимы ΠΈ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΈΠΆΠΊΠ° Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, связь ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ происходит ΡƒΠΆΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ PHP. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° структуру Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ возмоТности text-engine ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠΎΠΆΠ½ΠΎ здСсь.
ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ
Π­Ρ‚ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ достаточно для пСрСписки Π΄Π²ΡƒΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π£Π³Π°Π΄Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΏΠΎΡ‚ΠΎΠΌ?

Π’ ΠΌΠ°Π΅ 2011 Π³ΠΎΠ΄Π° Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ появились бСсСды с нСсколькими участниками β€” ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‡Π°Ρ‚Ρ‹. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ ΠΌΡ‹ подняли Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… кластСра β€” member-chats ΠΈ chat-members. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‡Π°Ρ‚Π°Ρ… ΠΏΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΏΠΎ Ρ‡Π°Ρ‚Π°ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ самих списков это, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΠ²ΡˆΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ врСмя добавлСния Π² Ρ‡Π°Ρ‚.

β€” PHP, Π΄Π°Π²Π°ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠΌ сообщСниС Π² Ρ‡Π°Ρ‚, β€” Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.
β€” Ну Π΄Π°Π²Π°ΠΉ, {username}, β€” Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ PHP.
ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ
Π’ этой схСмС Π΅ΡΡ‚ΡŒ минусы. Бинхронизация ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²ΠΎΠ·Π»ΠΎΠΆΠ΅Π½Π° Π½Π° PHP. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ Ρ‡Π°Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ сообщСния Π² Π½ΠΈΡ… β€” опасная история. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ экзСмпляр text-engine зависит ΠΎΡ‚ uid, участники Ρ‡Π°Ρ‚Π° ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ сообщСниС с Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π‘ этим ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΆΠΈΡ‚ΡŒ, Ссли Π±Ρ‹ прогрСсс стоял Π½Π° мСстС. Но Π½Π΅ Π±Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΌΡƒ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ 2015 Π³ΠΎΠ΄Π° ΠΌΡ‹ запустили сообщСния сообщСств, Π° Π² Π½Π°Ρ‡Π°Π»Π΅ 2016 β€” API для Π½ΠΈΡ…. Π‘ появлСниСм ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Ρ‡Π°Ρ‚-Π±ΠΎΡ‚ΠΎΠ² Π² сообщСствах ΠΎ равномСрности распрСдСлСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ.

Π“ΠΎΠ΄Π½Ρ‹ΠΉ Π±ΠΎΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ нСсколько ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² сообщСний Π² сутки β€” Π΄Π°ΠΆΠ΅ самыС словоохотливыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚. А это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ экзСмплярам text-engine, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΆΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Π²ΠΎΡ‚ Π±ΠΎΡ‚Ρ‹, стало Π΄ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ.

Π”Π²ΠΈΠΆΠΊΠΈ сообщСний Π² 2016 Π³ΠΎΠ΄Ρƒ β€” это ΠΏΠΎ 100 экзСмпляров chat-members ΠΈ member-chats, ΠΈ 8000 text-engine. Они Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π»ΠΈΡΡŒ Π½Π° тысячС сСрвСров, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ с 64 Π“Π± памяти. Π’ качСствС ΠΏΠ΅Ρ€Π²ΠΎΠΉ экстрСнной ΠΌΠ΅Ρ€Ρ‹ ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Π½Π° 32 Π“Π±. ΠŸΡ€ΠΈΠΊΠΈΠ½ΡƒΠ»ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Ρ‹. Π‘Π΅Π· ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ этого Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ Π±Ρ‹ Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° Π³ΠΎΠ΄. НуТно Π»ΠΈΠ±ΠΎ Ρ€Π°Π·ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ, Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сами Π‘Π”.

Π’ силу особСнностСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒ ΠΆΠ΅Π»Π΅Π·ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€Π°Ρ‚Π½ΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΡƒΠ΄Π²ΠΎΠΈΡ‚ΡŒ количСство машин β€” ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, это довольно Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ. Π‘ΡƒΠ΄Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Новая концСпция

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Π°Ρ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° β€” Ρ‡Π°Ρ‚. Π£ Ρ‡Π°Ρ‚Π° Π΅ΡΡ‚ΡŒ список сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ Π½Π΅ΠΌΡƒ. Π£ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΅ΡΡ‚ΡŒ список Ρ‡Π°Ρ‚ΠΎΠ².

НСобходимый ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” это Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…:

  • chat-engine. Π­Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Ρ‡Π°Ρ‚ΠΎΠ². Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π°Ρ‚Π° Π΅ΡΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ Π½Π΅ΠΌΡƒ относятся. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сообщСния Π΅ΡΡ‚ΡŒ тСкст ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‡Π°Ρ‚Π° β€” chat_local_id.
  • user-engine. Π­Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² users β€” ссылок Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΅ΡΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ peer_id (собСсСдников β€” Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‡Π°Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ сообщСств) ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ сообщСний. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ peer_id Π΅ΡΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ Π½Π΅ΠΌΡƒ относятся. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сообщСния Π΅ΡΡ‚ΡŒ chat_local_id ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния для этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ β€” user_local_id.

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ
НовыС кластСры ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TCP β€” это Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ порядок запросов Π½Π΅ измСнится. Π‘Π°ΠΌΠΈ запросы ΠΈ подтвСрТдСния для Π½ΠΈΡ… Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Тёсткий диск β€” поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послС сбоя ΠΈΠ»ΠΈ пСрСзапуска Π΄Π²ΠΈΠΆΠΊΠ°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ user-engine ΠΈ chat-engine это 4 тысячи ΡˆΠ°Ρ€Π΄ΠΎΠ² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ запросов ΠΌΠ΅ΠΆΠ΄Ρƒ кластСрами Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ (Π° Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΅Ρ‘ Π½Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ β€” ΠΈ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро).

Π Π°Π±ΠΎΡ‚Π° с диском Π² Π½Π°ΡˆΠΈΡ… Π±Π°Π·Π°Ρ… Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв основана Π½Π° сочСтании Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Π±ΠΈΠ½Π»ΠΎΠ³Π°), статичСских снимков ΠΈ частичного ΠΎΠ±Ρ€Π°Π·Π° Π² памяти. ИзмСнСния Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ дня ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² Π±ΠΈΠ½Π»ΠΎΠ³, пСриодичСски создаётся снимок Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния. Π‘Π½ΠΈΠΌΠΎΠΊ прСдставляСт собой Π½Π°Π±ΠΎΡ€ структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ. Он состоит ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° (мСтаиндСкса снимка) ΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»ΠΎΠ². Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ постоянно хранится Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· снимка. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ» Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π² Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. ΠŸΡ€ΠΈ запросС ΠΊ Π±Π°Π·Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° снимка читаСтся Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ», Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ измСнСния Π² Π±ΠΈΠ½Π»ΠΎΠ³Π΅, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ ΡƒΠΆΠ΅ послС создания снимка. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ прСимущСствах Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ здСсь.

ΠŸΡ€ΠΈ этом Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° самом Тёстком дискС ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· Π² сутки β€” Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ Π½ΠΎΡ‡ΡŒΡŽ ΠΏΠΎ МосквС, ΠΊΠΎΠ³Π΄Π° Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° минимальна. Благодаря этому (зная, Ρ‡Ρ‚ΠΎ структура Π½Π° дискС Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ суток постоянная) ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π½Π° массивы фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° β€” ΠΈ Π·Π° счёт этого Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² памяти.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния Π² Π½ΠΎΠ²ΠΎΠΉ схСмС выглядит Ρ‚Π°ΠΊ:

  1. PHP backend обращаСтся ΠΊ user-engine с запросом Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ сообщСния.
  2. user-engine проксируСт запрос Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ экзСмпляр chat-engine, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² user-engine chat_local_id β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ сообщСния Π²Π½ΡƒΡ‚Ρ€ΠΈ этого Ρ‡Π°Ρ‚Π°. Π—Π°Ρ‚Π΅ΠΌ chat_engine рассылаСт сообщСниС всСм получатСлям Π² Ρ‡Π°Ρ‚Π΅.
  3. user-engine ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΡ‚ chat-engine chat_local_id ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² PHP user_local_id β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния для этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сообщСниями Ρ‡Π΅Ρ€Π΅Π· API.

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ
Но ΠΏΠΎΠΌΠΈΠΌΠΎ собствСнно рассылки сообщСний Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ:

  • Подсписки β€” это Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, самыС свСТиС сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, открывая список Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ². НСпрочитанныС сообщСния, сообщСния с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ (Β«Π’Π°ΠΆΠ½Ρ‹Π΅Β», Β«Π‘ΠΏΠ°ΠΌΒ» ΠΈ Ρ‚.Π΄.).
  • Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ сообщСний Π² chat-engine
  • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сообщСний Π² user-engine
  • Поиск (ΠΏΠΎ всСм Π΄ΠΈΠ°Π»ΠΎΠ³Π°ΠΌ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ).
  • ОбновлСниС Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Longpolling).
  • Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ истории для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ….

ВсС подсписки β€” это быстро ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ структуры. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Splay-Π΄Π΅Ρ€Π΅Π²ΡŒΡ. Π’Π°ΠΊΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ Π΄Π΅Ρ€Π΅Π²Π° Ρƒ нас ΠΈΠ½ΠΎΠ³Π΄Π° хранится Ρ†Π΅Π»Ρ‹ΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ сообщСний ΠΈΠ· снимка β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послС Π½ΠΎΡ‡Π½ΠΎΠΉ пСрСиндСксации Π΄Π΅Ρ€Π΅Π²ΠΎ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π»Π΅ΠΆΠ°Ρ‚ всС сообщСния подсписка. Splay-Π΄Π΅Ρ€Π΅Π²ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ вставки Π² сСрСдину Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Π½Π΅ думая ΠΎ балансировкС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Splay Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ это экономит Π½Π°ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

БообщСния ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ большой ΠΎΠ±ΡŠΡ‘ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π² основном тСкстовой, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ. ΠŸΡ€ΠΈ этом Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ сообщСниС. Для сТатия сообщСний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° с собствСнными эвристиками β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² сообщСниях слова Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‚ΡΡ с Β«Π½Π΅ словами» β€” ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Π·Π½Π°ΠΊΠ°ΠΌΠΈ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ, β€” Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… особСнностях использования символов для русского языка.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС, Ρ‡Π΅ΠΌ Ρ‡Π°Ρ‚ΠΎΠ², для экономии random-access запросов ΠΊ диску Π² chat-engine ΠΌΡ‹ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌ сообщСния Π² user-engine.

Поиск ΠΏΠΎ сообщСниям Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ запрос ΠΈΠ· user-engine ΠΊΠΎ всСм экзСмплярам chat-engine, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Ρ‡Π°Ρ‚Ρ‹ этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ Π² самом user-engine.

Π§Ρ‚ΠΎ ΠΆ, всС Π΄Π΅Ρ‚Π°Π»ΠΈ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²ΡƒΡŽ схСму β€” ΠΈ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ этого Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ.

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ…

Π˜Ρ‚Π°ΠΊ, Ρƒ нас Π΅ΡΡ‚ΡŒ text-engine, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ сообщСния ΠΏΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΈ Π΄Π²Π° кластСра chat-members ΠΈ member-chats, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‡Π°Ρ‚Π°Ρ… ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… Π² Π½ΠΈΡ…. Как ΠΎΡ‚ этого ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ user-engine ΠΈ chat-engine?

member-chats Π² старой схСмС использовался прСимущСствСнно для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠœΡ‹ довольно быстро пСрСнСсли Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π΅Π³ΠΎ Π² chat-members, ΠΈ Π΄Π°Π»Π΅Π΅ Π² процСсС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ½ ΡƒΠΆΠ΅ Π½Π΅ участвовал.

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π° chat-members. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ 100 экзСмпляров, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ chat-engine β€” 4 тысячи. Для ΠΏΠ΅Ρ€Π΅Π»ΠΈΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ привСсти ΠΈΡ… Π² соотвСтствиС β€” для этого chat-members Ρ€Π°Π·Π±ΠΈΠ»ΠΈ Π½Π° Ρ‚Π΅ ΠΆΠ΅ 4 тысячи экзСмпляров, Π° послС Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π»ΠΎΠ³Π° chat-members Π² chat-engine.
ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ
Π’Π΅ΠΏΠ΅Ρ€ΡŒ chat-engine Π·Π½Π°Π΅Ρ‚ ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‡Π°Ρ‚Π°Ρ… ΠΈΠ· chat-members, Π½ΠΎ Π΅ΠΌΡƒ ΠΏΠΎΠΊΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ извСстно ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³Π°Ρ… с двумя собСсСдниками. Π’Π°ΠΊΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ Π»Π΅ΠΆΠ°Ρ‚ Π² text-engine с привязкой ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π·Π°Π±ΠΈΡ€Π°Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Β«Π² Π»ΠΎΠ±Β»: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр chat-engine Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π» Ρƒ всСх экзСмпляров text-engine, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ Π½ΠΈΡ… Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π΅ΠΌΡƒ Π΄ΠΈΠ°Π»ΠΎΠ³.

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ β€” chat-engine Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‡Π°Ρ‚Ρ‹, ΠΈ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ.
НуТно ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ сообщСния Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‡Π°Ρ‚Π°Ρ… β€” Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΈΡ‚ΠΎΠ³Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π°Ρ‚Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список сообщСний Π² Π½Ρ‘ΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° chat-engine Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· text-engine всС сообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ· этого Ρ‡Π°Ρ‚Π°. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΈΡ… довольно ΠΌΠ½ΠΎΠ³ΠΎ (Π΄ΠΎ сотни ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ²), Π½ΠΎ Π·Π° ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‡Π°Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ помСщаСтся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠœΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ нСупорядочСнныС сообщСния, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… копиях β€” вСдь Π²Ρ‹Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ всС ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… экзСмпляров text-engine, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ. Π—Π°Π΄Π°Ρ‡Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСния ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠΎΠΏΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ лишнСС мСсто.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сообщСния Π΅ΡΡ‚ΡŒ timestamp, содСрТащий врСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ, ΠΈ тСкст. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ врСмя для сортировки β€” ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° самыС старыС сообщСния участников ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‡Π°Ρ‚Π° ΠΈ сравниваСм Ρ…ΡΡˆΠΈ ΠΎΡ‚ тСкста ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ, двигаясь Π² сторону увСличСния timestamp. Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠΎΠΏΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΈ Ρ…ΡΡˆ, ΠΈ timestamp, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это Π½Π΅ всСгда Ρ‚Π°ΠΊ. Как Π’Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, синхронизация Π² старой схСмС ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ силами PHP β€” ΠΈ Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях врСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ сообщСния ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΎΡΡŒ Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ этих случаях ΠΌΡ‹ позволяли сСбС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ timestamp β€” ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… сСкунды. Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Ρ€Π°Π·Π½Ρ‹ΠΉ порядок сообщСний для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΌΡ‹ допускали созданиС лишнСй ΠΊΠΎΠΏΠΈΠΈ, с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ порядка для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ПослС этого Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ сообщСниях Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‡Π°Ρ‚Π°Ρ… Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² user-engine. И здСсь Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ нСприятная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сообщСний. Π’ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходят Π² Π΄Π²ΠΈΠΆΠΎΠΊ, упорядочСны строго ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ user_local_id. Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠ· старого Π΄Π²ΠΈΠΆΠΊΠ° Π² user-engine сообщСния тСряли это ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ свойство. ΠŸΡ€ΠΈ этом для удобства тСстирования Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ быстро ΠΊ Π½ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π½ΠΈΡ… ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅.

Для хранСния ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сообщСний ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ….

Она прСдставляСт собой Π²Π΅ΠΊΡ‚ΠΎΡ€ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ, Π³Π΄Π΅ всС ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ β€” Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ ΠΈ упорядочСны ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, с особым порядком элСмСнтов. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ с индСксами ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ элСмСнты отсортированы. Поиск элСмСнта Π² Ρ‚Π°ΠΊΠΎΠΉ структурС выполняСтся Π·Π° врСмя ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… поисков. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта выполняСтся Π°ΠΌΠΎΡ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π·Π° ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· старых Π΄Π²ΠΈΠΆΠΊΠΎΠ² Π² Π½ΠΎΠ²Ρ‹Π΅. Но этот процСсс Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ нСсколько Π΄Π½Π΅ΠΉ β€” ΠΈ вряд Π»ΠΈ Π½Π° эти Π΄Π½ΠΈ наши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ бросят ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΡƒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ сообщСния Π·Π° это врСмя, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ Π½Π° схСму Ρ€Π°Π±ΠΎΡ‚Ρ‹, которая задСйствуСт ΠΈ старыС, ΠΈ Π½ΠΎΠ²Ρ‹Π΅ кластСры.

Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ΄Ρ‘Ρ‚ Π² chat-members ΠΈ user-engine (Π° Π½Π΅ Π² text-engine, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ старой схСмС). user-engine проксируСт запрос ΠΊ chat-engine β€” ΠΈ здСсь ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, смСрТСн ΡƒΠΆΠ΅ этот Ρ‡Π°Ρ‚ ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Π½Π΅Ρ‚. Если Ρ‡Π°Ρ‚ Π΅Ρ‰Π΅ Π½Π΅ смСрТСн, chat-engine Π½Π΅ записываСт сообщСниС ΠΊ сСбС, ΠΈ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² text-engine. Если Ρ‡Π°Ρ‚ ΡƒΠΆΠ΅ смСрТСн Π² chat-engine, ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² user-engine chat_local_id ΠΈ рассылаСт сообщСниС всСм получатСлям. user-engine проксируСт всС Π΄Π°Π½Π½Ρ‹Π΅ Π² text-engine β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² случаС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ всСгда ΠΌΠΎΠ³Π»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄, имСя всС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² старом Π΄Π²ΠΈΠΆΠΊΠ΅. text-engine Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ user_local_id, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ user-engine сохраняСт Ρƒ сСбя ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² бэкСнд.
ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ сообщСний Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с нуля ΠΈ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ
Π’ ΠΈΡ‚ΠΎΠ³Π΅ процСсс ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° выглядит Ρ‚Π°ΠΊ: ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ пустыС кластСры user-engine ΠΈ chat-engine. chat-engine Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ вСсь Π±ΠΈΠ½Π»ΠΎΠ³ chat-members, Π·Π°Ρ‚Π΅ΠΌ запускаСтся проксированиС ΠΏΠΎ схСмС, описанной Π²Ρ‹ΡˆΠ΅. ΠŸΠ΅Ρ€Π΅Π»ΠΈΠ²Π°Π΅ΠΌ старыС Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π²Π° синхронизированных кластСра (старый ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ). ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с text-engine Π½Π° user-engine ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ проксированиС.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Благодаря Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»ΠΈΡΡŒ всС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ качСства Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π²ΠΈΠΆΠΊΠΎΠ², Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ быстрСС Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ Π² сообщСниях (ΠΈ ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΠΈ это Π΄Π΅Π»Π°Ρ‚ΡŒ β€” ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ максимальноС число участников Ρ‡Π°Ρ‚Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ поиск ΠΏΠΎ пСрСсланным сообщСниям, запустили Π·Π°ΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹Π΅ сообщСния ΠΈ подняли Π»ΠΈΠΌΠΈΡ‚ Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ число сообщСний Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ).

ИзмСнСния Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Ρ€Π°Π½Π΄ΠΈΠΎΠ·Π½Ρ‹Π΅. И хочСтся ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π½Π΅ всСгда ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹Π΅ Π³ΠΎΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈ ΠΌΠΈΡ€ΠΈΠ°Π΄Ρ‹ строк ΠΊΠΎΠ΄Π°. chat-engine ΠΈ user-engine вмСстС со всСми Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ историями Π²Ρ€ΠΎΠ΄Π΅ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° для сТатия сообщСний, Splay-Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² ΠΈ структуры для ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сообщСний β€” это ΠΌΠ΅Π½Π΅Π΅ 20 тысяч строк ΠΊΠΎΠ΄Π°. И написали ΠΈΡ… 3 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° всСго Π·Π° 10 мСсяцСв (Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, стоит ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ всС Ρ‚Ρ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° β€” Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½Ρ‹ ΠΌΠΈΡ€Π° ΠΏΠΎ спортивному ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ).

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, вмСсто удвоСния числа сСрвСров ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ ΠΈΡ… числа Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ β€” сСйчас user-engine ΠΈ chat-engine ΠΆΠΈΠ²ΡƒΡ‚ Π½Π° 500 физичСских ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, ΠΏΡ€ΠΈ этом Ρƒ Π½ΠΎΠ²ΠΎΠΉ схСмы Π΅ΡΡ‚ΡŒ большой запас ΠΏΠΎ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. ΠœΡ‹ сэкономили ΠΊΡƒΡ‡Ρƒ Π΄Π΅Π½Π΅Π³ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ β€” это ΠΎΠΊΠΎΠ»ΠΎ $5 ΠΌΠ»Π½ + $750 тысяч Π² Π³ΠΎΠ΄ Π·Π° счёт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… расходов.

ΠœΡ‹ стрСмимся Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для самых слоТных ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π£ нас ΠΈΡ… прСдостаточно β€” ΠΈ поэтому ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ Ρ‚Π°Π»Π°Π½Ρ‚Π»ΠΈΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² ΠΎΡ‚Π΄Π΅Π» Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Если Π’Ρ‹ Π»ΡŽΠ±ΠΈΡ‚Π΅ ΠΈ ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π·Π½Π°Π΅Ρ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Вас ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Π‘Π²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с нашим HR, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ подробности.

Π”Π°ΠΆΠ΅ Ссли эта история Π½Π΅ ΠΏΡ€ΠΎ Вас, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ†Π΅Π½ΠΈΠΌ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ. РасскаТитС Π΄Ρ€ΡƒΠ³Ρƒ ΠΎ вакансии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΈ, Ссли ΠΎΠ½ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ срок, Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ бонус Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ 100 тысяч Ρ€ΡƒΠ±Π»Π΅ΠΉ.

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