riak_core

327 views
Skip to first unread message

Maxim Molchanov

unread,
Feb 16, 2015, 1:33:13 PM2/16/15
to erlang-...@googlegroups.com
Всем привет!

Возник вопрос стабильности и прогнозируемости riak_core при использовании в своих проектах.
Хотелось бы услышать от сообщества про опыт реального использования и про грабли в процессе эксплуатации.

Сразу хочу сказать, пока не используем, но активно присматриваемся.

the.silly.sad

unread,
Feb 16, 2015, 2:38:52 PM2/16/15
to erlang-...@googlegroups.com
kto skazal Sberbank?

On 02/16/2015 08:23 PM, nomad wrote:
> На основе этой кодовой базы и стиля написан серьезный production в России.
>
> понедельник, 16 февраля 2015 г., 21:33:13 UTC+3 пользователь Maxim
> Molchanov написал:

Valery Meleshkin

unread,
Feb 17, 2015, 4:42:46 AM2/17/15
to erlang-...@googlegroups.com
Приветствую. Стабильность — ок. Под прогнозируемостью вы что понимаете?

Плюсы:
1) Куча всего уже сделана за вас и довольно качественно
2) Каждый релиз riak привносит новый функционал, старый ломают крайне редко. Даже приватный API почти не ломают.
3) Разработчики нормально общаются в твиторе и на GH (фиксят к сожалению не всегда оперативно)

Минусы:
1) Башо тестируют каждый релиз riak на определённых версиях OTP. Использовать другие версии будет затруднительно потому что их часто прибивают гвоздями в rebar.config.
2) Многие депенды прибиты гвоздями к форкам basho, которые как правило отстают от апстрима. Но они постепенно отрезают такие депенды.

Рекомендации
1) Строго рекомендуется понимать что вы делаете и как это себя на самом деле ведёт (ownership и hinted handoff, forwarding во всех его ипостасях, разделения сети, ...)
2) riak_core это AP система, хорошо подумайте подходит ли вам это. Если вам всё таки требуется CP — нужно кроме riak_core взять ещё и riak_ensemble.
3) Пишите quickcheck/proper модели — это практически единственный способ что-то достоверно протестировать.
4) Подпишитесь на репозитории basho на GH.
5) Нормальный map-reduce называется riak_pipe.


понедельник, 16 февраля 2015 г., 21:33:13 UTC+3 пользователь Maxim Molchanov написал:
Всем привет!

Max Lapshin

unread,
Feb 17, 2015, 5:42:57 AM2/17/15
to erlang-...@googlegroups.com
2015-02-17 12:42 GMT+03:00 Valery Meleshkin <nekro...@gmail.com>:
3) Пишите quickcheck/proper модели — это практически единственный способ что-то достоверно протестировать.


Это из-за того, что нужно тестировать по факту, методом бешеной мартышки, что бы найти хоть какие-то плохо угадываемые проблемы?

Maxim Molchanov

unread,
Feb 17, 2015, 6:05:41 PM2/17/15
to erlang-...@googlegroups.com
Valery, благодарю за развернутый и содержательный ответ.
Интересует прогнозируемость в скорости внедрения и обновления кодовой базы внутри нашего проекта. Вы частично ответили про то, что riak редко ломают старый функционал и api.
Думаю, что ограничения связанные с ограниченным набором версий otp и прибитые гвоздями зависимости - не самое страшное. Не сказать, что легко, но обходятся системой управления экосистемой проекта и компромиссом в выборе этих самых версий otp и библиотек зависимостей.

вторник, 17 февраля 2015 г., 12:42:46 UTC+3 пользователь Valery Meleshkin написал:

Valery Meleshkin

unread,
Feb 18, 2015, 5:05:38 AM2/18/15
to erlang-...@googlegroups.com
Да. Это свойство не столько riak_core сколько любой системы построенной в предположениях asynchronous network[1].
Basho в частности именно так тестируют riak. 

Из этого эмпирического правила бывают разумные исключения. 
Если состояние vnode является монотонно неубывающей сущностью (например множетсво id всех обработанных этой vnode транзакций), то достаточно проверить, что абстрактный тип данных представляющий состояние действительно допускает только операции сохраняющие монотонность (тут proper тоже способен сильно помочь но уже не в роли мартышки) и состояние изменяется во всех callback'ах в которых оно должно изменяться.
Другим случаем, когда тестирование существенно упрощается является авторитарная сущность существующая строго в одном экземпляре или реплицированная посредством уже протестированной реализации консенсуса.

[1] Nancy Lynch. Distributed Algorithms, Morgan Kaufman, 1996. стр 199–231.

вторник, 17 февраля 2015 г., 13:42:57 UTC+3 пользователь Max Lapshin написал:

Valery Meleshkin

unread,
Feb 18, 2015, 5:19:04 AM2/18/15
to erlang-...@googlegroups.com
Не за что. Мне тяжело ответить на вопрос про сроки внедрения потому что это сильно зависит от команды и от скоупа (решите взять только core или заодно прихватить kv, ensemble и pipe). Разобраться с базовыми вещами и игрушечными примерами можно где-то за неделю, но открывать что-то новое для себя команда будет постоянно. Ещё раз хочу сделать акцент на необходимости понимания происходящего в системе. В этом смысле хорошо сверять понимание друг с другом и с кем-то кто уже знает как это работает (например со мной :) ),наконец, если что-то непонятно — всегда можно вооружиться dbg:trace и смотреть в код riak_core.

среда, 18 февраля 2015 г., 2:05:41 UTC+3 пользователь Maxim Molchanov написал:

Maxim Molchanov

unread,
Feb 18, 2015, 3:03:04 PM2/18/15
to erlang-...@googlegroups.com
Насчет понимания, как раз таки из-за AP и реализации из коробки многих вещей и смотрим на riak_core.
В русскоговорящем сегменте сети, мягко говоря, не слишком много обсуждений по теме. 
Думаю через какое-то время смогу конструктивно побеседовать о граблях в процессе внедрения.

среда, 18 февраля 2015 г., 13:19:04 UTC+3 пользователь Valery Meleshkin написал:
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
0 new messages