Это попытка реализовать car-sharing приложение, которое позволяет экономить на путешествиях, присоединяясь к поездкам других людей или создавая поездки, к которым могут присоединиться. Была поставлена задача разработать приложение, которое позволяет создать пользователя, от его лица создать поездку, сделать поиск по поездкам с некоторыми параметрами, присоединиться к выбранной. Поиск должен работать быстро, создание пользователей и поездок, присоединение к поездкам может быть более медленным. Весь функционал приложения можно получить по /help в телеграм боте.
Проект состоит из четырех модулей.
Это серверная часть, которая позволяет создавать пользователей и поездки, хранить всех созданных пользоваетелей и их поездки и добавляться в поездки. С некоторой периодичностью обновления поездок шлются на поисковый сервер searchservice.
Пакет com.alice.dbclasses предназначен для работы с поездками и пользователями и хранением их базах данных,
как серверной, так и поисковой.
Пакет com.alice.kafkaclasses – для пересылки обновленных поездок с помощью кафки на поисковый сервер.
Пакет com.alice.rest – для работы с сервером по сети.
Пакет com.alice.services содержит в себе сервисы сервера.
Тесты в данном модуле уже неактуальны.
Модуль, который предоставляет необходимое апи для других модулей.
Тестовый модуль, который работает в разных режимах: тестирует корректность работы серверной части, создавая какое-то количество пользователей и поездок и добавляясь в них; симулирует нагрузку на сервер; телеграм-бот, с помощью которого можно работать напрямую с приложением.
Поисковый сервер, который позволяет искать актуальные (то есть непросроченные) поездки по временным рамкам.
В нем есть кэш, который хранит в себе поездки для следующих 10 дней (было решено из-за того,
что предполагается, что клиенты будут искать чаще поездки, которые должны состояться скоро).
Сервер позволяет искать по заданным датам, отдавая список id поездок.
Используется hibernate для удобства поиска по параметрам поездки.
Пакет com.test.cache содержит кэш, информация в котором обновляется при обновлении базы данных.
Также обновляется автоматически в полночь.
Пакет com.test.db позволяет работать с базой данных, которая содержит в себе поездки в виде, удобном для поиска.
Пакет com.test.dbclasses содержит классы базы данных.
Пакет com.test.kafka позволяет получать обновленные поездки.
SearchService ищет поездки с заданными параметрами.