SlideShare a Scribd company logo
Tarantool as a
microservices
platform
Anton Reznikov
Vladimir Perepelitsa
100k+ RPS
per cpu core
$1 000 000+
comparing to big cluster
What else…
SQL?
Memcached?
Queues?
$$$
Roadmap
Roadmap
KV with expiration
Roadmap
KV with expiration
Smart caching proxy
Roadmap
KV with expiration
Smart caching proxy
Complex queues
Roadmap
KV with expiration
Smart caching proxy
Complex queues
Application server
Roadmap
KV with expiration
Smart caching proxy
Complex queues
Application server
Custom cluster solutions
Get your
data in RAM
Compute
close to data
Enjoy the
performance
Average performance
Operation Req / s / CPU
Select: 150k
Insert: 75k
Update: 75k
Delete: 90k
LuaCall: 75k
Indexes:
HASH
Indexes:
HASH
TREE: SG, AVL (1.5) | B+* (1.6)
Indexes:
HASH
TREE: SG, AVL (1.5) | B+* (1.6)
RTREE (1.6)
Indexes:
HASH
TREE: SG, AVL (1.5) | B+* (1.6)
RTREE (1.6)
BITMAP
Indexes:
HASH
TREE: SG, AVL (1.5) | B+* (1.6)
RTREE (1.6)
BITMAP
Composite
Indexes:
HASH
TREE: SG, AVL (1.5) | B+* (1.6)
RTREE (1.6)
BITMAP
Composite
Multiple
Lua
Luajit!
Luajit!
fibers (green threads)
Cooperative multitasking
Luajit!
fibers (green threads)
Cooperative multitasking
channels (fiber communicaion)
Synchronization primitives
Luajit!
fibers (green threads)
Cooperative multitasking
channels (fiber communicaion)
Synchronization primitives
sockets (client & server)
Pure raw, like in C and with helpers
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)
8 lines
Lua: join by hand
function 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 result
end
Access tokens
Provides access by URL to
specific feature without
additional authorization
Durable
Temporary
Consistent
Token
Payload
Token
Payload
index
Lua
Token
Expire time
Payload
fiber
index
Lua
Token
Expire time
User id
Payload
index
fiber fiber
Classic SQL App
Web application with 20k
requests for select and 2k
requests for update
Have memcached
Have SQL replica
get
set
App
miss
Memcache
SQL
App
Tarantool
SQL
App
Tarantool
SQL
App
Tarantool
SQL
App
Tarantool
replica
SQLSlave
chanscache
query 1 query SQL
query 2
reply 2
chan
SQL responsereply 1
query 3
reply 3
20 lines!
Aggregation: example
function 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
end
end
OAuth tokens
Storage for 10M OAuth
access+refresh tokens with
deadline refreshing
Keep minimal expired tokens
Balance load over time
App Worker
Tokens
queue
Sched
App Worker
Tokens
queue
G
MS
Y
Я
Sched
App Worker
Tokens
queues
G
MS
Y
Я
Sched
Queue priority
to refresh no need to refreshexpired
60s
first
order
old age
second
order 5 min
third
order
App Worker
Tokens
G
MS
Y
Я
Subscription
verification
Mobile application provide
subscription id, that must be
verified in store
Don't duplicate requests
Reply as soon as possible
Provide service if client gone
App
Worker
wait
create task
wait
have task
x3
done task
id
Apple
Database application
Replicated database with a lot
of business logic inside
Multiple APIs
Failsafe deploy
Monitoring
Informative logs
App
API
v1
App
Lua
API
v1
App
App
v2
Lua
API
v1
App
App
v2
Lua
logs 
Mon
Stat
world
fiber
Sharding is
unavoidable
Data does not fit in RAM of a
single instance or many CPU
cores required
Database as a service
Consistency checking
#1
#2
#3
App
Sh prx
f(k)
App
App
Sh prx
f(k)
Sh prx
f(k)
#1
#2
#3
App
Sh prx
f1(k)
App
App
Sh prx
f(k)
Sh prx
f(k)
#1
#2
??
#3
App
Sh prx
f(k)
App
App
Sh prx
f(k)
Sh prx
f(k)
#1
f(k)
#2
f(k)
#3
f(k)
App
App
App
Access tokens (v2)
Provides access by URL to
specific feature without
additional authorization
High availability
Allow loss of majority
M
M
M
APP #1
APP #2
M
M
M
APP #1
APP #2
M
M
M
APP #1
APP #2
Get your
data in RAM
Compute
close to data
Enjoy the
performance
tarantool.orgDocumentation:
try.tarantool.orgTry it online:
github.com/tarantoolExplore it:
github.com/mons/tnt-luasLuas:
Questions?

More Related Content

PDF
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
PPTX
HighLoad Solutions On MySQL / Xiaobin Lin (Alibaba)
PDF
Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)
PDF
Linux Kernel Extension for Databases / Александр Крижановский (Tempesta Techn...
PDF
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
PDF
Peeking into the Black Hole Called PL/PGSQL - the New PL Profiler / Jan Wieck...
PDF
pg / shardman: шардинг в PostgreSQL на основе postgres / fdw, pg / pathman и ...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
HighLoad Solutions On MySQL / Xiaobin Lin (Alibaba)
Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)
Linux Kernel Extension for Databases / Александр Крижановский (Tempesta Techn...
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Peeking into the Black Hole Called PL/PGSQL - the New PL Profiler / Jan Wieck...
pg / shardman: шардинг в PostgreSQL на основе postgres / fdw, pg / pathman и ...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)

What's hot (20)

PPTX
Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)
PDF
Open Source SQL databases enters millions queries per second era
PDF
Как PostgreSQL работает с диском
PDF
Frontera распределенный робот для обхода веба в больших объемах / Александр С...
ODP
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
PDF
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
PDF
Odoo Online platform: architecture and challenges
KEY
PostgreSQL
PDF
XtraDB 5.7: key performance algorithms
PDF
Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013
PDF
Путь мониторинга 2.0 всё стало другим / Всеволод Поляков (Grammarly)
PPT
HandlerSocket plugin for MySQL (English)
PDF
Odoo Performance Limits
PDF
WiredTiger In-Memory vs WiredTiger B-Tree
PDF
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
PDF
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
PDF
Deep dive into PostgreSQL statistics.
PPTX
To Hire, or to train, that is the question (Percona Live 2014)
PPTX
Monitoring MySQL with OpenTSDB
PDF
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)
Open Source SQL databases enters millions queries per second era
Как PostgreSQL работает с диском
Frontera распределенный робот для обхода веба в больших объемах / Александр С...
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Odoo Online platform: architecture and challenges
PostgreSQL
XtraDB 5.7: key performance algorithms
Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013
Путь мониторинга 2.0 всё стало другим / Всеволод Поляков (Grammarly)
HandlerSocket plugin for MySQL (English)
Odoo Performance Limits
WiredTiger In-Memory vs WiredTiger B-Tree
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
Deep dive into PostgreSQL statistics.
To Hire, or to train, that is the question (Percona Live 2014)
Monitoring MySQL with OpenTSDB
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
Ad

Viewers also liked (20)

PDF
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
PPT
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
PDF
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
PPTX
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
PPTX
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
PPTX
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
PDF
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
PDF
Дмитрий Новиков - Tarantool в Badoo
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PDF
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
PPTX
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
PPTX
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
PPTX
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
PPTX
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
PDF
RabbitMQ + OpenLDAP
PDF
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
PDF
Tarantool 1.6: NoSQL database and application server
PPTX
Паттерны проектирования источников данных
PDF
The Future of Postgres Sharding / Bruce Momjian (PostgreSQL)
PDF
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Дмитрий Новиков - Tarantool в Badoo
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
RabbitMQ + OpenLDAP
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Tarantool 1.6: NoSQL database and application server
Паттерны проектирования источников данных
The Future of Postgres Sharding / Bruce Momjian (PostgreSQL)
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Ad

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

PDF
Streams Don't Fail Me Now - Robustness Features in Kafka Streams
PPTX
OLTP+OLAP=HTAP
 
PPTX
Apache Flink Deep-Dive @ Hadoop Summit 2015 in San Jose, CA
PPTX
Performance and how to measure it - ProgSCon London 2016
PDF
design-compiler.pdf
PDF
Non-blocking I/O, Event loops and node.js
PPTX
Cassandra Performance Benchmark
PDF
Building a High-Performance Database with Scala, Akka, and Spark
PPTX
Apache Flink Deep Dive
PDF
PDF
Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...
PDF
KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...
PPTX
Scaling with Python: SF Python Meetup, September 2017
PPTX
Master tuning
PPTX
Virtual Flink Forward 2020: A deep dive into Flink SQL - Jark Wu
PPTX
Oracle Basics and Architecture
PPT
NOSQL and Cassandra
PDF
SnappyData at Spark Summit 2017
PPTX
SnappyData, the Spark Database. A unified cluster for streaming, transactions...
PDF
Anton Moldovan "Building an efficient replication system for thousands of ter...
Streams Don't Fail Me Now - Robustness Features in Kafka Streams
OLTP+OLAP=HTAP
 
Apache Flink Deep-Dive @ Hadoop Summit 2015 in San Jose, CA
Performance and how to measure it - ProgSCon London 2016
design-compiler.pdf
Non-blocking I/O, Event loops and node.js
Cassandra Performance Benchmark
Building a High-Performance Database with Scala, Akka, and Spark
Apache Flink Deep Dive
Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...
KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...
Scaling with Python: SF Python Meetup, September 2017
Master tuning
Virtual Flink Forward 2020: A deep dive into Flink SQL - Jark Wu
Oracle Basics and Architecture
NOSQL and Cassandra
SnappyData at Spark Summit 2017
SnappyData, the Spark Database. A unified cluster for streaming, transactions...
Anton Moldovan "Building an efficient replication system for thousands of ter...

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
PDF
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)

Recently uploaded (20)

PPTX
Sustainable Sites - Green Building Construction
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
Geodesy 1.pptx...............................................
PPTX
Strings in CPP - Strings in C++ are sequences of characters used to store and...
PDF
composite construction of structures.pdf
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
DOCX
573137875-Attendance-Management-System-original
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PDF
Well-logging-methods_new................
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PDF
Digital Logic Computer Design lecture notes
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPT
Mechanical Engineering MATERIALS Selection
PPTX
OOP with Java - Java Introduction (Basics)
PPTX
Welding lecture in detail for understanding
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
Sustainable Sites - Green Building Construction
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Geodesy 1.pptx...............................................
Strings in CPP - Strings in C++ are sequences of characters used to store and...
composite construction of structures.pdf
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
573137875-Attendance-Management-System-original
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
Operating System & Kernel Study Guide-1 - converted.pdf
Well-logging-methods_new................
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
Digital Logic Computer Design lecture notes
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
Mechanical Engineering MATERIALS Selection
OOP with Java - Java Introduction (Basics)
Welding lecture in detail for understanding
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026

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