Skip to content

lebmax/appmetr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

appmetr

Задание:

Есть данные которые превышают объем оперативной памяти. Необходимо отсортировать.

На вход поступают пары (DateTime, Callable). Нужно реализовать систему, которая будет выполнять Callable для каждого пришедшего события в указанный DateTime, либо как можно скорее в случае если система перегружена и не успевает все выполнять (имеет беклог). Задачи должны выполняться в порядке согласно значению DateTime либо в порядке прихода события для равныхDateTime. События могут приходить в произвольном порядке и добавление новых пар (DateTime, Callable) может вызываться из разных потоков. Решения можно оформить в любом удобном виде: проект на гитхабе, архив с исходным кодом и т.п. Можно использовать любые встроенные средства Java7/Java8.

Комментарий.

Для реализации данной задачи больше подходит использование JMS (не входит в Java SE ), тем не мение упрощенная SE версия реализована (комментарий ниже). Сама очередь будет представлена как JMS очередь. JMS провайдер должен уметь сохранять сообщения и перепосылать их. JMS сообщение содержит два поля: DateTime времени желаемого выполнения и бинарный массив (byte[]) с сериализованным Callable Реализация требований:

  1. Обработка большого количества сообщений: Для хранения больших данных будет использовано хранилище JMS сообщений (персистентные сообщения).
  2. Выполнение в указанный DateTime или до до того: тут множество вариантов. Можно использовать приоритет сообщений, можно не забирать сообшения, по которым не настал срок выполнения (делается через XA)
  3. Если производительности одной машины не достаточно, то можно сделать кластерную очередь и распределить нагрузку на несколько машин.
  4. Задания, которые не удалось выполнить будут перенаправлены в DLQ для ручного разбора

В SE варианте реализован воркер, корорый берет задачи из очереди и выполняет их. не выполненые задания направляются в другую очередь.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages