Мы в Telegram
Добавить новость



Новости сегодня на DirectAdvert

Новости сегодня от Adwile

Разработать распределенный вычислитель арифметических выражений на Go

Описание задачи:
Пользователь хочет считать арифметические выражения. Он вводит строку 2 + 2 * 2 и хочет получить в ответ 6. Но наши операции сложения и умножения (также деления и вычитания) выполняются "очень-очень" долго. Поэтому вариант, при котором пользователь делает http-запрос и получает в качестве ответа результат, невозможна. Более того: вычисление каждой такой операции в нашей "альтернативной реальности" занимает "гигантские" вычислительные мощности. Соответственно, каждое действие мы должны уметь выполнять отдельно и масштабировать эту систему можем добавлением вычислительных мощностей в нашу систему в виде новых "машин". Поэтому пользователь, присылая выражение, получает в ответ идентификатор выражения и может с какой-то периодичностью уточнять у сервера "не посчиталось ли выражение"? Если выражение наконец будет вычислено - то он получит результат. Помните, что некоторые части арифметического выражения можно вычислять параллельно.

Front-end часть

GUI, который можно представить как 4 страницы

  • Форма ввода арифметического выражения. Пользователь вводит арифметическое выражение и отправляет POST http-запрос с этим выражением на back-end. Примечание: Запросы должны быть идемпотентными. К запросам добавляется уникальный идентификатор. Если пользователь отправляет запрос с идентификатором, который уже отправлялся и был принят к обработке - ответ 200. Возможные варианты ответа:
    • 200. Выражение успешно принято, распаршено и принято к обработке
    • 400. Выражение невалидно
    • 500. Что-то не так на back-end. В качестве ответа нужно возвращать id принятого к выполнению выражения.
  • Страница со списком выражений в виде списка с выражениями. Каждая запись на странице содержит статус, выражение, дату его создания и дату завершения вычисления. Страница получает данные GET http-запросом с back-end-а
  • Страница со списком операций в виде пар: имя операции + время его выполнения (доступное для редактирования поле). Как уже оговаривалось в условии задачи, наши операции выполняются "как будто бы очень долго". Страница получает данные GET http-запросом с back-end-а. Пользователь может настроить время выполнения операции и сохранить изменения.
  • Страница со списком вычислительных возможностей. Страница получает данные GET http-запросом с сервера в виде пар: имя вычислительного ресурса + выполняемая на нём операция.

    Требования:
  • Оркестратор может перезапускаться без потери состояния. Все выражения храним в СУБД.
  • Оркестратор должен отслеживать задачи, которые выполняются слишком долго (вычислитель тоже может уйти со связи) и делать их повторно доступными для вычислений.

Back-end часть

Состоит из 2 элементов:

  • Сервер, который принимает арифметическое выражение, переводит его в набор последовательных задач и обеспечивает порядок их выполнения. Далее будем называть его оркестратором.
  • Вычислитель, который может получить от оркестратора задачу, выполнить его и вернуть серверу результат. Далее будем называть его агентом.
Оркестратор
Сервер, который имеет следующие endpoint-ы:

  • Добавление вычисления арифметического выражения.
  • Получение списка выражений со статусами.
  • Получение значения выражения по его идентификатору.
  • Получение списка доступных операций со временем их выполнения.
  • Получение задачи для выполнения.
  • Приём результата обработки данных.

Агент
Демон, который получает выражение для вычисления с сервера, вычисляет его и отправляет на сервер результат выражения. При старте демон запускает несколько горутин, каждая из которых выступает в роли независимого вычислителя. Количество горутин регулируется переменной среды.

В первую очередь необходимо разработать часть back-end.
Возможны отклонения от задания по согласованию.
Проект должен разворачиваться через Docker.
Возможно использование сторонних библиотек.
Срок 12.02.24

Читайте на 123ru.net

Другие проекты от 123ru.net



Архангельск

Наталью Круглову назначили на должность псковского городского судьи



Жизнь

Новые городские проекты в сотрудничестве с парком Юрия Лужкова готовит Фонд Юрия Лужкова






103news.com — быстрее, чем Я..., самые свежие и актуальные новости Вашего города — каждый день, каждый час с ежеминутным обновлением! Мгновенная публикация на языке оригинала, без модерации и без купюр в разделе Пользователи сайта 103news.com.

Как добавить свои новости в наши трансляции? Очень просто. Достаточно отправить заявку на наш электронный адрес mail@29ru.net с указанием адреса Вашей ленты новостей в формате RSS или подать заявку на включение Вашего сайта в наш каталог через форму. После модерации заявки в течении 24 часов Ваша лента новостей начнёт транслироваться в разделе Вашего города. Все новости в нашей ленте новостей отсортированы поминутно по времени публикации, которое указано напротив каждой новости справа также как и прямая ссылка на источник информации. Если у Вас есть интересные фото Вашего города или других населённых пунктов Вашего региона мы также готовы опубликовать их в разделе Вашего города в нашем каталоге региональных сайтов, который на сегодняшний день является самым большим региональным ресурсом, охватывающим все города не только России и Украины, но ещё и Белоруссии и Абхазии. Прислать фото можно здесь. Оперативно разместить свою новость в Вашем городе можно самостоятельно через форму.

Другие популярные новости дня сегодня


Новости 24/7 Все города России





Топ 10 новостей последнего часа




Новости России

Патриотическую акцию «Синий платочек» провели в Нижнем Новгороде в день прибытия «Поезда Победы»

Лучших медсестер наградили в онкодиспансере Балашихи

Брак или погода? Названы возможные причины самовозгорания китайского авто с водителем в салоне

В День Пушкина театр кукол «Ульгэр» в райцентре Бурятии: Россия, Культура, Дети


Москва

Новые городские проекты в сотрудничестве с парком Юрия Лужкова готовит Фонд Юрия Лужкова






Rss.plus
Moscow.media
Москва

Собянин рассказал, как можно посетить экскурсии в зданиях посольств разных стран



103news.comмеждународная интерактивная информационная сеть (ежеминутные новости с ежедневным интелектуальным архивом). Только у нас — все главные новости дня без политической цензуры. "103 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. 103news.com — облегчённая версия старейшего обозревателя новостей 123ru.net.

Мы не навязываем Вам своё видение, мы даём Вам объективный срез событий дня без цензуры и без купюр. Новости, какие они есть — онлайн (с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии).

103news.com — живые новости в прямом эфире!

В любую минуту Вы можете добавить свою новость мгновенно — здесь.

Музыкальные новости

Юрий Лоза

Певец Лоза заявил, что Влада Листьева убили из-за денег




Спорт в России и мире

Алексей Смирнов – актер, которого, надеюсь, еще не забыли

Гепарды – новые персонажи мультсериала «Команда МАТЧ»

«БЛИЦ», «БИТВА СТРАТЕГИЙ», «ДУАТЛОН» инсайд новых дисциплин в спортивном программировании

Благодаря акции МТС Банка реабилитационная помощь в России станет доступнее


WTA

Азаренко вышла в 1/16 финала турнира WTA-1000 в Риме



Новости Крыма на Sevpoisk.ru


Архангельск

Наталью Круглову назначили на должность псковского городского судьи



Частные объявления в Вашем городе, в Вашем регионе и в России