Skip to content

Задание 3 #5

Description

@vbelogrudov

Оптимизация производительности Go приложения: многопоточность, конкурентный доступ, кэширование.

Цель

Увеличить скорость работы приложения из задания 2 путем параллелизации запросов и кэширования. Приложение можно прерывать, при старте оно должно продолжить со следующего необработанного комикса. Какое оптимальное количество горутин необходимо? Какие способы “транзакционности” можно придумать?

Количество горутин считывается из конфигурационного файла.

Критерии приемки

  1. Флаги -n и -o не нужны. -с флаг для нахождения конфига, единственный флаг приложения. make build создает xkcd приложение.

  2. Прерывание приложения должно оставлять структуру в database.json в консистентном виде, то есть если успели прочитать 10 комиксов, они должны лежать в database.json в корректном json формате. Пользователь в любой момент может безопасно прервать программу.

  3. Если уже существует database.json, программа должна продолжить с пропущенных комиксов (даже пропуски в середине), принимая во внимание уже считанные.

  4. В конфигурационном файле parallel указывает на количество горутин параллельных запросов к сайту xkcd.com, с комментарием - почему именно такое число.

  5. Имплементация нахождения последнего комикса, считаем, что несуществует страница xkcd.com/info.0.json

  6. (со звездочкой) Корректно отрабатываем сценарий “отключения света/kill -9” (сохраняем обработанные комиксы в БД), а не только ctrl-c

Материалы для ознакомления

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions