Comments 8
"Подведем итог": столько много кода в таком простом приложение давно не видел. Возможно надо было сделать с помощью кафки? сразу -60-70% ручного труда и кода \ микросервисов если смотреть в сторону kafka streams
+3
Так и на Lua/Tarantool эти приложения давно существуют, можно посмотреть на tarantool/queue или на moonlibs/xqueue.
Однако, во-первых, Kafka Streams — не одно и то же, что и описанная выше очередь, и может быть оверкиллом для ващей задачи, а во-вторых — создание своей реализации чего-то похожего на Kafka Streams не получится уместить в одну статью:)
+1
local function gen_id()
local new_id
repeat
new_id = clock.realtime64()
until not box.space.queue:get(new_id)
return new_id
end
Я так понимаю, что этот код работает, только по тому, что Tarantool однопоточный
+1
Круто, особенно с горячей перезагрузкой кода, очень полезная возможность. Хотя, конечно, нужно проделать определенные танцы с бубном для ее использования.
А если целый кластер надо таким образом обновить, как тогда действуете?
А если целый кластер надо таким образом обновить, как тогда действуете?
0
Кластер выкатывается постепенно, по частям. Поскольку с другими частями системы взаимодействие идёт по API, то обновление на лету это API не ломает и обновление происходит незаметно.
Если же нужно выполнить breaking change, то выкатка выполняется в 3 этапа:
1. Выкатываем версию, которая поддерживает старое API и новое API. Выкатываем постепенно. Растянутость во времени не мешает, т.к. старая версия всё ещё работает. Если что-то идёт не так, можем откатить.
2. Выкатываем целевой софт, в котором меняем версию на новую. Поскольку поддерживаются обе версии, то проблем с длительностью выкатки нет.
3. Выкатываем версию, из которой просто удаляем роботу со старым API. Тоже ничто не мешает делать это постепенно.
Если же нужно выполнить breaking change, то выкатка выполняется в 3 этапа:
1. Выкатываем версию, которая поддерживает старое API и новое API. Выкатываем постепенно. Растянутость во времени не мешает, т.к. старая версия всё ещё работает. Если что-то идёт не так, можем откатить.
2. Выкатываем целевой софт, в котором меняем версию на новую. Поскольку поддерживаются обе версии, то проблем с длительностью выкатки нет.
3. Выкатываем версию, из которой просто удаляем роботу со старым API. Тоже ничто не мешает делать это постепенно.
0
А как этот код тестировать и версионировать?
+1
Для этого в Tarantool существует экосистема инструментов. Вот туториал по созданию простого приложения — там все эти инструменты объясняются. Есть примеры тестов и способ их запуска.
0
Sign up to leave a comment.
Создаём с нуля высоконагруженное приложение на Tarantool