Продуктивність як атрибут якості: патерни координації
Патерни координації допомагають ефективно організувати взаємодію між компонентами системи, оптимізувати використання ресурсів і підвищити продуктивність.
Основні стратегії планування:
- Service Mesh — це патерн, що часто використовується в мікросервісній архітектурі. Його головна особливість — sidecar-проксі, який супроводжує кожен мікросервіс.
Переваги: Відокремлення бізнес-логіки від допоміжних функцій. Зниження складності коду мікросервісів. Локалізація спорідненого функціоналу, що зменшує комунікаційні затримки.
Недоліки: Додаткове навантаження на систему через виконання sidecar-проксі. Ускладнення архітектури через множинність функцій, що можуть не знадобитися для всіх запитів.
- Load Balancer — це проміжний компонент, що розподіляє навантаження між серверами чи ресурсами для уникнення перевантаження.
Переваги: Часткові падіння серверів непомітні для користувачів. Полегшує масштабування, дозволяючи додавати більше серверів без помітних затримок для користувача.
Недоліки: Може стати точкою відмови, якщо сам балансувальник не реплікується. Висока швидкість роботи алгоритму планування є критично важливою для збереження продуктивності.
- Throttling — це патерн, що обмежує кількість одночасних запитів до сервісу, захищаючи його від перевантаження.
Переваги: Плавне управління піковим навантаженням.
Недоліки: Алгоритм має бути швидким, інакше перевантаження може статись через саму систему обмеження навантаження. Необхідність великих буферів у разі постійного перевищення потужності системи.
- Map-Reduc — це патерн для обробки великих обсягів даних, що працює за принципом розділення задачі на декілька етапів у розподіленій системі.
Переваги: Дозволяє ефективно обробляти масиви даних за допомогою паралелізму. Підвищує відмовостійкість завдяки незалежності кожного вузла обробки.
Недоліки: Складно реалізувати, якщо дані не можна легко розбити на подібні за розміром сегменти.