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

Дежавю для Вашингтона: российские корабли прибыли на Кубу

Семшов назвал главного фаворита Евро-2024

"КП": певица Лолита пришла на премию в изумруде за миллион долларов

Виновата жара: М-5 "Урал" и другие трассы перекроют для южноуральцев



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

Новости от TheMoneytizer

Разработать распределенный вычислитель арифметических выражений на 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


Новости 24/7 DirectAdvert - доход для вашего сайта



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



Smi24.net — ежеминутные новости с ежедневным архивом. Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net. Мы не навязываем Вам своё видение, мы даём Вам срез событий дня без цензуры и без купюр. Новости, какие они есть —онлайн с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии. Smi24.net — живые новости в живом эфире! Быстрый поиск от Smi24.net — это не только возможность первым узнать, но и преимущество сообщить срочные новости мгновенно на любом языке мира и быть услышанным тут же. В любую минуту Вы можете добавить свою новость - здесь.




Новости от наших партнёров в Вашем городе

Ria.city

В Ульяновкой области врач заставляет кровь «разговаривать»

Путин вручил орден «За доблестный труд» коллективу Пироговского медцентра

Актриса Ирина Горбачева заявила, что прекратила общение с Машковой после СВО

Художественный фестиваль «Арт-пристань» пройдет в парке «Кузьминки» в Москве

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

РБК: в Москве из-за случаев ботулизма приостановили продажу некоторых продуктов

Владимир Путин, Дмитрий Медведев, Анатолий Голод: признание Нато надо применить!

РБК: в Москве остановили продажу ряда продуктов после случаев ботулизма

Владимир Путин сенсационно получил ключевое признание от Н А Т О.

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

Бастрыкин потребовал доклад о расследовании дела об отравлении людей в Москве

Путин вручил орден «За доблестный труд» коллективу Пироговского медцентра

Актриса Ирина Горбачева заявила, что прекратила общение с Машковой после СВО

В Ульяновкой области врач заставляет кровь «разговаривать»

Экология в России и мире

Smena SS-2024

Лучшие образы на лето, от которых захватит дух

Массовыми патриотическими акциями отметили День России на заводах АО "Желдорреммаш"

Где недорого отдохнуть в июле? Россиянам раскрыли все карты по турам за рубеж и по России

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

«Наконец-то всё началось». Борис Беккер побывал на матче открытия Евро-2024

Теннисистка Самсонова вышла в финал турнира в Хертогенбосхе

Рублёв и еще два российских теннисиста не сыграют на Олимпиаде в Париже

Теннисисты Рублев, Хачанов и Самсонова не сыграют на Олимпиаде-2024

Moscow.media

В Коми ввели штрафы за «склонение к абортам»

Женщина провалилась в яму в центре Саратова. Начата проверка

Рубена Варданяна в бакинской тюрьме заставляли долго стоять, его лишали воды, ему не разрешали мыться и менять белье и одежду

«ЯРКО» провела развлекательную программу на фестивале «Крутая песочница»











Топ новостей на этот час

Rss.plus






МО России: группировка «Юг» уничтожила танк Leopard

Виновата жара: М-5 "Урал" и другие трассы перекроют для южноуральцев

Дежавю для Вашингтона: российские корабли прибыли на Кубу

СК: Сотрудники складов пытались уничтожить продукцию, из-за которой в Москве отравились люди