Как написать CLI client для golang daemon?

Привет всем
Есть демон на го который предоставляет http api. Не знаю как сделать архитектуру и написать CLI client?
Сама инициализация демона занимает некоторое время( несколько секунд) и нагружает процессор. Встала задача написать CLI client что бы:
  • можно выполнять задачи без запущеного демона
  • не сильно нагружать систему
  • выполнять задачи через CLI client и http api и не получить инконсистентную систему: на CLI client что-то создаем, а на сервере удаляем

В системе нет базы данных и полноценный сервер - избыточное решение. Подошел бы некий общий кэш/память:
  • Если кеш не заполнен - заполняет первый инстанс(CLI client или http демон)
  • Если кеш уже заполнен - прочитать
  • Если кеш уже заполнен, но протух - прочитать и обновить
  • Вопрос задан
  • 2958 просмотров
Пригласить эксперта
Ответы на вопрос 3
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Пускай CLI client подключается только к запущенному серверу по сети через localhost.
И использует либо тот же http api, либо другой, специально для CLI управления.
Ответ написан
Комментировать
sumej
@sumej Автор вопроса
DevOps
Как работают cli для (допустим) Open vSwitch или других не сетевых демонов (в голову не приходят примеры)?
Я уже задумался о реализации хранения в локальной базе: sqlite / xml files. Но как вызываются функции через cli не по сети?
Ответ написан
Комментировать
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
RemoteProcedureCall golang.org/pkg/net/rpc зарегистрировать необходимые методы на демоне как экспортируемые. Вызывать через unix sockets (можно даже stdin). Общие данные хранить просто в файле, если нужна скорость RAM, то MemoryMappedFile golang.org/pkg/syscall/#Mmap
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы