215 похожих чатов

Какой тогда смысл в ролях роутер и дата нода, если

они в себя пишут? Где тут кластер?

14 ответов

26 просмотров

И тут мы переходим к вопросу о том, как клиент работает с роутером. Надо через vshard.router.callrw - он сходит на нужный шард

https://github.com/Tarantool/examples

Алексей-Ямщиков Автор вопроса

А своими словами? В документации много, что написано, но по факту пока натыкаешься на то, что оно не работает так как ожидается.

насколько я понимаю, роутер продолжает быть полноценным экземпляром тарантула и для обработки запросов технически может обращаться в локальное хранилище, но на архитектурном уровне - это является ошибкой. Все функции вызываемые на роутере должны в итоге так или иначе сохранять / запрашивать данные от стораджей

Там в примерах рассказывается, что такое роутер и как работать с вишардом

Может, вам поможет: 1. На сторадже создаю функцию: local function metadata_get(message_id) checks('number') local metadata = box.space.metadata_store:get(message_id) metadata = { message_id = metadata.message_id; version = metadata.version; bucket_id = metadata.bucket_id; start_processing_timestamp = metadata.start_processing_timestamp; end_processing_timestamp = metadata.end_processing_timestamp; current_stage = metadata.current_stage; metadata = metadata.metadata; } return metadata; 2. На роутере вот так её вызываю, вычислив бакет: local function http_metadata_get(req) local message_id = tonumber(req:stash('message_id')) local bucket_id = vshard.router.bucket_id(message_id) local metadata, error = err_vshard_router:pcall( vshard.router.call, bucket_id, 'read', 'metadata_get', {message_id} ) if error then local resp = req:render({json = { info = "Internal error", error = error }}) resp.status = 500 return resp end if metadata == nil then local resp = req:render({json = { info = "Metadata not found" }}) resp.status = 404 return resp end metadata.bucket_id = nil local resp = req:render({json = metadata}) resp.status = 200 return resp end

vshard.router.call ходит на ноду с нужным бакетом 😃

Алексей-Ямщиков Автор вопроса

Это для разработки описано? Я немного не понимаю. Тарантул это СУБД? Или это "сам себе напиши базу", "сам себе напиши как кластер у тебя будет работать" ?

Алексей-Ямщиков Автор вопроса

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

По поводу кластера не могу сказать, но в принципе, чтобы получить какое-то хранилище на Тарантуле нужно писать функции, увы. Я выше писал уже, что это сервер приложений на Lua, даже БД надо собирать.

Посмотрите примеры всё-таки. Для простейшего кейса вам не нужен код на луа, кроме инициализации спейсов

А если функции описаны через коннектор?

Так функции написаны через коннектор. Или надо для картриджа писать функции внутри приложения?

Через коннектор не пробовал, может кто-то ещё прокомментирует. Этот пример, он с вызовом функций через встроенный HTTP сервис. Но, с другой стороны, я, например, не понимаю как через коннектор описывать роли картриджа.

Похожие вопросы

Обсуждают сегодня

Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
48
Всем привет! Скажите, никто не пытался уменьшить размер процесса ssl, которые ассоциируется с открытым соединением (не помню точное название этого процесса, но там была какая-...
Алексей
20
а проверьте, собирается ли у кого сейчас транк лазаря через делюкс? у меня вот: fpcupdeluxe: info: Lazarus Native Installer (BuildModuleCustom: UserIDE): LazBuild: building Us...
Iluha Companets
20
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Мне тут приспичило встроить в программу форматировние текста SQL, расставить переносы строк и отступы так, чтобы лучше читалось. Я что-то свое изобразил, оно после ключевых сл...
Sergey Bodrov
11
добрый день. возможно ли изменить цвет окон лазаруса? Как?
Budemposmotret
35
Господа, а кто-нибудь сталкивался с размещением на TTabControl/TTabSheet множества контролов (> 100) с последующими External: Access violation? Вот буквально на ровном месте. ...
Dmitry
29
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Добрый день. Опять снова хочу обратиться к вам за помощью. После создания проэкта stack new, lazy.nvim + nvim-lspconfig/haskell-tools + hlint, ormolu из mason + hls из ghcup ...
Nannk
8
Does anyone have some zeroday's left?
Wito!d ♥️🩷
44
Карта сайта