EinfĂĽhrung
Hallo!
In diesem Artikel werde ich meine Erfahrungen beim Aufbau einer Microservice-Architektur fĂĽr ein Projekt mit neuronalen Netzen teilen.
Lassen Sie uns über die Architekturanforderungen sprechen, verschiedene Strukturdiagramme betrachten, jede der Komponenten der fertigen Architektur analysieren und die technischen Metriken der Lösung bewerten.
Viel SpaĂź beim Lesen!
Ein paar Worte zum Problem und seiner Lösung
– .
, , . , , .
, .
, :
MTCNN. PyTorch, backbone ResNet34 – « / CPU»
ML , , .
ML
– -, . :
- – ,
- — Bottleneck
- - —
- () ,
- , ,
, .
, , Telegram API.
, , .
, Single Responsibility .
«attrai-telegram-bot»
Telegram API. 2 – . .
:
- , :
- ,
- docker volume
- “to_estimate” , , , , volume
- – , . – , .
, , celery worker, «after_estimate», , .
“after_estimate”:
- – , –
- ,
«attrai-estimator»
celery worker , . – .
“to_estimate”:
- :
- (MTCNN)
- ( ResNet34)
-
- bounding boxes
- ()
- “after_estimate”, “attrai-telegram-bot”
Graylog (+ mongoDB + Elasticsearch)
Graylog — . , .
, ELK , Python. , Graylog, GELFTCPHandler graypy root logger handlers python-.
, , ELK , , Graylog. , – Kibana - Graylog.
RabbitMQ
RabbitMQ — AMQP.
Redis
Redis — NoSQL , « — »
python- , - .
, Redis hashmap «telegram_user_id => », , , DoS-.
- Telegram
- «attrai-telegram-bot» Telegram API
- «to_estimate»
- «attrai-estimator» «to_estimate», «after_estimate»
- «attrai-telegram-bot», «after_estimate»,
DevOps
, , — DevOps
Docker Swarm
Docker Swarm - , Docker Engine .
«», 2 – worker manager. (), , . .
leader manager worker
– 1 , leader manager worker. , .
, , production-, , , , ( , - - , ).
Docker Stack
«» ( docker services) docker stack
docker-compose , deploy .
, ( N N , - , PyTorch`, )
attrai_estimator:
image: 'erqups/attrai_estimator:1.2'
deploy:
replicas: 4
resources:
limits:
cpus: '4'
restart_policy:
condition: on-failure
…
, Redis, RabbitMQ Graylog — stateful , «attrai-estimator»,
— Kubernetes?
, Kubernetes – , Docker Swarm, user friendly , .
VDS :
- CPU: 4 Intel® Xeon® Gold 5120 CPU @ 2.20GHz
- RAM: 8 GB
- SSD: 160 GB
, , , .
, , (, ), . CPU RAM .
, ,
, , — .
, , CPU, , .
Ich werde hinzufügen, dass der Artikel anfangs größer war, aber um kein Longread zu veröffentlichen, habe ich beschlossen, einige Punkte in diesem Artikel wegzulassen - wir werden in den nächsten Veröffentlichungen darauf zurückkommen.
Sie können den Bot in Telegram - @AttraiBot stecken, es wird mindestens bis Ende Herbst 2020 funktionieren. Ich möchte Sie daran erinnern, dass keine Benutzerdaten gespeichert sind - weder die Originalbilder noch die Ergebnisse der Evaluierungspipeline -, dass nach der Verarbeitung alles abgerissen wird.