Pull to refresh
4K+
3
1
Subscribers
Send message

Практическое построение сервисов на Go под реальный трафик

Level of difficultyEasy
Reading time5 min
Reach and readers11K

Оптимизация кода сервисов на Go под реальную нагрузку

Когда сервис на Go начинает «тормозить» под реальной нагрузкой, проблема почти всегда не в самом языке и даже не в алгоритмах. Чаще всего узкие места лежат на уровне работы с памятью, сериализации данных и неочевидных накладных расходов рантайма. Если сервис упирается в сеть, базу данных или внешние API — оптимизация кода даёт ограниченный эффект. Но в CPU-bound сценариях (парсинг JSON, агрегации, обработка данных) каждая лишняя аллокация и копирование начинают стоить дорого.

Ключевая особенность Go — автоматическое управление памятью через garbage collector. Это удобно, но под нагрузкой GC становится заметным фактором:

Читать далее

Почему retry и timeout могут ухудшить отказоустойчивость системы

Reading time17 min
Reach and readers8.7K

Retry и timeout кажутся базовыми механизмами отказоустойчивости.
Не прошел запрос — повторим. Ответ не пришел за 500 мс — оборвем. Кажется, что этого достаточно, чтобы система стала надежнее.

На практике в распределенных системах retry и timeout могут работать наоборот. Когда сервис уже деградирует, повторные запросы не сглаживают проблему, а усиливают ее. Клиенты начинают ретраить одновременно, нагрузка растет, и сбой распространяется дальше по цепочке зависимостей.

В этой статье разберем, как retry создает каскадные отказы, почему таймауты могут ухудшить ситуацию и какие механизмы — backoff, jitter и circuit breaker — помогают этого избежать

Читать далее

Information

Rating
Does not participate
Works in
Registered
Activity