SlideShare a Scribd company logo
Chronicle Map
Роман Левентов
Chronicle Software
ПО для
высокопроизводительных
систем на Java
• Финтех, трейдинг
• Ставки
• Туризм
Chronicle Map
Key‐value store в памяти
github.com/OpenHFT/Chronicle-Map
LGPL v3
Зачем?
Нужды трейдинга (1)
Задержки = деньги
Обычные реляционные БД
Out-of-process кеши (redis)
Chronicle Map: медианная
задержка (latency)
< 1 микросекунды
Нужды трейдинга (2)
Много источников событий
из разных процессов
Пример: агрегация данных
из нескольких бирж
Зачем еще нужен
доступ
из нескольких
процессов?
Тренды в железе
Сотни ГБ памяти
Несколько сокетов
⇒ NUMA
NUMA
NUMA
Доступ к памяти «чужого»
сокета на ~30% медленнее
NUMA: архитектура 1
NUMA node 1
core core core
NUMA node 2
core core core
Процесс
NUMA: архитектура 2
NUMA node 1
core core core
NUMA node 2
core core core
Процесс 1 Процесс 2
Выигрыш до 30% / 2 = 15%
Зачем несколько JVM?
Сборка мусора
• Меньше heap — меньше
паузы
• Garbage-free подсистемы
– Без пауз
– Цена барьеров
Compressed Oops
Зачем несколько JVM?
Heap = 40 GB
64-битные ссылки
Heap = 15 GB
32-битные ссылки
Heap = 15 GB
32-битные ссылки
Профит
Зачем несколько JVM?
Конфигурация на уровне ОС
• Affinity
• Приоритеты
• cgroups
Нужды трейдинга (2)
Много источников событий
из разных процессов
Hazelcast
Большинство IMDG
MapDB
Много источников
Chronicle Map:
Доступ из нескольких
процессов
Масштабирование записи
ограничено кол-вом ядер в
системе
Нужды трейдинга (3)
Очень большая частота
событий ⇒ обновлений базы
Репликация:
200k RPS
× 3 KB state updates
= 5 Gbit
Нужды трейдинга (3)
Сеть не тянет ⇒ очереди
репликации переполняются
Нужна «фильтрация»
Chronicle Map: репликация
без очередей, гарантия
прогресса
Не серебряная пуля
Multi‐key запросы
изолированы,
но не атомарны
Не durable, только persistent
Только асинхронная
репликация
Как?
Как сделать доступ
из нескольких
процессов?
Loopback, sockets
JVM 1 DB process
JVM 2
Kernel
DB memory
Loopback, sockets
Поход в ядро: 100s of ns
× 4
2…∞ лишних копирований
данных
Непредсказуемые задержки:
1..10 микросекунд
Loopback, sockets
• Redis, Memcached
Разделяемая память
БД на C + JNI
БД на Java
• sun.misc.Unsafe
БД на C + JNI
Java code DB code
JNIJVM 1
Kernel
DB shared memory
JVM 2
БД на Java (Unsafe)
Java code
DB code
Unsafe
JVM
Kernel
DB shared memory
JVM 2
Конечно, Unsafe!
Минусы JNI
• 50 ns
• 2 лишних копирования
• putIfAbsent(лямбда)
Минус Unsafe:
геморрой с блокировками
Блокировки
не нужны
Блокировки
LockSupport.parkNanos(1000)
8000
Context switches — зло
Spin loops, жжем CPU
Бенчмарк:
Chronicle Map*,
one-nio*,
ConcurrentHashMap
Спасибо Андрею Барюдину
и Андрею Пангину
Ответы на заявки
Запрос:
orderId, instrument, price, ± amount
+ покупка, − продажа
Key-value хранилище:
instrument, price → orderId, ± leftover
4, 8 → 8, 8 байтов
28 байтов всего
Пример
#1, AAPL, $600, +10
AAPL, $600 → #1, +10
#2, AAPL, $600, −7
AAPL, $600 → #1, +3
#3, AAPL, $600, −5
AAPL, $600 → #3, −2
Реалистичные данные
5000
инструментов
Расп. Ципфа
Цены:
биномиальное
Бенчмарк
10 млн заявок, 8 потоков
~ 160 тыс. различных пар
(instrument, price)
Xeon E5-2650 v2 @ 2.60GHz
8 Cores / 16 HW Threads,
2 NUMA nodes, L3: 20MB
Скорость
174
296
367
Chronicle Map one-nio ConcurrentHashMap
В среднем наносекунд на запрос, меньше — лучше
Память
7,5
10,1
14,4
Chronicle Map one-nio ConcurrentHashMap
Общее потребление памяти, MB, меньше — лучше
Потребление памяти
определяет скорость
Память
7,5
10,1
14,4 15
20
Chronicle
Map
one-nio CHM redis 32-bit,
approx.
redis 64-bit,
approx.
Общее потребление памяти, MB, меньше — лучше
Payload — 4,5 MB
Репликация
Репликация: боль
Сеть не тянет частые
обновления
⇒ Очередь переполняется
⇒ Надо делать сжатие
• Сложно
• Задержки
Репликация без логов
Записи помечаются на
репликацию в bit maps
Потребление памяти
не меняется
Но: только асинхронная,
eventually consistent
репликация
Кратко
По процессу на сокет
Аffinity, приоритеты
syscalls, JNI
Context switches
IPC через shared memory
Меньше памяти
Ссылки
http://chronicle.software/
key-value-stories.blogspot.com
@leventov
leventov@ya.ru

More Related Content

What's hot

Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
Ontico
 
Smirnov twisted-python
Smirnov twisted-pythonSmirnov twisted-python
Smirnov twisted-python
Andrey Smirnov
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли..."Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
Ontico
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
Ontico
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
Ontico
 

What's hot (20)

Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Smirnov twisted-python
Smirnov twisted-pythonSmirnov twisted-python
Smirnov twisted-python
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
 
Нереляционный SQL
Нереляционный SQLНереляционный SQL
Нереляционный SQL
 
Реклама со скоростью света (DMP-платформа), Сергей Жемжицкий (Clever Data)
Реклама со скоростью света (DMP-платформа), Сергей Жемжицкий (Clever Data)Реклама со скоростью света (DMP-платформа), Сергей Жемжицкий (Clever Data)
Реклама со скоростью света (DMP-платформа), Сергей Жемжицкий (Clever Data)
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли..."Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
 
введение в Gpu
введение в Gpuвведение в Gpu
введение в Gpu
 
Скорость с доставкой до пользователя
Скорость с доставкой до пользователяСкорость с доставкой до пользователя
Скорость с доставкой до пользователя
 
Инфраструктура хранения для KADME Whereoil
Инфраструктура хранения для KADME WhereoilИнфраструктура хранения для KADME Whereoil
Инфраструктура хранения для KADME Whereoil
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
 
Ровная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластереРовная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластере
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 

Viewers also liked

Trabajo sobre vietnam
Trabajo sobre vietnamTrabajo sobre vietnam
Trabajo sobre vietnam
mcarmeb
 
HSC Partner Meeting 10-10-12
HSC Partner Meeting 10-10-12HSC Partner Meeting 10-10-12
HSC Partner Meeting 10-10-12
bscisteam
 
Apunte clase 1 semiotica 2011
Apunte clase 1 semiotica 2011Apunte clase 1 semiotica 2011
Apunte clase 1 semiotica 2011
Alejandra Bernal
 
Presentation3-One Pound
Presentation3-One PoundPresentation3-One Pound
Presentation3-One Pound
ChaseTomlinson
 

Viewers also liked (20)

Kidney Facts from American Society of Nephrology
Kidney Facts from American Society of NephrologyKidney Facts from American Society of Nephrology
Kidney Facts from American Society of Nephrology
 
Git as version control for Analytics project
Git as version control for Analytics projectGit as version control for Analytics project
Git as version control for Analytics project
 
cv@HASSAN
cv@HASSANcv@HASSAN
cv@HASSAN
 
Аксессуары Степвей
Аксессуары Степвей Аксессуары Степвей
Аксессуары Степвей
 
Edible dish
Edible dishEdible dish
Edible dish
 
Drug
DrugDrug
Drug
 
Trabajo sobre vietnam
Trabajo sobre vietnamTrabajo sobre vietnam
Trabajo sobre vietnam
 
Теплица Апельсин Pro
Теплица Апельсин ProТеплица Апельсин Pro
Теплица Апельсин Pro
 
presentasi tentang Mekanika fluida free download
presentasi tentang Mekanika fluida free downloadpresentasi tentang Mekanika fluida free download
presentasi tentang Mekanika fluida free download
 
Keys to Understanding and Leveraging the power of Sina Weibo in China
Keys to Understanding and Leveraging the power of Sina Weibo in ChinaKeys to Understanding and Leveraging the power of Sina Weibo in China
Keys to Understanding and Leveraging the power of Sina Weibo in China
 
Резултати от анкета относно финансиране на бизнеса
Резултати от анкета относно финансиране на бизнесаРезултати от анкета относно финансиране на бизнеса
Резултати от анкета относно финансиране на бизнеса
 
Ruta de aprendizaje semana 3
Ruta de aprendizaje semana 3Ruta de aprendizaje semana 3
Ruta de aprendizaje semana 3
 
HSC Partner Meeting 10-10-12
HSC Partner Meeting 10-10-12HSC Partner Meeting 10-10-12
HSC Partner Meeting 10-10-12
 
compra vino monterrey orense
compra vino monterrey orensecompra vino monterrey orense
compra vino monterrey orense
 
Kelompok kkn x. 2013
Kelompok kkn x. 2013Kelompok kkn x. 2013
Kelompok kkn x. 2013
 
Chemistry terms
Chemistry termsChemistry terms
Chemistry terms
 
Apunte clase 1 semiotica 2011
Apunte clase 1 semiotica 2011Apunte clase 1 semiotica 2011
Apunte clase 1 semiotica 2011
 
Fernando hideo apresentacao techinter
Fernando hideo apresentacao techinterFernando hideo apresentacao techinter
Fernando hideo apresentacao techinter
 
Presentation3-One Pound
Presentation3-One PoundPresentation3-One Pound
Presentation3-One Pound
 
Events
EventsEvents
Events
 

Similar to Chronicle Map

андрей паньгин
андрей паньгинандрей паньгин
андрей паньгин
kuchinskaya
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
Andrey Smirnov
 
Анатомия веб-сервиса, Андрей Смирнов
Анатомия веб-сервиса, Андрей СмирновАнатомия веб-сервиса, Андрей Смирнов
Анатомия веб-сервиса, Андрей Смирнов
Ontico
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...
tfmailru
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)
Ontico
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013
Serguei Gitinsky
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
drupalconf
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Ontico
 

Similar to Chronicle Map (20)

Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 
андрей паньгин
андрей паньгинандрей паньгин
андрей паньгин
 
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 
Анатомия веб-сервиса, Андрей Смирнов
Анатомия веб-сервиса, Андрей СмирновАнатомия веб-сервиса, Андрей Смирнов
Анатомия веб-сервиса, Андрей Смирнов
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013
 
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 

Chronicle Map