АрхитСктура ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Tarantool Data Grid

АрхитСктура ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Tarantool Data Grid

ΠŸΡ€Π΅Π· 2017 Π³. спСчСлихмС конкурс Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΡ‚ΠΎ ядро ​​на инвСстиционния бизнСс Π½Π° Alfa-Bank ΠΈ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π° (Π½Π° HighLoad++ 2018 с Π΄ΠΎΠΊΠ»Π°Π΄ Π·Π° ΡΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° инвСстиционния бизнСс Π³ΠΎΠ²ΠΎΡ€Π΅ΡˆΠ΅ Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Ρ€ΠΈΠ½ΠΊΠΈΠ½, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π» Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΡ‚ΠΎ ядро ​​на инвСстиционния бизнСс Π½Π° Алфа Π‘Π°Π½ΠΊ). Π’Π°Π·ΠΈ систСма Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΡΡŠΠ±ΠΈΡ€Π° Π΄Π°Π½Π½ΠΈ Π·Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ, Π΄Π° ΠΏΡ€ΠΈΠ²Π΅ΠΆΠ΄Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° Ρ„ΠΎΡ€ΠΌΠ°, Π΄Π° Π³ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΈ Π΄Π° осигурява Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ тях.

Π’ процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° систСмата сС Ρ€Π°Π·Π²ΠΈ ΠΈ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈ функционалност ΠΈ Π² Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡΡŠΠ·Π½Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ изкристализирамС Π½Π΅Ρ‰ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ просто ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ софтуСр, създадСн Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ: успяхмС систСма Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ прилоТСния с постоянно ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. Натрупаният ΠΎΠΏΠΈΡ‚ Π΅ Π² основата Π½Π° Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ - Tarantool Data Grid (TDG).

Искам Π΄Π° говоря Π·Π° TDG Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π°, Π΄ΠΎ ΠΊΠΎΠΈΡ‚ΠΎ стигнахмС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π΄Π° Π²ΠΈ запозная с основната функционалност ΠΈ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Π½Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° станС основа Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° цялостни Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

АрхитСктурно Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ…ΠΌΠ΅ систСмата Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ роля, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ отговаря Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΡ€ΡŠΠ³ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Π•Π΄Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ изпълнява Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Ρ€ΠΎΠ»ΠΈ. Π’ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° няколко Ρ€ΠΎΠ»ΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ Ρ‚ΠΈΠΏ:

АрхитСктура ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Tarantool Data Grid

Π‘ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅Π»

ΠšΠΎΠ½Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ отговаря Π·Π° комуникацията с външния свят; Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ заявката, Π΄Π° я Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈ Π°ΠΊΠΎ Ρ‚ΠΎΠ²Π° успСС, Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° входния процСсор. НиС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅ HTTP, SOAP, Kafka, FIX Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ. АрхитСктурата Π²ΠΈ позволява просто Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ скоро Ρ‰Π΅ ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° IBM MQ. Ако Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявката Π΅ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ Π²ΡŠΡ€Π½Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай Ρ‚ΠΎΠΉ Ρ‰Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ, Ρ‡Π΅ заявката Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π΅ възникнала Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½Π°Ρ‚Π° ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Π’ΠΎΠ²Π° бСшС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ спСциално, Π·Π° Π΄Π° сС Ρ€Π°Π±ΠΎΡ‚ΠΈ със систСми, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ знаят ΠΊΠ°ΠΊ Π΄Π° повтарят заявки - ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², правят Π³ΠΎ Ρ‚Π²ΡŠΡ€Π΄Π΅ ΡƒΠΏΠΎΡ€ΠΈΡ‚ΠΎ. Π—Π° Π΄Π° Π½Π΅ сС губят Π΄Π°Π½Π½ΠΈ, сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° опашка Π·Π° ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ°: ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΏΡŠΡ€Π²ΠΎ Π²Π»ΠΈΠ·Π° Π² нСя ΠΈ Π΅Π΄Π²Π° слСд ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΎΡ‚ нСя. ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° прСдупрСТдСния Π·Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, останали Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° Π·Π° ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ°, ΠΈ слСд отстраняванС Π½Π° софтуСрна Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈΠ»ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π΅Π½ срив, ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

Входящ процСсор

Входният процСсор класифицира ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ спорСд Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°Ρ†ΠΈ ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π° подходящи процСсори. ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ са Lua ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ сС изпълнява Π² ΠΏΡΡΡŠΡ‡Π½Π° срСда, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° повлияят Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмата. На Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅Π΄ΡƒΡ†ΠΈΡ€Π°Π½ΠΈ Π΄ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° Ρ„ΠΎΡ€ΠΌΠ° ΠΈ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ стартирани ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±Ρ€ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ°. НапримСр, Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° MDM (Master Data Management), ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ Π²ΡŠΡ€Ρ…Ρƒ Tarantool Data Grid, ΠΏΡ€ΠΈ добавянС Π½Π° Π½ΠΎΠ² ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π·Π° Π΄Π° Π½Π΅ забавямС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° заявката, стартирамС ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π»Π°Ρ‚Π΅Π½ запис ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½Π° Π·Π°Π΄Π°Ρ‡Π°. ΠŸΡΡΡŠΡ‡Π½ΠΈΠΊΡŠΡ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° заявки Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, промяна ΠΈ добавянС Π½Π° Π΄Π°Π½Π½ΠΈ, позволява Π²ΠΈ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ някои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° всички Ρ€ΠΎΠ»ΠΈ Π½Π° Ρ‚ΠΈΠΏΠ° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π°Π³Ρ€Π΅Π³ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° (ΠΊΠ°Ρ€Ρ‚Π°/намаляванС).

ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ описани във Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅:

sum.lua

local x, y = unpack(...)
return x + y

И слСд Ρ‚ΠΎΠ²Π°, Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ΠΎ Π² конфигурацията:

functions:
  sum: { __file: sum.lua }

Π—Π°Ρ‰ΠΎ Lua? Lua Π΅ ΠΌΠ½ΠΎΠ³ΠΎ прост Π΅Π·ΠΈΠΊ. Π’ΡŠΠ· основа Π½Π° нашия ΠΎΠΏΠΈΡ‚, няколко часа слСд ΠΊΠ°Ρ‚ΠΎ сС запознаят с Π½Π΅Π³ΠΎ, Ρ…ΠΎΡ€Π°Ρ‚Π° Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° ΠΏΠΈΡˆΠ°Ρ‚ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠΌ. И Ρ‚ΠΎΠ²Π° Π½Π΅ са само профСсионални Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ. ОсвСн Ρ‚ΠΎΠ²Π°, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° jit ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°, Lua Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·ΠΎ.

Π‘ΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅

Π‘ΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° постоянни Π΄Π°Π½Π½ΠΈ. ΠŸΡ€Π΅Π΄ΠΈ записванС Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Ρ‚ спрямо схСмата Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. Π—Π° Π΄Π° опишСм Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Apache Avro, ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

{
    "name": "User",
    "type": "record",
    "logicalType": "Aggregate",
    "fields": [ 
        { "name": "id", "type": "string"}, 
        {"name": "first_name", "type": "string"}, 
        {"name": "last_name", "type": "string"} 
    ], 
    "indexes": ["id"] 
}

Π’ΡŠΠ· основа Π½Π° Ρ‚ΠΎΠ²Π° описаниС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° DDL (Π•Π·ΠΈΠΊ Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ) Π·Π° Π‘Π£Π‘Π” Π½Π° Tarantula ΠΈ GraphQL схСма Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ.

ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС асинхронна рСпликация Π½Π° Π΄Π°Π½Π½ΠΈ (ΠΈΠΌΠ° ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° добавянС Π½Π° синхронна).

Π˜Π·Ρ…ΠΎΠ΄Π΅Π½ процСсор

Понякога Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС увСдомят външни ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π·Π° пристиганСто Π½Π° Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π° Ρ‚Π°Π·ΠΈ Ρ†Π΅Π» ΠΈΠΌΠ° ролята Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ процСсор. Π‘Π»Π΅Π΄ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅, Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, изисквана ΠΎΡ‚ потрСбитСля) - ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° ΠΊΠΎΠ½Π΅ΠΊΡ‚ΠΎΡ€Π° Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅. Π’ΡƒΠΊ ΡΡŠΡ‰ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° опашка Π·Π° ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ°: Π°ΠΊΠΎ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ Π΅ ΠΏΡ€ΠΈΠ΅Π» ΠΎΠ±Π΅ΠΊΡ‚Π°, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΏΠΎ-късно.

ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅

Π ΠΎΠ»ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ½Π΅ΠΊΡ‚ΠΎΡ€Π°, входния процСсор ΠΈ изходния процСсор са Π±Π΅Π· ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈ позволява Π΄Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°ΠΌΠ΅ систСмата Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ Ρ‡Ρ€Π΅Π· просто добавянС Π½Π° Π½ΠΎΠ²ΠΈ СкзСмпляри Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ ТСлания Ρ‚ΠΈΠΏ роля. Π‘ΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΠΊΠΎΡ„ΠΈ. Π‘Π»Π΅Π΄ добавянС Π½Π° Π½ΠΎΠ² ΡΡŠΡ€Π²ΡŠΡ€, някои ΠΎΡ‚ ΠΊΠΎΡ„ΠΈΡ‚Π΅ ΠΎΡ‚ старитС ΡΡŠΡ€Π²ΡŠΡ€ΠΈ сС прСмСстват Π½Π° новия ΡΡŠΡ€Π²ΡŠΡ€ във Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ; Ρ‚ΠΎΠ²Π° сС случва ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΈ Π½Π΅ засяга Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° цялата систСма.

Бвойства Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅

ΠžΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ. НиС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ атомарност Π½Π° добавянСто ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ ΠΎΠ±Π΅ΠΊΡ‚ с всички зависимости Π² Π΅Π΄Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° ΠΊΠΎΡ„Π°. Π’ΠΎΠ²Π° прСдотвратява β€žΡ€Π°Π·ΠΏΡ€ΡŠΡΠΊΠ²Π°Π½Π΅Ρ‚ΠΎβ€œ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Π² няколко физичСски ΡΡŠΡ€Π²ΡŠΡ€Π°.

ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС вСрсия: всяка актуализация Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ създава Π½ΠΎΠ²Π° вСрсия ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΎΡ‚Ρ€ΡΠ·ΡŠΠΊ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Π» ΡΠ²Π΅Ρ‚ΡŠΡ‚ Ρ‚ΠΎΠ³Π°Π²Π°. Π—Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ сС нуТдаят ΠΎΡ‚ дълга история, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ броя Π½Π° вСрсиитС ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ само Π΅Π΄Π½Π° - Π½Π°ΠΉ-Π½ΠΎΠ²Π°Ρ‚Π° - тоСст ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌΠ΅ вСрсията Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ историята ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅Ρ‚Π΅ всички ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ, ΠΏΠΎ-стари ΠΎΡ‚ 1 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС ΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅: ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€ΠΈΠΌ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΏΠΎ-стари ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅, освобоТдавайки място Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

Π·Π°Π΄Π°Ρ‡ΠΈ

Π‘Ρ€Π΅Π΄ интСрСснитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ си струва Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° стартиранС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ, ΠΏΠΎ исканС Π½Π° потрСбитСля ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΎ ΠΎΡ‚ ΠΏΡΡΡŠΡ‡Π½ΠΈΠΊΠ°:

АрхитСктура ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Tarantool Data Grid

Π’ΡƒΠΊ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΎΡ‰Π΅ Π΅Π΄Π½Π° роля - Π±Π΅Π³Π°Ρ‡. Π’Π°Π·ΠΈ роля Π΅ Π±Π΅Π· ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ СкзСмпляри Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Ρ‚Π°Π·ΠΈ роля ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. ΠžΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Π±Π΅Π³Π°Ρ‡Π° Π΅ Π΄Π° изпълнява Π·Π°Π΄Π°Ρ‡ΠΈ. ΠšΠ°ΠΊΡ‚ΠΎ спомСнахмС, възмоТно Π΅ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΠ²ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‚ ΠΏΡΡΡŠΡ‡Π½ΠΈΠΊΠ°; Ρ‚Π΅ сС записват Π² опашка ΠΏΡ€ΠΈ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ слСд Ρ‚ΠΎΠ²Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π·Π° изпълнСниС. Π’ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ Π·Π°Π΄Π°Ρ‡Π° сС Π½Π°Ρ€ΠΈΡ‡Π° Ρ€Π°Π±ΠΎΡ‚Π°. ИмамС ΠΈ Ρ‚ΠΈΠΏ Π·Π°Π΄Π°Ρ‡Π°, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° Task - Ρ‚ΠΎΠ²Π° са Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ потрСбитСля Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ синтаксис Π½Π° cron) ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ поискванС. Π—Π° стартиранС ΠΈ прослСдяванС Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ. Π—Π° Π΄Π° бъдС Π½Π°Π»ΠΈΡ‡Π½Π° Ρ‚Π°Π·ΠΈ функционалност, трябва Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ролята Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ; Ρ‚Π°Π·ΠΈ роля ΠΈΠΌΠ° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π΅ сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ сС изисква; Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅, ΠΊΠ°ΠΊΡ‚ΠΎ всички Π΄Ρ€ΡƒΠ³ΠΈ Ρ€ΠΎΠ»ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, която Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π°ΠΊΠΎ ΠΊΠ°ΠΏΠΈΡ‚Π°Π½ΡŠΡ‚ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΎΡ‚ΠΊΠ°ΠΆΠ΅.

Π΄ΡŠΡ€Π²Π°Ρ€

Π”Ρ€ΡƒΠ³Π° роля сС Π½Π°Ρ€ΠΈΡ‡Π° logger. Π’ΠΎΠΉ ΡΡŠΠ±ΠΈΡ€Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ‚ всички Ρ‡Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ прСдоставя интСрфСйс Π·Π° ΠΊΠ°Ρ‡Π²Π°Π½Π΅ ΠΈ ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΏΡ€Π΅Π· ΡƒΠ΅Π± интСрфСйса.

Услуги

ЗаслуТава Π΄Π° сС спомСнС, Ρ‡Π΅ систСмата улСснява ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° услуги. Π’ конфигурационния Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС ΠΊΠΎΠΈ заявки Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Π΄ΠΎ написан ΠΎΡ‚ потрСбитСля ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ сС изпълнява Π² ΠΏΡΡΡŠΡ‡Π½ΠΈΠΊΠ°. Π’ Ρ‚ΠΎΠ·ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π° стартиратС някаква Π°Π½Π°Π»ΠΈΡ‚ΠΈΡ‡Π½Π° заявка ΠΈ Π΄Π° Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°.

Услугата Π΅ описана Π² конфигурационния Ρ„Π°ΠΉΠ»:

services:
   sum:
      doc: "adds two numbers"
      function: sum
      return_type: int
      args:
         x: int
         y: int

GraphQL API сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈ услугата става Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅:

query {
   sum(x: 1, y: 2) 
}

Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΈΠ·Π²ΠΈΠΊΠ° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° sumΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π²ΡŠΡ€Π½Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°:

3

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° заявки ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмата ΠΈ заявкитС Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅, Π²Π½Π΅Π΄Ρ€ΠΈΡ…ΠΌΠ΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° OpenTracing. БистСмата ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° информация ΠΏΡ€ΠΈ поискванС Π΄ΠΎ инструмСнти, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΊΠ°Ρ‚ΠΎ Zipkin, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Π΅ изпълнСна заявката:

АрхитСктура ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Tarantool Data Grid

ЕстСствСно, систСмата прСдоставя Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΡΡŠΠ±Ρ€Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Prometheus ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana.

Π Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Ρ‚Π΅

Tarantool Data Grid ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²Π½Π΅Π΄Ρ€ΠΈ ΠΎΡ‚ RPM ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΠ², ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΎΡ‚ дистрибуцията ΠΈΠ»ΠΈ Ansible, ΠΈΠΌΠ° ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Kubernetes (Tarantool Kubernetes ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€).

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° (конфигурация, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ), сС Π·Π°Ρ€Π΅ΠΆΠ΄Π° Π² Ρ€Π°Π·Π³ΡŠΡ€Π½Π°Ρ‚ΠΈΡ Tarantool Data Grid ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π°Ρ€Ρ…ΠΈΠ² Ρ‡Ρ€Π΅Π· потрСбитСлския интСрфСйс ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° скрипт Ρ‡Ρ€Π΅Π· прСдоставСния ΠΎΡ‚ нас API.

Π‘ΡƒΠΊΠ²Π°Ρ€ΠΈ Π½Π° философията

Какви прилоТСния ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ създадСни с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Tarantool Data Grid? Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ бизнСс Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ сигурно ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ΠΈ ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈ спСсти ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π΄Π° сС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈ Π²ΡŠΡ€Ρ…Ρƒ Π²Π°ΡˆΠ°Ρ‚Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°.

НапримСр искамС Π΄Π° ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ информация Π·Π° ΠΏΠ°Π·Π°Ρ€Π° Π½Π° Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΠΈ ΠΈΠΌΠΎΡ‚ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ информация Π·Π° Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ ΠΎΡ„Π΅Ρ€Ρ‚ΠΈ. Π’ Ρ‚ΠΎΠ·ΠΈ случай Ρ‰Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π΅ΠΌ слСднитС Π·Π°Π΄Π°Ρ‡ΠΈ:

  1. Π ΠΎΠ±ΠΎΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ±ΠΈΡ€Π°Ρ‚ информация ΠΎΡ‚ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ, Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π½Π° всСки Π΅Π·ΠΈΠΊ.
  2. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Tarantool Data Grid Ρ‰Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΈ Π·Π°ΠΏΠ°Π·ΠΈ Π΄Π°Π½Π½ΠΈΡ‚Π΅. Ако Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π² Lua, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π² Π΅Π΄ΠΈΠ½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. На Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€Π°Ρ‰ΠΈ сС ΠΎΡ„Π΅Ρ€Ρ‚ΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ информация Π·Π° Π°Π³Π΅Π½Ρ‚ΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π½Π° ΠΏΠ°Π·Π°Ρ€Π° Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  3. Π‘Π΅Π³Π° Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС запълва с Π΄Π°Π½Π½ΠΈ ΠΈ Π΄Π° сС ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ Π΄Π°Π½Π½ΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π½ΠΎΠ²Π° функционалност, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ услуга, която Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈ заявка Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ Ρ‰Π΅ Π΄Π°Π΄Π΅ Π½Π°ΠΉ-ΠΈΠ·Π³ΠΎΠ΄Π½Π°Ρ‚Π° ΠΎΡ„Π΅Ρ€Ρ‚Π° Π½Π° Π΄Π΅Π½ - Ρ‚ΠΎΠ²Π° Ρ‰Π΅ изисква няколко Ρ€Π΅Π΄Π° Π² конфигурационния Ρ„Π°ΠΉΠ» ΠΈ ΠΌΠ°Π»ΠΊΠΎ Lua ΠΊΠΎΠ΄.

Каква Π΅ слСдващата?

ΠΠ°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠΌ Π»Π΅ΠΊΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Tarantool Data Grid. НапримСр, Ρ‚ΠΎΠ²Π° Π΅ IDE с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΈ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π² ΠΏΡΡΡŠΡ‡Π½Π° срСда.

ΠžΠ±Ρ€ΡŠΡ‰Π°ΠΌΠ΅ голямо Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ Π·Π° бСзопасността. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° смС Π² процСс Π½Π° сСртифициранС ΠΎΡ‚ FSTEC Π½Π° Русия, Π·Π° Π΄Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈΠΌ високото Π½ΠΈΠ²ΠΎ Π½Π° сигурност ΠΈ Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½Π° изискванията Π·Π° сСртифициранС Π½Π° софтуСрни ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми Π·Π° Π»ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π΄ΡŠΡ€ΠΆΠ°Π²Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€