66

Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

  • Upload
    ontico

  • View
    1.591

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Tarantool as amicroservicesplatformAnton ReznikovVladimir Perepelitsa

Page 2: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

100k+ RPSper cpu core

Page 3: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

$1 000 000+comparing to big cluster

Page 4: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

What else…

Page 5: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

SQL?

Page 6: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Memcached?

Page 7: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Queues?

Page 8: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

$$$

Page 9: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Roadmap

Page 10: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

RoadmapKV with expiration

Page 11: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

RoadmapKV with expiration

Smart caching proxy

Page 12: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

RoadmapKV with expiration

Smart caching proxy

Complex queues

Page 13: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

RoadmapKV with expiration

Smart caching proxy

Complex queues

Application server

Page 14: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

RoadmapKV with expiration

Smart caching proxy

Complex queues

Application server

Custom cluster solutions

Page 15: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Get yourdata in RAM

Computeclose to data

Enjoy theperformance

Page 16: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Average performanceOperation Req / s / CPUSelect: 150kInsert: 75kUpdate: 75kDelete: 90kLuaCall: 75k

Page 17: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Indexes:HASH

Page 18: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Indexes:HASH

TREE: SG, AVL (1.5) | B+* (1.6)

Page 19: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Indexes:HASH

TREE: SG, AVL (1.5) | B+* (1.6)

RTREE (1.6)

Page 20: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Indexes:HASH

TREE: SG, AVL (1.5) | B+* (1.6)

RTREE (1.6)

BITMAP

Page 21: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Indexes:HASH

TREE: SG, AVL (1.5) | B+* (1.6)

RTREE (1.6)

BITMAP

Composite

Page 22: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Indexes:HASH

TREE: SG, AVL (1.5) | B+* (1.6)

RTREE (1.6)

BITMAP

Composite

Multiple

Page 23: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Lua

Page 24: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Luajit!

Page 25: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Luajit!fibers (green threads)Cooperative multitasking

Page 26: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Luajit!fibers (green threads)Cooperative multitasking

channels (fiber communicaion)Synchronization primitives

Page 27: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Luajit!fibers (green threads)Cooperative multitasking

channels (fiber communicaion)Synchronization primitives

sockets (client & server)Pure raw, like in C and with helpers

Page 28: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Luajit!fibers (green threads)Cooperative multitasking

channels (fiber communicaion)Synchronization primitives

sockets (client & server)Pure raw, like in C and with helpers

FFI (foreign function interface)Ability to call C/C++ (dlopen)

Page 29: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

8 lines

Lua: join by handfunction custom_join( key ) local result = {}

for tuple in space:iterator('EQ', key) do local joined = other:select(0,tuple[1])

table.insert(result,{ tuple, joined }) end

return resultend

Page 30: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Access tokensProvides access by URL tospecific feature withoutadditional authorization

Durable

Temporary

Consistent

Page 31: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Token

Payload

Page 32: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Token

Payload

Page 33: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

index

Lua

TokenExpire time

Payload

fiber

Page 34: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

index

Lua

TokenExpire time

User id

Payload

index

fiber fiber

Page 35: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Classic SQL AppWeb application with 20krequests for select and 2krequests for update

Have memcached

Have SQL replica

Page 36: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

get

setApp

missMemcache

SQL

Page 37: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App Tarantool

SQL

Page 38: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App Tarantool

SQL

Page 39: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App Tarantool

SQL

Page 40: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App Tarantool

replicaSQLSlave

Page 41: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

chanscache

query 1 query SQL

query 2

reply 2

chan

SQL responsereply 1

query 3reply 3

Page 42: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

20 lines!

Aggregation: examplefunction select(key) local tuple = cache:select {key} if not tuple then if locks[key] then local ch = fiber.channel(1) locks[key][ch] = ch return ch:get() else locks[key] = {} local ret = sql:execute('select * from ...') for ch in pairs(locks[key]) do ch:put(ret) end locks[key] = nil return ret end else return tuple endend

Page 43: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

OAuth tokensStorage for 10M OAuthaccess+refresh tokens withdeadline refreshing

Keep minimal expired tokens

Balance load over time

Page 44: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App WorkerTokens

queueSched

Page 45: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App WorkerTokens

queue

G

MS

Y

Я

Sched

Page 46: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App WorkerTokens

queues

G

MS

Y

Я

Sched

Page 47: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Queue priority

to refresh no need to refreshexpired

60sfirst

order

old agesecondorder 5 min

thirdorder

Page 48: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App WorkerTokens

G

MS

Y

Я

Page 49: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Subscriptionverification

Mobile application providesubscription id, that must beverified in store

Don't duplicate requests

Reply as soon as possible

Provide service if client gone

Page 50: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App

Worker

wait

create task

wait

have task

x3done task

id

Apple

Page 51: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Database applicationReplicated database with a lotof business logic inside

Multiple APIs

Failsafe deploy

Monitoring

Informative logs

Page 52: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

App

Page 53: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

API

v1

App

Lua

Page 54: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

API

v1

App

App

v2

Lua

Page 55: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

API

v1

App

App

v2

Lua

logs 

Mon

Stat

world

fiber

Page 56: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Sharding isunavoidable

Data does not fit in RAM of asingle instance or many CPUcores required

Database as a service

Consistency checking

Page 57: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

#1

#2

#3

App Sh prxf(k)

App

App Sh prxf(k)

Sh prxf(k)

Page 58: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

#1

#2

#3

App Sh prxf1(k)

App

App Sh prxf(k)

Sh prxf(k)

Page 59: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

#1

#2??

#3

App Sh prxf(k)

App

App Sh prxf(k)

Sh prxf(k)

Page 60: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

#1f(k)

#2f(k)

#3f(k)

App

App

App

Page 61: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Access tokens (v2)Provides access by URL tospecific feature withoutadditional authorization

High availability

Allow loss of majority

Page 62: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

M

M

M

APP #1

APP #2

Page 63: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

M

M

M

APP #1

APP #2

Page 64: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

M

M

M

APP #1

APP #2

Page 65: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

Get yourdata in RAM

Computeclose to data

Enjoy theperformance

Page 66: Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепелица (Mail.Ru)

tarantool.orgDocumentation:

try.tarantool.orgTry it online:

github.com/tarantoolExplore it:

github.com/mons/tnt-luasLuas:

Questions?