Щоразу, коли ваша система зростає, трафік збільшується, все більше і більше користувачів використовують ваші продукти, сервери починають реагувати повільніше, простої змушують ваш бізнес страждати, тоді ви починаєте думати про масштабування.
Існує дві основні стратегії масштабування – вертикальна та горизонтальна.
Вертикальне масштабування має на меті збільшити потужність системи шляхом додавання, як правило, більшого процесора та оперативної пам’яті до ваших серверів.
Навпаки, горизонтальне масштабування фокусується на дублюванні (або клонуванні) ваших серверів у пулі ресурсів.
Більше про це:
Вертикальне масштабування є найкращим варіантом для системи з низьким трафіком, оскільки це найдоступніший підхід для обробки зростання без додаткової складності. Вам не потрібно піклуватися про розгортання стратегій для групи ресурсів, еластичність пулу ресурсів, відсутність стану вашого сервера, розподілений кеш і так далі.
Однак вертикальне масштабування має серйозні недоліки
Горизонтальне масштабування усуває ці проблеми шляхом клонування ваших серверів програм і вбудовування такого компонента, як балансир навантаження .
Балансувальник навантаження розподіляє трафік на ваших серверах за допомогою певних алгоритмів, таких як:
Тим не менш, він має кілька недоліків:
Щоб два пристрої в Інтернеті могли спілкуватися один з одним, базові системи повинні дотримуватися певних протоколів. Усі чули про модель OSI, яка описує сім рівнів, які використовують комп’ютерні системи для зв’язку через мережу. Незважаючи на те, що сучасний Інтернет базується на простішій моделі стеку протоколів TCP/IP, модель OSI широко використовується, оскільки вона допомагає візуалізувати та повідомити, як працюють мережі, а також допомагає ізолювати та вирішувати проблеми з мережею.
Більшість галузевих рішень з балансування навантаження використовують терміни L4 і L7, де L4 відноситься до транспортного рівня в моделі OSI, а L7 відноситься до прикладного рівня.
Балансувальник навантаження L4 все ще є L2/L3, оскільки він використовує дані з нижніх рівнів, такі як IP-адреса та номер порту.
Це більш безпечно та продуктивніше, оскільки вміст даних не береться до прийняття рішень щодо маршрутизації
Те саме TCP-з’єднання підтримується між клієнтом і сервером, що допомагає запобігти перевищенню ліміту доступних TCP-з’єднань на балансирі навантаження
З іншого боку, балансир навантаження L7 працює на прикладному рівні в моделі OSI
Розумні рішення можна приймати на основі URL-шляху, заголовків, вмісту
Кешування
Балансувальник навантаження є життєво важливим компонентом, коли горизонтальне масштабування застосовується для обробки систем із високим трафіком. Існує два основних типи балансувальників навантаження L4 і L7.
Балансувальник навантаження L4 набагато безпечніший і ефективніший через обмеження прийняття розумних рішень
Балансувальник навантаження L7 працює таким чином, щоб забезпечити інтелектуальні рішення щодо маршрутизації завдяки вартості ефективності та безпеки
Вибір відповідного типу залежить від вимог до системи, і його слід ретельно обдумати, дотримуючись розумного балансу між застосуванням принципів безпеки та усуненням вузьких місць продуктивності.
Також опубліковано тут.