Ответ
Микросервисы можно связать несколькими способами, в зависимости от требований к производительности, согласованности и сложности:
- HTTP/REST API – простой и распространённый способ.
Пример на Python (Flask):
@app.route('/order', methods=['POST'])
def create_order():
response = requests.post('http://payment-service/pay', json=request.json)
return response.json()
- Асинхронная коммуникация через брокеры сообщений (Kafka, RabbitMQ).
Пример подписки на событие:
def handle_payment_event(message):
print(f"Payment processed: {message}")
channel.basic_consume(queue='payments', on_message_callback=handle_payment_event)
-
gRPC – для высоконагруженных систем с strict-контрактами.
-
GraphQL – если нужна гибкость в запросах данных.
Выбор зависит от:
- Скорости (gRPC > REST)
- Надёжности (брокеры гарантируют доставку)
- Сложности (REST проще для старта)
Для resilience важно добавить retry, circuit breakers (например, через Hystrix).