ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ื™ื›ื•ืœื•ืช ืฉืœ Tarantool Data Grid

ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ื™ื›ื•ืœื•ืช ืฉืœ Tarantool Data Grid

ื‘-2017 ื–ื›ื™ื ื• ื‘ืชื—ืจื•ืช ืœืคื™ืชื•ื— ืœื™ื‘ืช ื”ืขืกืงืื•ืช ืฉืœ ืขืกืงื™ ื”ื”ืฉืงืขื•ืช ืฉืœ ืืœืคื-ื‘ื ืง ื•ื”ืชื—ืœื ื• ืœืขื‘ื•ื“ (ื‘-HighLoad++ 2018 ืขื ื“ื•ื— ืขืœ ืœื™ื‘ืช ืขืกืงื™ ื”ื”ืฉืงืขื•ืช ืžึฐื‘ื•ึผืฆึธืข ื•ืœื“ื™ืžื™ืจ ื“ืจื™ื™ื ืงื™ืŸ, ืจืืฉ ืœื™ื‘ืช ื”ืขืกืงืื•ืช ืฉืœ ืขืกืงื™ ื”ื”ืฉืงืขื•ืช ืฉืœ ื‘ื ืง ืืœืคื). ืžืขืจื›ืช ื–ื• ื”ื™ื™ืชื” ืืžื•ืจื” ืœืืกื•ืฃ ื ืชื•ื ื™ ืขืกืงืื•ืช ืžืžืงื•ืจื•ืช ืฉื•ื ื™ื ื‘ืคื•ืจืžื˜ื™ื ืฉื•ื ื™ื, ืœื”ื‘ื™ื ืืช ื”ื ืชื•ื ื™ื ืœืฆื•ืจื” ืื—ื™ื“ื”, ืœืื—ืกืŸ ืื•ืชื ื•ืœืกืคืง ืœื”ื ื’ื™ืฉื”.

ื‘ืžื”ืœืš ืชื”ืœื™ืš ื”ืคื™ืชื•ื—, ื”ืžืขืจื›ืช ื”ืชืคืชื—ื” ื•ืจื›ืฉื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช, ื•ื‘ืฉืœื‘ ืžืกื•ื™ื ื”ื‘ื ื• ืฉืื ื—ื ื• ืžื’ื‘ืฉื™ื ืžืฉื”ื• ื”ืจื‘ื” ื™ื•ืชืจ ืžืกืชื ืชื•ื›ื ืช ืืคืœื™ืงืฆื™ื” ืฉื ื•ืฆืจื” ื›ื“ื™ ืœืคืชื•ืจ ืžื’ื•ื•ืŸ ืžื•ื’ื“ืจ ื‘ื”ื—ืœื˜ ืฉืœ ืžืฉื™ืžื•ืช: ื”ืฆืœื—ื ื•. ืžืขืจื›ืช ืœื‘ื ื™ื™ืช ืืคืœื™ืงืฆื™ื•ืช ืžื‘ื•ื–ืจื•ืช ืขื ืื—ืกื•ืŸ ืžืชืžืฉืš. ื”ื ื™ืกื™ื•ืŸ ืฉืฆื‘ืจื ื• ื”ื™ื•ื•ื” ื‘ืกื™ืก ืœืžื•ืฆืจ ื—ื“ืฉ - ืจืฉืช ื ืชื•ื ื™ื ืฉืœ Tarantool (TDG).

ืื ื™ ืจื•ืฆื” ืœื“ื‘ืจ ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช TDG ื•ื”ืคืชืจื•ื ื•ืช ืืœื™ื”ื ื”ื’ืขื ื• ื‘ืžื”ืœืš ืชื”ืœื™ืš ื”ืคื™ืชื•ื—, ืœื”ืฆื™ื’ ื‘ืคื ื™ื›ื ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ืขื™ืงืจื™ืช ื•ืœื”ืจืื•ืช ื›ื™ืฆื“ ื”ืžื•ืฆืจ ืฉืœื ื• ื™ื›ื•ืœ ืœื”ืคื•ืš ืœื‘ืกื™ืก ืœื‘ื ื™ื™ืช ืคืชืจื•ื ื•ืช ืฉืœืžื™ื.

ืžื‘ื—ื™ื ื” ืื“ืจื™ื›ืœื™ืช, ื—ื™ืœืงื ื• ืืช ื”ืžืขืจื›ืช ืœื ืคืจื“ ืชืคืงื™ื“ื™ื, ืฉื›ืœ ืื—ื“ ืžื”ื ืื—ืจืื™ ืœืคืชืจื•ืŸ ืžื’ื•ื•ืŸ ืžืกื•ื™ื ืฉืœ ื‘ืขื™ื•ืช. ืžื•ืคืข ื™ื—ื™ื“ ื”ืคื•ืขืœ ืฉืœ ื™ื™ืฉื•ื ืžื™ื™ืฉื ืกื•ื’ ืชืคืงื™ื“ ืื—ื“ ืื• ื™ื•ืชืจ. ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžืกืคืจ ืชืคืงื™ื“ื™ื ืžืื•ืชื• ืกื•ื’ ื‘ืืฉื›ื•ืœ:

ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ื™ื›ื•ืœื•ืช ืฉืœ Tarantool Data Grid

ืžึทื—ื‘ึผึตืจ

Connector ืื—ืจืื™ ืขืœ ื”ืชืงืฉื•ืจืช ืขื ื”ืขื•ืœื ื”ื—ื™ืฆื•ืŸ; ื”ืžืฉื™ืžื” ืฉืœื• ื”ื™ื ืœืงื‘ืœ ืืช ื”ื‘ืงืฉื”, ืœื ืชื— ืื•ืชื”, ื•ืื ื–ื” ืžืฆืœื™ื—, ืœืฉืœื•ื— ืืช ื”ื ืชื•ื ื™ื ืœืขื™ื‘ื•ื“ ืœืžืขื‘ื“ ื”ืงืœื˜. ืื ื• ืชื•ืžื›ื™ื ื‘ืคื•ืจืžื˜ื™ื ืฉืœ 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 }

ืœืžื” ืœื•ืื”? ืœื•ืื” ื”ื™ื ืฉืคื” ืคืฉื•ื˜ื” ืžืื•ื“. ื‘ื”ืชื‘ืกืก ืขืœ ื”ื ื™ืกื™ื•ืŸ ืฉืœื ื•, ื›ืžื” ืฉืขื•ืช ืœืื—ืจ ื”ื™ื›ืจื•ืช ืขื ื–ื”, ืื ืฉื™ื ืžืชื—ื™ืœื™ื ืœื›ืชื•ื‘ ืงื•ื“ ืฉืคื•ืชืจ ืืช ื”ื‘ืขื™ื” ืฉืœื”ื. ื•ืืœื” ืœื ืจืง ืžืคืชื—ื™ื ืžืงืฆื•ืขื™ื™ื, ืืœื, ืœืžืฉืœ, ืื ืœื™ืกื˜ื™ื. ื‘ื ื•ืกืฃ, ื”ื•ื“ื•ืช ืœืžื”ื“ืจ jit, Lua ืคื•ืขืœ ืžื”ืจ ืžืื•ื“.

ืื—ืกื•ืŸ

ืื—ืกื•ืŸ ืžืื—ืกืŸ ื ืชื•ื ื™ื ืงื‘ื•ืขื™ื. ืœืคื ื™ ื”ืฉืžื™ืจื”, ื”ื ืชื•ื ื™ื ืžืื•ืžืชื™ื ืžื•ืœ ืกื›ื™ืžืช ื”ื ืชื•ื ื™ื. ื›ื“ื™ ืœืชืืจ ืืช ื”ืžืขื’ืœ ืื ื• ืžืฉืชืžืฉื™ื ื‘ืคื•ืจืžื˜ ืžื•ืจื—ื‘ ืืคืืฆ'ื™ ืื‘ืจื•. ื“ื•ื’ืžื:

{
    "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 DBMS ื• ื’ืจืคื™ืช ืกื›ื™ืžื” ืœื’ื™ืฉื” ืœื ืชื•ื ื™ื.

ื ืชืžืš ืฉื›ืคื•ืœ ื ืชื•ื ื™ื ืืกื™ื ื›ืจื•ื ื™ (ื™ืฉ ืชื•ื›ื ื™ื•ืช ืœื”ื•ืกื™ืฃ ืื—ื“ ืกื™ื ื›ืจื•ื ื™).

ืžืขื‘ื“ ืคืœื˜

ืœืคืขืžื™ื ื™ืฉ ืฆื•ืจืš ืœื”ื•ื“ื™ืข โ€‹โ€‹ืœืฆืจื›ื ื™ื ื—ื™ืฆื•ื ื™ื™ื ืขืœ ื”ื’ืขืช ื ืชื•ื ื™ื ื—ื“ืฉื™ื; ืœืฉื ื›ืš ื™ืฉื ื• ืชืคืงื™ื“ ืžืขื‘ื“ ืคืœื˜. ืœืื—ืจ ืฉืžื™ืจืช ื”ื ืชื•ื ื™ื, ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ืื•ืชื ืœืžื˜ืคืœ ื”ืžืงื‘ื™ืœ (ืœืžืฉืœ ืœื”ื‘ื™ื ืื•ืชื ืœื˜ื•ืคืก ื”ื ื“ืจืฉ ืขืœ ื™ื“ื™ ื”ืฆืจื›ืŸ) - ื•ืœืื—ืจ ืžื›ืŸ ืœื”ืขื‘ื™ืจื ืœืžื—ื‘ืจ ืœืฉืœื™ื—ื”. ื›ืืŸ ื ืขืฉื” ืฉื™ืžื•ืฉ ื’ื ื‘ืชื•ืจ ืชื™ืงื•ืŸ: ืื ืืฃ ืื—ื“ ืœื ืงื™ื‘ืœ ืืช ื”ืื•ื‘ื™ื™ืงื˜, ื”ืžื ื”ืœ ื™ื›ื•ืœ ืœื ืกื•ืช ืฉื•ื‘ ืžืื•ื—ืจ ื™ื•ืชืจ.

ืฉื™ื ื•ื™ ืงื ื” ืžื™ื“ื”

ืชืคืงื™ื“ื™ ื”ืžื—ื‘ืจ, ืžืขื‘ื“ ื”ืงืœื˜ ื•ืžืขื‘ื“ ื”ืคืœื˜ ื”ื ื—ืกืจื™ ืžืฆื‘, ื•ืžืืคืฉืจื™ื ืœื ื• ืœืฉื ื•ืช ืืช ืงื ื” ื”ืžื™ื“ื” ืฉืœ ื”ืžืขืจื›ืช ืื•ืคืงื™ืช ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ืžื•ืคืขื™ ื™ื™ืฉื•ืžื™ื ื—ื“ืฉื™ื ืขื ืกื•ื’ ื”ืชืคืงื™ื“ ื”ืจืฆื•ื™ ืžื•ืคืขืœ. ืื—ืกื•ืŸ ืžืฉืžืฉ ืœืฉื™ื ื•ื™ ืงื ื” ืžื™ื“ื” ืื•ืคืงื™ ื”ื’ื™ืฉื” ืœืืจื’ื•ืŸ ืืฉื›ื•ืœ ื‘ืืžืฆืขื•ืช ื“ืœื™ื™ื ื•ื™ืจื˜ื•ืืœื™ื™ื. ืœืื—ืจ ื”ื•ืกืคืช ืฉืจืช ื—ื“ืฉ, ื—ืœืง ืžื”ื“ืœื™ื™ื ืžื”ืฉืจืชื™ื ื”ื™ืฉื ื™ื ืžื•ืขื‘ืจื™ื ืœืฉืจืช ื”ื—ื“ืฉ ื‘ืจืงืข; ื–ื” ืงื•ืจื” ื‘ืฉืงื™ืคื•ืช ืœืžืฉืชืžืฉื™ื ื•ืื™ื ื• ืžืฉืคื™ืข ืขืœ ืคืขื•ืœืช ื”ืžืขืจื›ืช ื›ื•ืœื”.

ืžืืคื™ื™ื ื™ ื ืชื•ื ื™ื

ืื•ื‘ื™ื™ืงื˜ื™ื ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ื’ื“ื•ืœื™ื ืžืื•ื“ ื•ืœื”ื›ื™ืœ ืื•ื‘ื™ื™ืงื˜ื™ื ืื—ืจื™ื. ืื ื• ืžื‘ื˜ื™ื—ื™ื ืื˜ื•ืžื™ื•ืช ืฉืœ ื”ื•ืกืคื” ื•ืขื“ื›ื•ืŸ ื ืชื•ื ื™ื ืขืœ ื™ื“ื™ ืื—ืกื•ืŸ ืื•ื‘ื™ื™ืงื˜ ืขื ื›ืœ ื”ืชืœื•ืช ื‘ื“ืœื™ ื•ื™ืจื˜ื•ืืœื™ ืื—ื“. ื–ื” ืžื•ื ืข ืžื”ืื•ื‘ื™ื™ืงื˜ ืœื”ื™ื•ืช "ืœื”ืชืคื–ืจ" ืขืœ ืคื ื™ ืžืกืคืจ ืฉืจืชื™ื ืคื™ื–ื™ื™ื.

ื’ื™ืจืกืื•ืช ื ืชืžื›ื•ืช: ื›ืœ ืขื“ื›ื•ืŸ ืฉืœ ืื•ื‘ื™ื™ืงื˜ ื™ื•ืฆืจ ื’ืจืกื” ื—ื“ืฉื”, ื•ืื ื—ื ื• ืชืžื™ื“ ื™ื›ื•ืœื™ื ืœืงื—ืช ืคืจื•ืกืช ื–ืžืŸ ื•ืœืจืื•ืช ืื™ืš ื”ืขื•ืœื ื ืจืื” ืื–. ืขื‘ื•ืจ ื ืชื•ื ื™ื ืฉืื™ื ื ื–ืงื•ืงื™ื ืœื”ื™ืกื˜ื•ืจื™ื” ืืจื•ื›ื”, ืื ื• ื™ื›ื•ืœื™ื ืœื”ื’ื‘ื™ืœ ืืช ืžืกืคืจ ื”ื’ืจืกืื•ืช ืื• ืืคื™ืœื• ืœืื—ืกืŸ ืจืง ืื—ืช - ื”ืื—ืจื•ื ื” - ื›ืœื•ืžืจ, ืœืžืขืฉื” ืœื”ืฉื‘ื™ืช ื ื™ื”ื•ืœ ื’ืจืกืื•ืช ืขื‘ื•ืจ ืกื•ื’ ืžืกื•ื™ื. ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ื’ื‘ื™ืœ ืืช ื”ื”ื™ืกื˜ื•ืจื™ื” ืœืคื™ ื–ืžืŸ: ืœื“ื•ื’ืžื”, ืœืžื—ื•ืง ืืช ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืžืกื•ื’ ืžืกื•ื™ื ืžืขืœ ืฉื ื”. ื’ื ืื—ืกื•ืŸ ื‘ืืจื›ื™ื•ืŸ ื ืชืžืš: ืื ื• ื™ื›ื•ืœื™ื ืœืคืจื•ืง ืื•ื‘ื™ื™ืงื˜ื™ื ื™ืฉื ื™ื ืžื”ื–ืžืŸ ืฉืฆื•ื™ืŸ, ื•ืœืคื ื•ืช ืžืงื•ื ื‘ืืฉื›ื•ืœ.

ืžืฉื™ืžื•ืช

ื‘ื™ืŸ ื”ืชื›ื•ื ื•ืช ื”ืžืขื ื™ื™ื ื•ืช, ืจืื•ื™ ืœืฆื™ื™ืŸ ืืช ื”ื™ื›ื•ืœืช ืœื”ืคืขื™ืœ ืžืฉื™ืžื•ืช ืœืคื™ ืœื•ื— ื–ืžื ื™ื, ืœืคื™ ื‘ืงืฉืช ื”ืžืฉืชืžืฉ, ืื• ื‘ืื•ืคืŸ ืชื•ื›ื ืชื™ ืžืืจื’ื– ื”ื—ื•ืœ:

ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ื™ื›ื•ืœื•ืช ืฉืœ Tarantool Data Grid

ื›ืืŸ ืื ื• ืจื•ืื™ื ืชืคืงื™ื“ ื ื•ืกืฃ - ืจืฅ. ืชืคืงื™ื“ ื–ื” ื”ื•ื ื—ืกืจ ืžืฆื‘, ื•ื ื™ืชืŸ ืœื”ื•ืกื™ืฃ ืžื•ืคืขื™ ื™ื™ืฉื•ืžื™ื ื ื•ืกืคื™ื ืขื ืชืคืงื™ื“ ื–ื” ืœืืฉื›ื•ืœ ืœืคื™ ื”ืฆื•ืจืš. ืื—ืจื™ื•ืชื• ืฉืœ ื”ืจืฅ ื”ื™ื ืœื‘ืฆืข ืžืฉื™ืžื•ืช. ื›ืืžื•ืจ, ื ื™ืชืŸ ืœื”ืคื™ืง ืžืฉื™ืžื•ืช ื—ื“ืฉื•ืช ืžืืจื’ื– ื”ื—ื•ืœ; ื”ื ื ืฉืžืจื™ื ื‘ืชื•ืจ ื‘ืื—ืกื•ืŸ ื•ืื– ืžื‘ื•ืฆืขื™ื ืขืœ ื”ืจืื ืจ. ืกื•ื’ ื–ื” ืฉืœ ืžืฉื™ืžื” ื ืงืจื ืื™ื•ื‘. ื™ืฉ ืœื ื• ื’ื ืกื•ื’ ืžืฉื™ืžื” ืฉื ืงืจื Task - ืืœื• ืžืฉื™ืžื•ืช ืžื•ื’ื“ืจื•ืช ืขืœ ื™ื“ื™ ืžืฉืชืžืฉ ืฉืคื•ืขืœื•ืช ืœืคื™ ืœื•ื— ื–ืžื ื™ื (ื‘ืืžืฆืขื•ืช ืชื—ื‘ื™ืจ cron) ืื• ืœืคื™ ื“ืจื™ืฉื”. ื›ื“ื™ ืœื”ืคืขื™ืœ ื•ืœืขืงื•ื‘ ืื—ืจ ืžืฉื™ืžื•ืช ื›ืืœื”, ื™ืฉ ืœื ื• ืžื ื”ืœ ืžืฉื™ืžื•ืช ื ื•ื—. ืขืœ ืžื ืช ืฉืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื–ื• ืชื”ื™ื” ื–ืžื™ื ื”, ืขืœื™ืš ืœื”ืคืขื™ืœ ืืช ืชืคืงื™ื“ ื”ืžืชื–ืžืŸ; ืœืชืคืงื™ื“ ื–ื” ื™ืฉ ืžืฆื‘, ื›ืš ืฉื”ื•ื ืื™ื ื• ืงื ื” ืžื™ื“ื”, ืืฉืจ, ืขื ื–ืืช, ืื™ื ื• ื ื“ืจืฉ; ื‘ืžืงื‘ื™ืœ, ื›ืžื• ื›ืœ ืฉืืจ ื”ืชืคืงื™ื“ื™ื, ื™ื›ื•ืœ ืœื”ื™ื•ืช ืœื• ื”ืขืชืง ืฉืžืชื—ื™ืœ ืœืขื‘ื•ื“ ืื ื”ืžืืกื˜ืจ ื™ืกืจื‘ ืคืชืื•ื.

ืœื•ื’ืจ

ืชืคืงื™ื“ ื ื•ืกืฃ ื ืงืจื ืœื•ื’ืจ. ื”ื•ื ืื•ืกืฃ ื™ื•ืžื ื™ื ืžื›ืœ ื—ื‘ืจื™ ื”ืืฉื›ื•ืœ ื•ืžืกืคืง ืžืžืฉืง ืœื”ืขืœืื” ื•ืฆืคื™ื™ื” ื‘ื”ื ื“ืจืš ืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜.

ืฉื™ืจื•ืชื™ื

ืจืื•ื™ ืœื”ื–ื›ื™ืจ ืฉื”ืžืขืจื›ืช ืžืงืœื” ืขืœ ื™ืฆื™ืจืช ืฉื™ืจื•ืชื™ื. ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื”, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืื™ืœื• ื‘ืงืฉื•ืช ื ืฉืœื—ื•ืช ืœืžื˜ืคืœ ืฉื ื›ืชื‘ ืขืœ ื™ื“ื™ ื”ืžืฉืชืžืฉ ืฉืคื•ืขืœ ื‘ืืจื’ื– ื”ื—ื•ืœ. ื‘ืžื˜ืคืœ ื”ื–ื”, ืืชื” ื™ื›ื•ืœ, ืœืžืฉืœ, ืœื”ืจื™ืฅ ืื™ื–ื•ืฉื”ื™ ืฉืื™ืœืชื” ืื ืœื™ื˜ื™ืช ื•ืœื”ื—ื–ื™ืจ ืืช ื”ืชื•ืฆืื”.

ื”ืฉื™ืจื•ืช ืžืชื•ืืจ ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื”:

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

ื”-API ืฉืœ GraphQL ื ื•ืฆืจ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื•ื”ืฉื™ืจื•ืช ื”ื•ืคืš ื–ืžื™ืŸ ืœืงืจื™ืื”:

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. ืœื“ื•ื’ืžื”, ื–ื”ื• IDE ืขื ืชืžื™ื›ื” ื‘ืžื˜ืคืœื™ ื™ืฆื™ืจืช ืคืจื•ืคื™ืœื™ื ื•ืื™ืชื•ืจ ื‘ืื’ื™ื ื”ืคื•ืขืœื™ื ื‘ืืจื’ื– ื—ื•ืœ.

ืื ื—ื ื• ื’ื ืžืงื“ื™ืฉื™ื ืชืฉื•ืžืช ืœื‘ ืจื‘ื” ืœื ื•ืฉืื™ ื‘ื˜ื™ื—ื•ืช. ื›ืจื’ืข ืื ื• ืขื•ื‘ืจื™ื ื”ืกืžื›ื” ืขืœ ื™ื“ื™ FSTEC ืžืจื•ืกื™ื” ื›ื“ื™ ืœืืฉืจ ืืช ืจืžืช ื”ืื‘ื˜ื—ื” ื”ื’ื‘ื•ื”ื” ื•ืœืขืžื•ื“ ื‘ื“ืจื™ืฉื•ืช ื”ืกืžื›ื” ืฉืœ ืžื•ืฆืจื™ ืชื•ื›ื ื” ื”ืžืฉืžืฉื™ื ื‘ืžืขืจื›ื•ืช ืžื™ื“ืข ืื™ืฉื™ื•ืช ื•ืžืขืจื›ื•ืช ืžื™ื“ืข ืžืžืฉืœืชื™ื•ืช.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”