Обновить

Комментарии 10

Ещё бы коннектор для этого фреймворка www.diesel.io/ :-)
Интересный фреймворк!
Код коннектора можно адаптировать и под diesel.io, это не слишком сложно.
Но у diesel.io есть зависимости, которые тормозят поддержку Python 3, есть смысл посмотреть в сторону asyncio
Спасибо, очень хорошая статья и полезный коннкектор.
А можете рассказать отличия 1.6 протокола от 1.5? Хочу вместе с nodejs использовать, но есть только библиотека для 1.5, которая не взлетает на 1.6 — придется дописать. А что конкретно нужно изменить мне не сильно понятно? Легче заново написать или там не многое менять?
Принципы остались те же, но протокол существенно поменялся.
Сам протокол описан вот здесь:

tarantool.org/doc/dev_guide/box-protocol.html

Теперь для работы с сервером нужен msgpack.
BTW а что вы 1.6 то его назвали — у вас же совсем брат тарантула получился. Если бы он был 2.0 это бы быстрее пояснило как это я так зашел через год в тарантул и там не осталось ничего знакомого :)
На первый взгляд всё достаточно сложно и запутанно

После Tornado всё очень естественно. К слову Tornado умеет работать поверх Asyncio.
Хотя вроде event loop в Tornado быстрее чем у Asyncio.
По сложности сравнивал именно с gevent, в нем event loop, как таковой — спрятан. Вызовы, в которых происходит переключение между гринлетами, остаются в неизменном виде. С Tornado не сравнивал, но было бы интересно узнать разницу по бенчмаркам.
gevent очень костыльно устроены, и вроде как прекратили своё развитие.
Явные бенчмарки и мне интересны.
Попробовал сравнить с Tornado, именно в стиле «Coroutines and concurrency».
Код коннектора для Tornado (прототип) можно посмотреть здесь.

К сожалению в стабильной ветке Tornado, Event Loop не богат concurrency-фичами, такими как Event или Condition.
Поэтому, коннектор и бенчмарк будет работать только на Tornado «4.2.dev1».

pip install git+https://github.com/tornadoweb/tornado.git

Код бенчмарка похож на asyncio.
Результаты бенчмарка:

insert — 30.270719
select — 28.614258
update — 29.975998
delete — 30.612288

Это заметно медленнее asyncio, возможно на callbacks будет быстрее, но совсем не хочется использовать этот стиль.
Yappi-профайлер показывает, что много времени тратится на вызовы tornado.gen, пруф. здесь.
При этом, за бенчмарк было сделано 5K вызовов read/write в tornado.iostream, что неплохо, по-сравнению с синхронным подходом.
Из плюсов можно отметить, что сам инстанс Tarantool расходует на порядок меньше CPU.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
team.vk.company
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия
Представитель
Дмитрий Головин