LINUX.ORG.RU
ФорумTalks

LevelDB. Апокалиписис

 , ,


1

1

Сегодня таки не смог завести репликацию LevelDB на Node.js: в одну сторону при изначально чистой базе все происходит нормально, а потом или не реплицирует или вываливается с ошибкой. Разработчик что-то обещал сделать к концу недели. Сказал сеньору - он предложил Riak или Redis. Ну давай Redis. Оно там поддерживает Multi-MasterReplication? Ну типа да. ОК. Буду переписывать.

Зы. Передаю горячий привет консультанту по Node.JS, который посоветовал выбрать LevelDB.

Ззы. Найдите вероятность провала репликации на Redis.

Что это делает в моих толксах и как из этого сотворить годный хохлосрач?

r_asian ★☆☆
()

MultiMaster в Redis есть только в RedisCluster, который не готов для продакшена. Или что-то изменилось за последнее время?

realloc ★★★★
()
Ответ на: комментарий от EnterpriseMobility

MySQL/Galera (:
А что, мультиастер есть, а в галере он даже довольно надёжный.

MrClon ★★★★★
()

Я вообще не разработчик, и сильно отстал от моды... Для меня есть две БД - postgresql когда нет денег и Oracle когда есть денег. Если нужно очень много данных с высокой скоростью и мало логики, то MySQL с патчами для raw доступа к таблицам мимо SQL (сам не пробовал, но решение выглядит просто и элегантно).

Всё годами проверено и идеологически масштабируется куда угодно.

Shadow ★★★★★
()

чувак, твои посты полны боли и отчаяния. надеюсь, ты будешь жить

xsektorx ★★★
()
Ответ на: комментарий от reality_hacker

Если не важна консистентность и устроят простои при перераспределении ключей при вылете машин.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Абаснуй откуда простои и зачем перераспределять ключи? При выпадении реплики чтение происходит с других реплик (ну или не происходит вообще, если режим чтения уберпараноидальный).

При записи и чтении с кворумом, на сколько я понимаю, должна быть полноценная консистентность.

MrClon ★★★★★
()

Node.JS

Автоматически не нужно.

Riak

Хрень, а не хранилище в плане тормозов, логов и административного юзабилити. riak обычно относят на помойку ещё задолго до первого продакшена. Не нужно. Если нужно dynamo, то осиль кассанду.

LevelDB

Это быстрое *локальное* KV-хранилище, ни о какой репликации там речи не идёт by-design.

Redis

Осиль уже наконец elasticsearch, а не эти пионерские поделки с блобиками вместо значений.

shahid ★★★★★
()
Ответ на: комментарий от MrClon

Абаснуй откуда простои и зачем перераспределять ключи?

В случае dynamo-шардинга: множество ключей кластера формирует замкнутое кольцо, отрезки этого кольца закреплены за конкретными узлами, равно как и их реплики. Очевидно, что в случае выпадания узла, кластер станет работать неоптимально:
1. Скорость исполнения части операций снизится.
2. Некоторые данные могут оказаться незарезервированными в кластере. Т.е. было две копии, осталась одна.
При добавлении новой ноды в кластер — всё тоже вполне очевидно.

Но откуда у Reset появились простои при перераспределении ключей — загадка.

shahid ★★★★★
()
Последнее исправление: shahid (всего исправлений: 2)
Ответ на: комментарий от shahid

Это быстрое *локальное* KV-хранилище, ни о какой репликации там речи не идёт by-design.

а чем я занимался в рамках этого спринта?

LevelDB has a small set of primitives. This allows more complex features such as replication, map-reduce, pub-sub, etc. to be published as modules on package management systems such as npm or clibs . Competition leads to innovation!

EnterpriseMobility
() автор топика
Ответ на: комментарий от MrClon

Абаснуй откуда простои и зачем перераспределять ключи?

Затем, что при добавлении или убирании машин меняются диапазоны. Кстати, кроме перераспределения ключей в кассандре есть такая нехорошая штука как компактификация, это считай тоже простой.

При выпадении реплики чтение происходит с других реплик

Ключ есть, но находится на другой машине, которая не отвечает за диапазон. Ты не сможешь прочитать данные пока не завершится перераспределение. Ты даже не узнаешь, что ключ на самом деле у тебя есть, так как чтение скажет, что ничего нет.

При записи и чтении с кворумом, на сколько я понимаю, должна быть полноценная консистентность.

Консистентность есть только на момент записи.

Reset ★★★★★
()
Ответ на: комментарий от shahid

Но откуда у Reset появились простои при перераспределении ключей — загадка.

Снижение времени ответа на порядки я считаю за простой. У тебя было 10000rps, а становится 100. Только 1% клиентов получает ответ. Если это не простой, то что это?

Reset ★★★★★
()
Ответ на: комментарий от EnterpriseMobility

Смотря что ты собрался хранить. Можно посмотреть на hdfs или hbase.

Reset ★★★★★
()
Ответ на: комментарий от vurdalak

Дополнительными плюшками BI и работой на больших-больших санках. А большие-большие санки позволяют делать идиотские тяжёлые запросы для этого самого BI, чтобы сделать выводы.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от EnterpriseMobility

Ну я как минимум понимаю для чего нужен мастер-слейв. Какой прок от мультимастера - загадка.

ya-betmen ★★★★★
()
Ответ на: комментарий от MrClon

Реальные цифры, поэтому мы в своем проекте не смогли это использовать. Я вообще сейчас не очень понимаю для каких use-case можно использовать hash-ring'based nosql решения.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Что-то уж очень круто. Может где-то что-то недокрутили?

MrClon ★★★★★
()
Ответ на: комментарий от EnterpriseMobility

А как мне тогда создавать реплицируемое хранилище?

Лучше скажи, что именно хранить собрался и как с этим работать. Какие данные (мелкие/крупные), чтение по random-access или сверсткой, и т.д.

Мультимастер-хранилища являются такими до мозга и костей с первых строчек архитектуры, а у тебя получилось, что была одна базёнка для хранения истории хрома, а из неё получилось некое распределённое hash-ring-хранилище.

Не, я не говорю, что из LevelDB нельзя не сделать нечто масштабируемое, но ты всегда будешь натыкаться на её прошлое, и будешь снова и снова решать те же проблемы, что уже решили в кассандрах-волдемортах и т.д., пока не родишь в итоге те же кассандры, волдеморты и остальное.

shahid ★★★★★
()
Ответ на: комментарий от reality_hacker

Скорее всего нагрузка маленькая. У hash-ring физика работы такая, что по другому там быть просто не может. Система уходит в диски и всё стоит колом.

Reset ★★★★★
()
Ответ на: комментарий от Reset

А RAMы сколько было? Касандре для адекватной работы нужно очень много памяти. Может какие-то индексы (помнится их там много всяких разных) в память не влезали?

MrClon ★★★★★
()
Ответ на: комментарий от Reset

Много памяти нужно касандре не для того что-бы хранить в ней данные, а для того что-бы хранить в неё индексы позволяющие меньше дёргать HDD.
Вообще работа с диском в касандре сильно оптимизирована. При миграции блоков ключей «физически двигать на диске» ничего не надо, надо линейно прочесть файл с диска и залить его в сеть (ну и на другом конце принять его из сети и линейно записать на диск). Это дёшево.

MrClon ★★★★★
()
Ответ на: комментарий от Reset

Нагрузка вполне Ок, по 30 террабайт в день записываем. Ринг архитектура очевидно к дискам отношение имеет опосредственное, а внутренняя архитектура кассандры наоборот заточена для облегчения доступа на диск.

reality_hacker
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.