Π ΠΠ’Π ΠΠ°Π½ΠΊΠ΅ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΌΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΠ΅ΠΌΡΡ Π½Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π½Π΅Π΄ΡΡΠ½Π½ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΡΠ°Π» ElasticSearch, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΠΎΠΈΡΠΊ ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ Π²ΡΠ΄Π°ΡΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΈ Π½ΠΎΠ²Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ. ΠΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΡΠΎΡΡΠΎΠΌ ΠΎΠ±ΡΡΠΌΠ° Π΄Π°Π½Π½ΡΡ
, ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ΠΌ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌΠΈ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΠΈ. Π ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ Π΄Π΅Π»ΠΈΠΌΡΡ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ
Π·Π°Π΄Π°Ρ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ.
ΠΠ°ΠΊ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π½ΠΎΠ²Π°Ρ Π»Π΅Π½ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΠ’Π ΠΠ°Π½ΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π»Π° Π½Π°Π΄ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΠΎΠΉ Π»Π΅Π½ΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ»Π° ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π±ΡΡΡΡΡΠΌ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΎΠ±ΡΡΠΌΠ°Ρ
Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ ΡΠΎΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ, Π° ΡΠ°ΠΊΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π³Π»ΡΠ±ΠΈΠ½Ρ ΠΈΡΡΠΎΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π΄Π½Π΅ΠΉ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π»Π΅Ρ.

Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ Π±Π°Π·Π° Ρ ΠΊΠ΅ΡΠ΅ΠΌ ΠΈ ClickHouse. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π±ΡΠ» ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ ΠΈ Ρ
ΠΎΡΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ»ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π·Π° ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄, Π½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠ΅Ρ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ»Π΅ΡΠ½ΠΈΠΉ ΠΎΠ±ΡΡΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ΅ΡΡΡΡΠΎΡΠΌΠΊΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ΅ΡΠ° Π²ΡΠΎΠ΄Π΅ Redis ΡΡΠ»ΠΎΠΆΠ½ΡΠ»ΠΎ Π±Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ, Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ sticky sessions ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ»ΠΈ Π½Π°ΡΠΈΠΌ ΠΏΠ»Π°Π½Π°ΠΌ ΠΏΠΎ ΠΎΡΠΊΠ°Π·Ρ ΠΎΡ ΡΠ°ΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.
Π Π΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ Π±Π°Π·Π° Ρ ΠΊΠ΅ΡΠ΅ΠΌClickHouse Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π» Ρ
ΠΎΡΠΎΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ, Π½ΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄ΠΎΡΡΠ». Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, Π²ΡΡΠΎΠΊΠ°Ρ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΎΡΠ΅ΡΠ½ΡΡ
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΡΡΠ°Π»ΠΈ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ ΡΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΡΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π½Ρ, Π·Π°ΠΌΠ΅Π½Π° ΡΠ΅Π»ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π°ΠΏΠ΄Π΅ΠΉΡΠ° ΡΠ½ΠΈΠΆΠ°Π»Π° Π±Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡΠΈΠ²Π΅Π»Π° Π±Ρ ΠΊ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ClickHouseΠΠΎΡΠ΅ΠΌΡ ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ Elasticsearch ΠΈ Ρ ΡΠ΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ
ΠΠ»Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΠΎΠΉ Π»Π΅Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΠ’Π ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡ Π½Π° Elasticsearch β ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ. ΠΠ½ΠΎ Ρ
ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΡΠΌΠ°ΠΌΠΈ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΏΠΎΠΈΡΠΊ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ Π½Π΅ΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ Π·Π° ΡΡΡΡ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ JSON-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄ΡΡ ΠΎ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄Π°Ρ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈ Π·Π°ΠΏΡΠΎΡΠ°Ρ
, ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΊ ΡΠΊΠΎΡΠΎΡΡΠΈ.
ElasticsearchElasticsearch ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π» Π½Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΏΠΎΠΈΡΠΊ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ. ΠΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π»ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ Π»ΠΈΡΠ΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΡΡ
ΠΌΠ΅ΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ ΡΠ°ΡΠ΄ΠΎΠ²
ΠΡ Π½Π°ΡΠ°Π»ΠΈ Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡ
Π΅ΠΌΡ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΠΈ Π±ΡΡΡΡΠΎ. ΠΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°ΡΠ°Π»Π° ΡΠ΅ΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° Π²ΡΡΠΎΡΠ»ΠΎ Π΄ΠΎ 200 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄, Π° Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠΆΠ΅ Π²ΡΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ.
ΠΡΠΈΡΠΈΠ½Π° Π±ΡΠ»Π° Π² ΡΡΡΡΠΊΡΡΡΠ΅ Elasticsearch. ΠΠ½Π΄Π΅ΠΊΡΡ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΡΠ°ΡΠ΄Ρ, Π° Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ 1000 ΡΠ°ΡΠ΄ΠΎΠ². ΠΡΠΈ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ. ΠΠ°ΠΆΠ΅ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡΠ° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΌΡ ΡΠ°ΡΡΡΠΈΡΠ°Π»ΠΈ:
- ΠΠ΄ΠΈΠ½ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 8 ΡΠ°ΡΠ΄ΠΎΠ² Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ 4 ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π΄Π»Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ. ΠΡΠ΅Π³ΠΎ 32 ΡΠ°ΡΠ΄Π° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡ;
- Π ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π½Π° 4 ΡΠ·Π»Π°Ρ
ΠΎΠ±ΡΠΈΠΉ Π»ΠΈΠΌΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 4000 ΡΠ°ΡΠ΄ΠΎΠ²;
- ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅ΡΡ Π»ΠΈΠΌΠΈΡΠ°, ΠΎΡΡΠ°Π²Π»ΡΡ Π·Π°ΠΏΠ°Ρ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅. ΠΡΠΎ ΠΎΠΊΠΎΠ»ΠΎ 1300 ΡΠ°ΡΠ΄ΠΎΠ²;
- ΠΠ΅Π»ΠΈΠΌ 1300 Π½Π° 32 ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 40 ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
ΠΡΠ²ΠΎΠ΄ Π±ΡΠ» ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½. Π‘Ρ
Π΅ΠΌΠ° Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ
ΠΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π²ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠ°ΠΊΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΡ
- ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ½Π΄Π΅ΠΊΡ.ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ. ΠΠ»ΠΈΠ΅Π½Ρ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡΡΠΎ Π²ΡΡΠ°ΡΡΠΈ, ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ°;
- Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ ΠΌΠ΅ΡΡΡΠ°ΠΌ ΡΠ΄Π΅Π»Π°Π»ΠΎ Π±Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ. ΠΠΎΠΈΡΠΊ ΠΏΠΎ ΠΈΡΡΠΎΡΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π» Π±Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΡΡ
ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌ, ΡΡΠΎ ΡΡ
ΡΠ΄ΡΠΈΠ»ΠΎ Π±Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ;
- Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°ΠΌ. ΠΠ΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π½Π΅ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΌ. Π’Π°ΠΊΠ°Ρ ΡΡ
Π΅ΠΌΠ° Π½Π΅ ΡΠ΅ΡΠ°Π»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π½Π΅ ΡΠ»ΡΡΡΠ°Π»Π° ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ
Π Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΈΠ· ΡΠ°Π·Π½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΡΠΈΡ, Π½ΠΎΠ²ΠΎΠ΅ ΠΈ ΡΡΠ°ΡΠΎΠ΅ ΠΠΠ (Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎΠ΅ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅) ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΏΠΎΡΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠΏΡΡΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΡΡ
. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Elasticsearch Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΡΠΎΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ (immediate consistency) Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ withRefreshPolicy(RefreshPolicy.IMMEDIATE) Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ, ΡΡΠΎ Π½Π΅ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡ race condition β ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Elasticsearch Π½Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΡΠΎΠΊΠΈ (row-level locking) Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ update ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°, Π·Π°ΡΠΈΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π½Π΅ΠΏΠΎΠ»Π½ΡΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ, Π° ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ ΠΊ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ. Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΠ’Π ΠΠ°Π½ΠΊΠ° Π½Π°ΡΠ°Π»Π° Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΡΠ°ΠΌΠΎΠ³ΠΎ Elasticsearch.
ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠ°ΠΏ β ΠΎΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (Optimistic Concurrency Control)
ΠΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° (_version). ΠΠΎ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ
Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΠΎ Π΄Π°Π»ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ. ΠΠΎΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ»Π°ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ²Π»ΡΠ»ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°, ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡ.
ΠΡΠΎΡΠΎΠΉ ΡΡΠ°ΠΏ β ΡΠ΅ΡΠ²ΠΈΡ-Π°Π³ΡΠ΅Π³Π°ΡΠΎΡ ΠΈ Redis
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΠ°ΠΏΠΎΠΌ ΡΡΠ°Π»ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Elasticsearch. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° OTP ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ-Π°Π³ΡΠ΅Π³Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π» ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· Π²ΡΠ΅Ρ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ², ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ» ΠΈΡ
ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ, ΡΠ°ΡΡΡΠ°Π²Π»ΡΠ» ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π²Π²ΠΎΠ΄ΠΈΠ» ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΡΡΠΎΠ±Ρ Π²ΡΡΠΎΠ²Π½ΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Ρ Π΅Π΄ΠΈΠ½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ.

ΠΠ»Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ
ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ stateless-Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Π°Π³ΡΠ΅Π³Π°ΡΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° Redis ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΊΡΡ ΠΈ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΎΡ. Π Π½Π΅ΠΌ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ»Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠ΅ΡΠΊΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ. ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ»ΠΎΡΡ Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, Π½ΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Π’ΡΠ΅ΡΠΈΠΉ ΡΡΠ°ΠΏ β Kafka ΠΈ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ
Π₯ΠΎΡΡ Redis ΠΏΠΎΠΌΠΎΠ³Π°Π», ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΡΡΠ° ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ»Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΎΡΠΌΡΡΠ»ΠΈΠ»ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½ΠΎΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Kafka Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
- ΠΠ»ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ: Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Kafka ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ.
- Π£Π½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ: ΠΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈΡΡ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, ΡΡΡΡΠΊΡΡΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π»Π° Π΅Π΄ΠΈΠ½ΠΎΠΉ, ΡΡΠΎ ΡΠΏΡΠΎΡΡΠΈΠ»ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ.
- ΠΠ΄ΠΈΠ½ ΡΠΎΠΏΠΈΠΊ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
:ΠΠΌΠ΅ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΊΠ°Π½Π°Π»ΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΠ±ΡΠΈΠΉ ΡΠΎΠΏΠΈΠΊ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ², Π·Π°Π΄Π°Π½Π½ΡΡ
ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π°ΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΈ ΡΠΊΡΠ΅ΠΏΠΈΡΡ Π²ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. Kafka ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ»Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ, Π° Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡΠΊΠ°Π· ΠΎΡ Redis ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ½ΠΈΠ·ΠΈΠ» Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΡΠΏΡΠΎΡΡΠΈΠ» ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΠ°Π»Π° ΡΠΈΡΠ΅, ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π΅Π΅ ΠΈ Π»Π΅Π³ΡΠ΅ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅.
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΄Π»Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΠ’Π ΠΠ°Π½ΠΊΠ° Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π»Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Elasticsearch, ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄Π»Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Ρ Π΄Π²ΡΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π¦ΠΠΠ°ΠΌΠΈ, Π³Π΄Π΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Kubernetes ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄Π½ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π¦ΠΠΠΎΠΌ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ²ΠΎΡΡΠΌΠ° ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ.
Π‘Ρ
Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡΠΠ°ΠΆΠ΄Π°Ρ Π½ΠΎΠ΄Π° Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΎΠ»Ρ. ΠΠ°ΡΡΠ΅Ρ-Π½ΠΎΠ΄Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠΎΡΠΌΠΈΡΡΡΡ ΠΊΠ²ΠΎΡΡΠΌ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ split-brain-ΡΡΠ΅Π½Π°ΡΠΈΠΈ. ΠΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΡΡΡΠΈΠ΅ Π½ΠΎΠ΄Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ. Data-Π½ΠΎΠ΄Ρ Ρ
ΡΠ°Π½ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ.
ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΡΡΡΡΡ Π½ΠΎΠ΄Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π¦ΠΠΠ΅ β ΡΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΠ°ΡΡΠ΅Ρ-Π½ΠΎΠ΄Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ ΠΏΠΎ ΡΡΡΠΌ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ°ΠΌ, Π²ΠΊΠ»ΡΡΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π¦ΠΠ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊΠ²ΠΎΡΡΠΌΠ° Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠ΅Π½ΡΡΠΎΠ². Π§Π΅ΡΡΡΠ΅ data-Π½ΠΎΠ΄Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
Π¦ΠΠΠ°Ρ
ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΡΡΡΡΠΎΠΈΡΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΊ Π²ΡΡΠΎΠΊΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ, Π° Π΅Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊ ΡΠ±ΠΎΡΠΌ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π° Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ