Implementation Design (Under construction)
Инициализация и интерфейсы
Библиотек внедрения зависимостей (DI)
В качестве основной библиотеки DI используется (dagger)[https://google.github.io/dagger/] от Google. Дополнительно используется (Spring)[https://spring.io/] с его реализацией DI.
Структура компонентов
Для простоты тестирования все компоненеты каждого под-проекта реализуются в ввиде интерфейса IXXXManager/Builder/SomeMaker и реализации в виде XXXManager/Builder/SomeMakerImpl, который создаётся автоматически через конструктор по-умолчанию с помощью DI.
Инициализация компонентов
Инициализация компонентов по возможности выполняется через пустой метод initialize в DI. при наличии сложной зависимости метод initialize выносится в интерфейс и вызывается после создания объекта. При этом при неуспешной инициализации (в большинстве случае связанной с недоступностью сетевых ресурсов) никаких исключений не выбрасывается, а ставится флаг “initialized=false” и выполнятеся соотвествующая проверка при вызове опубликованного метода с последующей инициализацией. Исключение при инициализации стоит бростаь лишь при непоправимых ошибках (например неверная конфигурация).
Table of content:
- Home
- Prerequisites
- Developement stand provisioning
- Components
- Crawler (Spring Boot, Java)
- Message Broker (Kafka)
- Distributed file storage (Hadoop’s HDFS)
- Data warehouse (Apache Hive)
- Distributed business logic cluster (Akka, Scala)
- Distributed data processing cluster (Spark, Scala)
- Indexing/Search engine (Elasticsearch)
- REST server (Lagom, Scala)
- Service coordination (Zookeeper)
- Time-series database (monitoring data) (InfluxDB)
- Metrics collector (Telegraf)
- Monitoring visualization service (Grafana)
- Reverse proxy/load-balancer (nginx)
- Monitoring Links
- Development