LINUX.ORG.RU

Freeswitch mod_lua заменить Lua на Tarantool

 , ,


0

1

Доброго времени суток, ЛОР!
Задача нынче следущая.

Есть замечательный FreeSwitch 1.8.2, в котором есть не менее замечательный модуль mod_lua, который линкуется с liblua5.2.

Есть не менее замечательный Tarantool, тот же Lua, однако с поддержкой лёгких потоков (fibers), да и к тому же работает раз эдак в 10 быстрее Lua, оставаясь обратно совместимым.
Беглым взглядомdiff'ом пробежал по заголовкам, которые шли в пакете tarantool-dev, и вроде бы как бы да, на первый взгляд всё совместимо.

Однако, при попытке «создать» mod_tarantool я потерпел фиаско, что в принципе неудивительно, так как Tarantool имплементирует Lua API 5.1, а mod_lua линкуется с liblua5.2.

Дальше мои знания, к сожалению, всё.

________________________________________________________________

Итак, уважаемые знатоки!
Предлагаю $200 в Bitcoin-эквиваленте тому, кто добавит поддержку Tarantool в Freeswitch 1.8.2.

Есть не менее замечательный Tarantool, тот же Lua, однако с поддержкой лёгких потоков (fibers), да и к тому же работает раз эдак в 10 быстрее Lua, оставаясь обратно совместимым.

Насколько я понимаю, Тарантул это LuaJIT в связке с базой данных. Если нужен только Lua, то встраивать надо LuaJIT, а не мейлрушную поделку

Tarantool имплементирует Lua API 5.1, а mod_lua линкуется с liblua5.2.

LuaJIT поддерживает по крайней мере часть фичей Lua 5.2, но хз, как там с совместимостью на уровне API, мб есть дефайн какой-нибудь

annulen ★★★★★ ()

А какую проблему вы решаете?

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

Tarantool состоит из

- Имплементация Lua с дополнительными фичами, вроде non-blocking multithreading
- База данных
- Сервер приложений


К LuaJit он имеет очень поверхностное отношение.

а не мейлрушную поделку

А nginx — рамблеровская поделка.

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

Общение с базой данных (PostgreSQL) из FreeSwitch.
Все существующие имплементации (pgmoon, lua-sql-postgres) не обеспечивают необходимого функционала и производительности.

(inb4: например? например ни одна из имплементаций не умеет в connection keep-alive/re-use, а в случае если база у нас находится на другом хосте, то подключение к БД с SSL-хэндшейком занимает около секунды)

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

Ну вы должны понять, что более быстрый язык и платформа только уменьшит микроиздержки на какие-то наносекунды, но проблему вашу с доступом к данным не решит. Зачем вы базу держите фиг знает где и через ssl, что сеть дает такой латенси? Я хоть и два года работал с FS, но не работал со луа-бекендом. Полагаю, что FS не держит интерпретатор луа в памяти, а лишь перезапускает скрипт каждый раз, потому, может, имеет смысл, вынести пулл коннектов не на сторону приложения, а на сторону бд через тот же PG Bouncer.

nikolnik ★★★ ()

LuaJIT не умеет полностью Lua 5.2 и там особая боль с контекстами.

Т.е. scope твоей задачи на самом деле выглядит так:

  • сделать совместимость LuaJIT c Lua 5.2 и куча проектов скажет вам спасибо;
  • перетащить freeswitch на lua 5.1.

В любом из вариантов будет много боли с контекстами из-за которых придется переписывать тонны кода.

catap ★★★★★ ()
Последнее исправление: catap (всего исправлений: 1)
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=0