SlideShare ist ein Scribd-Unternehmen logo
1 von 20
ночью через лес: stress-
test пяти almost-the-
same-functionality
shared-nothing-cluster
NoSQL СУБД
Здравствуйте,
меня зовут Даниил,
я системно администирую уже 20 лет и у
меня проблема
откуда вообще взялась эта идея
1. Данные надо где-то хранить
2. РСУБД работают хорошо.
1. Пока нам не нужна репликация
2. И шардинг
3. Распределенные СУБД
1. Они нам нравятся
1. Потому что мы ленивые
2. Но работают они как-то странно
1. особенно когда нам по-настоящему надо, чтобы они
работали хорошо
3. и нельзя сказать, что нас не предупредили
Чего мы собственно хотим
● У нас есть чтения и записи
● Чтения должны происходить надежно
● Данные должны храниться надежно
● Объем хранилища должен наращиваться
горизонтально
● все это должно быть ДЕШЕВО
Методика тестирования
1. создаем кластер из 5 нод
2. заливаем с максимально возможной скоростью записи в базу
3. запускаем процесс случайного чтения
a. с того же сервера запускаем писателя
4. имитируем сбой одной из нод
5. наблюдаем за поведением кластера, читателей и писателей
6. из ранее удаленной ноды создаем новую и возвращаем ее в кластер
7. наблюдаем за поведением кластера, читателей и писателей до полного восстановления
кластера
8. добавляем в кластер еще одну ноду
9. наблюдаем за поведением кластера, читателей и писателей
10. Узнать мы хотим о сюрпризах, которые готовит нам эксплуатация продукта в
экстремальных условиях
a. а все остальное нас интересует постольку-поскольку
b. некоторые кандидаты закончили тестирование на этапе чтения документации
Отбор кандидатов
● Источник вдохновения: http://nosql-database.org/
● aerospike
● cassandra
● crate.io
● elasticsearch
● orientdb
● rethinkdb
● где RIAK?!
● Но обзор будет анонимным
Тестовая среда
● 5-6 машин для кластера
o RAID0, кеширование записи
● Выделенная машина для клиента записи-чтения
● Выделенная машина для Grafana
● Выделенная гигабитная сеть - и, забегая вперед,
сеть должна бы быть получше
● docker как метод деплоя
Продукт A
Продукт A
● Поначалу все хорошо
● Потом все похуже
● А вот мы выключили ноду - и где же все?!
● А вот кластер проснулся
Продукт B
оказался надстройкой над продуктом A в
смысле технологий репликации и шардинга
Продукт C
● Выглядит многообещающе
● “Думайте обо мне как о массиве дисков”
● Но как делать ребалансинг?!
● И куда попадают новые ноды?!!
Продукт D
Продукт D
● Поначалу все хорошо
● И потом все хорошо
● А вот мы выключили ноду. Пришлось перезапустить
чтение.
● А вот мы вернули ноду в строй
● А вот мы добавили шестую машину
● Похоже, это идеальный кандидат
o но при дефолтных настройках ребалансинг очень
медленный
Продукт Е
Продукт Е
Продукт Е
● Поначалу все хорошо
● И потом все хорошо
o Но к концу появляются ошибки записи. Их мало, они не видны на
графике
● Вот мы выключили ноду - все, вроде, хорошо
● А вот мы ее включили. Откуда эти ошибки чтения?!
o Прежде, чем включать ноду на том же IP - надо поприседать
вокруг конфигов
o И вообще - ребалансинг представляет собой нетривиальную
задачу
Продукт F
Продукт F
● Какой хороший GUI!
● И поначалу все хорошо
● А потом похуже
● А почему все данные в одном шарде?!
o Ну давайте попробуем использовать SHA1 в качестве primary key
● Стало лучше - теперь данные распределены по двум шардам. Из
пяти…
● Картинки не будет - как только я собрался ее снять, кластер упал
● Совсем упал - запустить его опять не удалось за приемлемлемое
время
Деанонимизация
A - ElasticSearch
B - Crate.IO
C - Aerospike
D - OrientDB
E - Cassandra
F - RethinkDB
Выводы
● Как страшно жить
● Будем делать на Aerospike

Weitere ähnliche Inhalte

Andere mochten auch

Бинарные (файловые) хранилища- страшная сказка с мрачным концом
Бинарные (файловые) хранилища- страшная сказка с мрачным концомБинарные (файловые) хранилища- страшная сказка с мрачным концом
Бинарные (файловые) хранилища- страшная сказка с мрачным концомDaniel Podolsky
 
опыт построения и эксплуатации большого файлового хранилища
опыт построения и эксплуатации большого файлового хранилищаопыт построения и эксплуатации большого файлового хранилища
опыт построения и эксплуатации большого файлового хранилищаDaniel Podolsky
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Daniel Podolsky
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsDaniel Podolsky
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?Daniel Podolsky
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlDaniel Podolsky
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...HappyDev
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?tfmailru
 
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данныхAlex Polorotov
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolAlexandre Kalendarev
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyAlex Chistyakov
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016Alex Chistyakov
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015Alex Chistyakov
 

Andere mochten auch (20)

Бинарные (файловые) хранилища- страшная сказка с мрачным концом
Бинарные (файловые) хранилища- страшная сказка с мрачным концомБинарные (файловые) хранилища- страшная сказка с мрачным концом
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
 
Go и fuse
Go и fuseGo и fuse
Go и fuse
 
опыт построения и эксплуатации большого файлового хранилища
опыт построения и эксплуатации большого файлового хранилищаопыт построения и эксплуатации большого файлового хранилища
опыт построения и эксплуатации большого файлового хранилища
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Ryazan
RyazanRyazan
Ryazan
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
 
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данных
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере Tarantool
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of Berkeley
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016
 
My talk at LVEE 2016
My talk at LVEE 2016My talk at LVEE 2016
My talk at LVEE 2016
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015
 

Ähnlich wie ночью через лес Stress-test пяти almost-the-same-functionality shared-nothing-cluster no sql субд

Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Ontico
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) АксеновAlex Chistyakov
 
Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Stas Fomin
 
А какой у вас Agile: свежевыжатый или порошковый?
А какой у вас Agile: свежевыжатый или порошковый?А какой у вас Agile: свежевыжатый или порошковый?
А какой у вас Agile: свежевыжатый или порошковый?Andrey Bibichev
 
2013 09 14 деплой
2013 09 14 деплой2013 09 14 деплой
2013 09 14 деплойYandex
 
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Ontico
 
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)Ontico
 
Python и высокая нагрузка
Python и высокая нагрузкаPython и высокая нагрузка
Python и высокая нагрузкаAlexander Shigin
 

Ähnlich wie ночью через лес Stress-test пяти almost-the-same-functionality shared-nothing-cluster no sql субд (10)

Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
 
Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?
 
А какой у вас Agile: свежевыжатый или порошковый?
А какой у вас Agile: свежевыжатый или порошковый?А какой у вас Agile: свежевыжатый или порошковый?
А какой у вас Agile: свежевыжатый или порошковый?
 
2013 09 14 деплой
2013 09 14 деплой2013 09 14 деплой
2013 09 14 деплой
 
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
 
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
 
Python и высокая нагрузка
Python и высокая нагрузкаPython и высокая нагрузка
Python и высокая нагрузка
 
Kranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burmaKranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burma
 
WepPerfomance,
WepPerfomance, WepPerfomance,
WepPerfomance,
 

ночью через лес Stress-test пяти almost-the-same-functionality shared-nothing-cluster no sql субд

  • 1. ночью через лес: stress- test пяти almost-the- same-functionality shared-nothing-cluster NoSQL СУБД
  • 2. Здравствуйте, меня зовут Даниил, я системно администирую уже 20 лет и у меня проблема
  • 3. откуда вообще взялась эта идея 1. Данные надо где-то хранить 2. РСУБД работают хорошо. 1. Пока нам не нужна репликация 2. И шардинг 3. Распределенные СУБД 1. Они нам нравятся 1. Потому что мы ленивые 2. Но работают они как-то странно 1. особенно когда нам по-настоящему надо, чтобы они работали хорошо 3. и нельзя сказать, что нас не предупредили
  • 4. Чего мы собственно хотим ● У нас есть чтения и записи ● Чтения должны происходить надежно ● Данные должны храниться надежно ● Объем хранилища должен наращиваться горизонтально ● все это должно быть ДЕШЕВО
  • 5. Методика тестирования 1. создаем кластер из 5 нод 2. заливаем с максимально возможной скоростью записи в базу 3. запускаем процесс случайного чтения a. с того же сервера запускаем писателя 4. имитируем сбой одной из нод 5. наблюдаем за поведением кластера, читателей и писателей 6. из ранее удаленной ноды создаем новую и возвращаем ее в кластер 7. наблюдаем за поведением кластера, читателей и писателей до полного восстановления кластера 8. добавляем в кластер еще одну ноду 9. наблюдаем за поведением кластера, читателей и писателей 10. Узнать мы хотим о сюрпризах, которые готовит нам эксплуатация продукта в экстремальных условиях a. а все остальное нас интересует постольку-поскольку b. некоторые кандидаты закончили тестирование на этапе чтения документации
  • 6. Отбор кандидатов ● Источник вдохновения: http://nosql-database.org/ ● aerospike ● cassandra ● crate.io ● elasticsearch ● orientdb ● rethinkdb ● где RIAK?! ● Но обзор будет анонимным
  • 7. Тестовая среда ● 5-6 машин для кластера o RAID0, кеширование записи ● Выделенная машина для клиента записи-чтения ● Выделенная машина для Grafana ● Выделенная гигабитная сеть - и, забегая вперед, сеть должна бы быть получше ● docker как метод деплоя
  • 9. Продукт A ● Поначалу все хорошо ● Потом все похуже ● А вот мы выключили ноду - и где же все?! ● А вот кластер проснулся
  • 10. Продукт B оказался надстройкой над продуктом A в смысле технологий репликации и шардинга
  • 11. Продукт C ● Выглядит многообещающе ● “Думайте обо мне как о массиве дисков” ● Но как делать ребалансинг?! ● И куда попадают новые ноды?!!
  • 13. Продукт D ● Поначалу все хорошо ● И потом все хорошо ● А вот мы выключили ноду. Пришлось перезапустить чтение. ● А вот мы вернули ноду в строй ● А вот мы добавили шестую машину ● Похоже, это идеальный кандидат o но при дефолтных настройках ребалансинг очень медленный
  • 16. Продукт Е ● Поначалу все хорошо ● И потом все хорошо o Но к концу появляются ошибки записи. Их мало, они не видны на графике ● Вот мы выключили ноду - все, вроде, хорошо ● А вот мы ее включили. Откуда эти ошибки чтения?! o Прежде, чем включать ноду на том же IP - надо поприседать вокруг конфигов o И вообще - ребалансинг представляет собой нетривиальную задачу
  • 18. Продукт F ● Какой хороший GUI! ● И поначалу все хорошо ● А потом похуже ● А почему все данные в одном шарде?! o Ну давайте попробуем использовать SHA1 в качестве primary key ● Стало лучше - теперь данные распределены по двум шардам. Из пяти… ● Картинки не будет - как только я собрался ее снять, кластер упал ● Совсем упал - запустить его опять не удалось за приемлемлемое время
  • 19. Деанонимизация A - ElasticSearch B - Crate.IO C - Aerospike D - OrientDB E - Cassandra F - RethinkDB
  • 20. Выводы ● Как страшно жить ● Будем делать на Aerospike