Ответ
Микросервисы взаимодействуют через два основных паттерна: синхронное и асинхронное общение.
1. Синхронное взаимодействие (HTTP/REST, gRPC)
Используется, когда требуется немедленный ответ.
- REST/HTTP API — стандартный подход, основанный на JSON/XML. Простота, но больше накладных расходов.
import requests # Запрос к сервису пользователей response = requests.get('http://user-service/api/v1/users/123', timeout=5) user_data = response.json() - gRPC — высокопроизводительный RPC-фреймворк от Google, использует бинарный протокол Protocol Buffers.
// Определение сервиса в .proto-файле service ProductService { rpc GetProduct (ProductId) returns (Product); }
2. Асинхронное взаимодействие (Message Brokers)
Используется для декаплингования сервисов и повышения отказоустойчивости.
- Брокеры сообщений (RabbitMQ, Apache Kafka): Сервис-отправитель публикует событие в очередь/топик, не ожидая немедленной обработки.
from kafka import KafkaProducer # Сервис заказов публикует событие "заказ создан" producer = KafkaProducer(bootstrap_servers='kafka-broker:9092') producer.send('order-created', key=b'order_456', value=order_data_json)
Выбор технологии зависит от требований к задержке, надежности доставки, порядку сообщений и сложности инфраструктуры.