Project X - сервис, позволяющий бесперебойно обмениваться цитатами между двумя датацентрами.
Для корректной работы приложения должны быть установлены, настроены и запущены:
- MongoDB
- Apache Kafka
Для настройки MongoDB необходимо внести изменения в файл application.yml в секцию spring.data.mongodb. Все документы указанной коллекции базы данных должны содержать поля text и author.
Для работы приложения необходимо, чтобы на сервере Kafka были созданы следующие топики: quote-local, quote-replica, quote-reserve (названия можно изменить в application.yml). Для достижения полной синхронизации и отказоустойчивости при передаче цитат между датацентрами, приложение использует два kafka-consumer и один kafka-producer. Продюссер нужен для записи в топики quote-local и quote-replica, находящиеся на сервере kafka местного датацентра. Один консьюмер нужен для чтения из топика quote-local местного датацентра, другой для чтения топика quote-replica удалённого датацентра. Настройки можно найти в application.yml.
Для достижения отказоустойчивости в случае неполадки одного датацентра используется переадресация на другой датацентр. Для настройки переадресации необходимо внести изменения в файл application.yml в поле server.remote-host.
В качестве сборщика проекта используется Maven. Для сборки и запуска проекта необходимо перейти в папку Server. Выполнить:
mvn clean package
для сборки проекта. Для запуска: java -jar target/project-x-spring-server-1.0-SNAPSHOT.jar
Цитата полученная с сервера, отправляется в топик quote-local, откуда она кладется в базу данных и отпраляется в топик quote-replica.
При ошибке записи в базу данных, цитата отправляется в топик quote-reserve, где ожидает успешной записи в базу данных. При неудачной записи в базу данных цитаты, полученной из топика quote-replica другого датацентра, она будет отмечена как непрочитанная.
Если неполадки Kafka или MongoDB выявляются во время обработки запроса, то он переадресуется на сервер друго датацентра.