Телеграм

Павел Сорокин | Java

@S0R0KlN Программирование и разработка
РКН: проверяем Не иноагент
О том как стать и быть Java разработчиком

Обучение по Java до оффера: https://sorokin.school

По рекламе и сотрудничеству: @pave1s или sorokincompany@rambler.ru

Статистика обновлена 12.11.2026 в 19:53 · 1 просмотр страницы · Хотите больше просмотров?

Подписчики9 075
Охват поста3 651 40% от подписчиков
ERR за месяц40,23%
ERR за 24 часа18,79%

Динамика за 30 дней

Рекламные публикации

Рекламных публикаций не найденоЗа последнее время мы не нашли на площадке ни одного рекламного поста.

Последние публикации

Все посты канала →
Павел Сорокин | Java tg9.1 тыс. подписчиков
Открыть пост ↗
Почему сеть ненадежная и когда она упадет, какие у нас есть варианты?

Потому что всё, что проходит по сети - может потеряться. Сеть ненадежная штука, она отваливается: происходят сбои, задержки, пакеты могут не доходить или идти долго

Вот типичная картина: клиент отправил запрос, на сервер, по HTTP. Казалось бы, обычная штука

1️⃣ Сценарий первый - запрос вообще не дошёл. Клиент повис, подождал, устал и отвалился

2️⃣ Сценарий второй - запрос дошёл, сервер его даже обработал, но ответ не вернулся. Потому что где-то между твоим сервером и клиентом случилось маленькое сетевое "пошёл ты нахуй" обрыв сети

3️⃣ Сценарий третий - запрос обработан, ответ отправлен, но клиент уже ушёл, потому что превышен timeout ожидания

Что делает клиент? Он отправляет запрос снова. И это логично. Если у нас действительно надежная система, то нам нельзя терять сообщения и нужно их переотправить. Вдруг ничего не произошло и сервер не обработал? А вот тут начинается боль 😐

Собственно, здесь и появляется идемпотентность. Клиент присылает вместе с запросом уникальный requestId, а сервер запоминает, что такой запрос уже обрабатывался. Если он прилетает повторно, мы не списываем деньги ещё раз, а возвращаем результат первой попытки

❗️ Но и просто навесить retry на каждый вызов недостаточно, здесь уже рассказывал почему, если сеть моргнула на секунду - повтор поможет. Если соседний сервис лежит уже десять минут, тысяча клиентов с тремя ретраями превратит тысячу запросов в четыре тысячи и поможет сервису умереть чуть увереннее 💀

Поэтому нормальная работа с сетью - это не один волшебный паттерн, а несколько уровней защиты:

📌 timeout, чтобы не ждать ответ бесконечно

📌 ограниченный retry с backoff и jitter

📌 идемпотентность, чтобы повтор не создавал второй эффект (писал тут)

📌 Circuit Breaker, чтобы перестать ходить в сервис, которому уже плохо

📌 логи, метрики и tracing, чтобы узнать о проблеме раньше звонка клиента в пятницу вечером

А если связь пропала между целыми частями системы, можно временно перестать принимать операции и сохранить строгую консистентность или же продолжить работать, разрешить данным ненадолго разъехаться и синхронизировать их позже

Это и есть та часть CAP-теоремы, которую важно понимать на практике: когда между узлами случился network partition, нельзя одновременно гарантировать и всегда актуальные данные, и успешный ответ на каждый запрос. Чем-то придётся пожертвовать - всегда 🔫

Так что паттерны из прошлых постов придумали не ради красивых схем и вопросов на собеседовании. Они появились из одной довольно неприятной особенности распределённых систем: они распределенные

Мораль такова

Сеть - это не ласковый и приветливый мир, здесь убивают 🔫 падают запросы


Дизайн, в котором пакеты всегда доходят, красив только в теории, в реальности такого не случается. При работе с сетью надо быть предельно аккуратным и продумывать проблемы, которые могут возникнуть. Ваша система должна уметь решать эти проблемы, чтобы быть надежной

#хардовая_польза

П.с. Первую и вторую части про паттерны микросервисов оставлю для чтения здесь и здесь 👀
👁 711 ❤ 7👍 5🔥 4 💬 1 ↻ 11 сегодня в 15:21
Павел Сорокин | Java tg9.1 тыс. подписчиков
Открыть пост ↗
Делай то, что важно, что неважно - не делай

Недавно на стриме спросили хороший вопрос, хочу немного раскрыть тему

Мы все хотим успевать больше: работать, делать свои проекты, учиться, заниматься здоровьем, проводить время с близкими, да и ещё куча всего интересного, что тоже хотелось бы попробовать

Кажется, надо нормально организовать свой тайм-менеджмент, и тогда всё точно получится вместить в жизнь. Но ты живой человек, у тебя ограничены время, силы, внимание. Можно хотеть преуспеть хоть в десяти направлениях одновременно, только ресурсов у тебя не хватит

Количество вещей, которые ты можешь сделать хорошо очень маленькое - нужно грамотно выбирать куда ты тратишь время

В какой-то момент придётся выбирать и понять, что для тебя вообще важно в жизни?

Хочешь через пять лет быть там же, где сейчас, и делать то же самое или тебе важно что-то поменять?


И это, блин, действительно сложно сделать, есть огромное количество вещей, которые нравятся и прикольно было бы их сделать. Но даже от интересного придётся отказываться, если на то, что для тебя важнее, уже не остаётся ресурсов

Постоянно отсекать неважное: не читать телегу просто по привычке, закрыть рилсы, не браться за ещё одну вроде классную затею

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

Поэтому сначала пойми, что тебе дорого: что хочешь сохранить, что изменить, в каких нескольких вещах преуспеть. И уже под это выделять свои ограниченные ресурсы

А потом каждый день продолжать делать этот выбор - один раз определить приоритеты недостаточно. Каждый день снова появляется что-то интересное, срочное, приятное, и нужно постоянно этому противостоять. Противостоять желанию начать что-то новое пока ты еще не закончил старый проект, почитать это, посмотреть то-то...

Жертвовать чем-то всё равно придётся, и лучше жертвовать в пользу действительно важных вещей, отсекать "приятное и полезное", но неважное лично для тебя

Успеть всё не получится, а выбрать, на что потратить свою жизнь, хочешь ты или нет, придётся
👁 1.7 тыс. ❤ 30💯 8👍 4 💬 4 ↻ 9 10 ноября
Павел Сорокин | Java tg9.1 тыс. подписчиков
Открыть пост ↗
Заканчивается большая глава Sorokin School...

Уже через 2 дня я закрываю продажи и после этого попасть на последний поток Java Backend уже не получится

С этой программой мы прошли очень большой путь, и дальше хочу больше заниматься глубокими отдельными темами - архитектурой, систем-дизайном и другими инженерными штуками, в которые самому интересно закапываться

А этот поток хочу провести так, чтобы самому было чем гордиться 😎

Поэтому в нём помимо основной программы с большим проектом EventManager будет 4 новых блока с моими практическими воркшопами:

🟣 AI и кодинг-агенты - постановка задач, контекст, MCP, скиллы и проверка изменений. Чтобы понимать, что агент натворил в проекте и можно ли это вообще оставлять

🟣 Микросервисы и Kafka - границы сервисов, события, повторы и сбои, что делать, когда на красивой схеме всё работало, а в реальности соседний сервис лёг

🟣 System Design - требования, нагрузка, выбор хранилищ и способы взаимодействия. Будем разбираться, почему система устроена именно так и какие у решения ограничения

🟣 CI/CD и Kubernetes - как код проходит сборку, тесты и попадает в работающее окружение. Потому что на «у меня локально запустилось» разработка обычно не заканчивается 🙃

На обоих тарифах - доступ к материалам Java Backend на год, общий чат и групповые воркшопы, а с ментором дополнительно - 5 месяцев поддержки, ревью домашних работ и 5 личных встреч: диагностика, 2 защиты проекта, технический mock и System Design собеседование

И напоследок, поделюсь тем, о чем не говорил публично. Я собрал прям жирный-жир, если залетаешь до старта потока, то есть до 9 ноября, получаешь ещё 3 курса в подарок 🔥

🎁 Livecoding - алгоритмы, backend code review и SQL. Как решить задачу на собесе, проверить свой код и объяснить ход мысли, пока на тебя смотрит интервьюер)))

🎁 Многопоточность - потоки, память JVM, блокировки, пулы, CompletableFuture и virtual threads. С практикой, чтобы разобраться в причинах гонок и зависаний

🎁 Курс по трудоустройству - резюме, самопрезентация, технические и HR-собеседования, архитектура и испытательный срок: как готовиться и двигаться от учебного проекта к поиску работы

В итоге на Java Backend ты собираешь и разбираешь собственный backend, а дополнительные курсы помогают глубже пройти многопоточность, потренировать собеседования и подготовиться к выходу на рынок

Напиши Артёму, менеджеру школы - он поможет оформить участие и расскажет про доступные способы оплаты ⬅️

*Бонусы выдаются после полной оплаты обучения
👁 2.6 тыс. ❤ 9👍 6🔥 6 💬 2 ↻ 6 7 ноября