Pull to refresh

Comments 4

Спасибо за статью. Про тарантул их очень мало.
1) Я правильно понимаю, что кеш у вас используется по принципу ключ-значение? Рассматривали ли вы в таком случае redis?
2) Какой движок в mongodb вы использовали и не получили прироста скорости? inMemory или WiredTiger?
3) Какие программные продукты вы использовали для кеширования в связке с Java до описываемого в статье момента (возможно на других проектах)?
4) Натыкались ли вы на какие-нибудь подводные камни при использовании Tarantool?
Я периодически пытаюсь его «пощупать» и постоянно встречаю разные «сюрпризы», которые очень сложно гуглятся, например, дефолтный размер бокса — 100 Мб, пишешь в кеш, а потом бац — ошибка из которой сложно вообще что-то понять. Или у вас кеша было менеьше чем 100 Мб?
1. Да, в данный момент использую как ключ — значение. Но в ближайшее время будет добавлена более широкая функциональность. Для работы с Redis в моем случае надо было бы писать специальный адаптер и его поддерживать. С этой стороны Tarantool с http.server выглядит более гибким и удобным.
2. Изначально MongoDB была выбрана для хранения токенов (интеграция с внешней системой), у меня уже был опыт работы с ней и в целом у нее достаточно низкий порог вхождения. У нас используется WiredTiger, так установлена CE. С In-Memory Storage Engine поработать не удалось, так как он доступен только в MongoDB Enterprise.
3. До этого рассматривали различные варианты: Redis, Couchbase, а так же другие малоизвестные. Все они имеют свои преимущества и недостатки. Точных подробностей уже не помню, но выбор в их сторону не пал.
4. Да.
Например модуль expirationd мне так и не удалось завести. Он запускался, но ничего не делал. Но так как это не сложная задача, написал сам fiber и он работает на ура.
С модулем graphite тоже пришлось немного повозиться. Он так же ничего не делал, пока случайно не нашел что он не может «резолвить» имена. Но если указать в настройках IP то все работает хорошо.
Сейчас работаю с операцией upsert. К сожалению, вариант описанный в документации не работает. Но если для него сделать обходной вариант, то он работает очень хорошо.
5. Если я вас правильно понял, то это проблема которая решается изменением в конфигурации параметров memtx_memory — квота выделяемой памяти, и если у вам необходимо вставить большой кортеж, то еще и memtx_max_tuple_size. В тесте мне удавалось набить space на 1 Gb. Кстати, как и описано в документации квота может превышаться до 20%, потом появляются ошибки выделения памяти, но сам инстанс продолжает работать.
Да, в данный момент использую как ключ — значение. Но в ближайшее время будет добавлена более широкая функциональность.

Да, сейчас для сложного кеша и выбрать нечего, приходится пока обходиться key-value.
С In-Memory Storage Engine поработать не удалось, так как он доступен только в MongoDB Enterprise.

Вот это поворот, спасибо, не знал. Собирался пощупать, но всё руки никак не доходили.
MongoDB от Percona включает сразу свой движок In-Memory, не нужно Enterprise версии + еще удобные фишки.
Sign up to leave a comment.

Articles