Ответ
Слабая связанность (Low Coupling) — это принцип проектирования систем, при котором компоненты (в данном случае микросервисы) минимально зависят друг от друга. Каждый сервис является автономным и знает как можно меньше о внутренней реализации других сервисов.
В микросервисной архитектуре это ключевой принцип, который противопоставляется сильной связанности (High Coupling), характерной для монолитов, где изменение одного компонента часто требует изменений во многих других.
Преимущества слабой связанности:
- Независимое развертывание: Сервисы можно обновлять и развертывать независимо друг от друга.
- Отказоустойчивость: Сбой в одном сервисе с меньшей вероятностью каскадно обрушит всю систему.
- Масштабируемость: Можно масштабировать отдельные сервисы в зависимости от нагрузки, а не всю систему целиком.
- Технологическая свобода: Разные сервисы могут быть написаны на разных языках и использовать разные технологии.
Способы достижения слабой связанности:
Асинхронное взаимодействие через брокеры сообщений (например, RabbitMQ, Kafka):
- Сервис-продюсер отправляет событие (например,
OrderCreated
) в очередь и не знает, кто его получит. Сервисы-консьюмеры подписываются на интересующие их события. Это самый эффективный способ снижения связанности.
- Сервис-продюсер отправляет событие (например,
Взаимодействие через API (например, REST, gRPC):
- Сервисы общаются через четко определенные контракты (API). Пока контракт не меняется, внутренняя реализация сервиса может быть любой. Это более сильная форма связанности, чем асинхронное взаимодействие, так как требует доступности вызываемого сервиса в момент вызова.
Паттерн "Database per Service":
- У каждого микросервиса своя собственная база данных. Это исключает прямую зависимость на уровне данных.
Использование API Gateway:
- Скрывает внутреннюю структуру сервисов от внешних клиентов, предоставляя единую точку входа.