Добавить новость

Около 600 россиян застряли на сломавшемся круизном лайнере в порту Японии

Ребенок убил мать топором и сдался подмосковной полиции

ИТ-компании Москвы увеличили оборот за девять месяцев 2024 года

Российская лаборатория Neiry первая в мире подключила мозг крысы к ИИ





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

Новости от 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

Борьба за новую модель глобализации теперь затронет всех

Символ холодной войны: история создания и падения Берлинской стены

"Женское дело. Лаборатория успеха". В гостях Дарья Геращенко

«На благо»: президент Финляндии заявил, что отношения с Россией наладятся

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

TSMC и Samsung заявили о туманном будущем своих будущих заводов в США из-за Трампа

Соколова по указу Путина наградили орденом Александра Невского

Meta-funded regulator for AI disinformation on Meta's platform comes under fire: 'You are not any sort of check and balance, you are merely a bit of PR spin'

Первый российский форум «Культура. Традиции. Наследие» прошел в Подмосковье

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

«На благо»: президент Финляндии заявил, что отношения с Россией наладятся

Символ холодной войны: история создания и падения Берлинской стены

Мужчина избил и затоптал до смерти знакомого в центре Москвы

Новинки народного оборонно-промышленного комплекса представили в Новосибирской области

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

«585*ЗОЛОТОЙ» рассказала, какие обручальные кольца будут выбирать пары в следующем году

«Союзник» России Азербайджан не прошёл «тест на дружбу»: в Баку на 13 лет осудили Назакет Мамедову, рассказавшую правду об СВО

Зоопарк отеля приглашает на день рождения!

«До потолка прыгала!»: слушатель «Авторадио» выиграл автомобиль для любимой

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

Русские ракетки развели по углам // Даниил Медведев и Андрей Рублев попали в разные группы на Nitto ATP Finals

Кудерметова в паре с Чжань Хаоцин вышли в полуфинал итогового турнира WTA

В России обесценили матч Елены Рыбакиной с первой ракеткой мира

Кудерметова и Чжань Хаоцин проиграли в полуфинале Итогового турнира WTA в парах

Moscow.media

Без помех и потери сигнала: первые беспроводные игровые клавиатуры

Терминал «Деловых Линий» в Барнауле переехал на новый адрес

Радуга. Начало июля

Mozilla Foundation уволила 30% сотрудников на фоне большого штрафа в РФ











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

Rss.plus






Мужчина избил и затоптал до смерти знакомого в центре Москвы

Борьба за новую модель глобализации теперь затронет всех

«На благо»: президент Финляндии заявил, что отношения с Россией наладятся

Новинки народного оборонно-промышленного комплекса представили в Новосибирской области