Java Portal | Программирование
12K subscribers
1.45K photos
111 videos
44 files
1.48K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Архитектура Docker

Если вы только начинаете работать с Docker, эта схема может показаться сложной.

Но на самом деле всё устроено довольно просто.

Вы вводите команду, например:

docker run nginx


Docker Client отправляет эту команду Docker Daemon, который выполняет всю основную работу в фоновом режиме.

Если нужного образа (Image) еще нет на вашем компьютере, Docker загружает его из Docker Registry, например из Docker Hub.

После того как образ становится доступен локально, Docker создает контейнер (Container) — запущенный экземпляр этого образа.

Представьте это так:

- Image (образ) = архитектурный проект дома.
- Container (контейнер) = настоящий дом, построенный по этому проекту.

Именно так выглядит базовый поток работы Docker:

Вы


Docker Client


Docker Daemon


Docker Image


Docker Container


Когда вы поймете эту последовательность, устройство Docker станет гораздо проще и понятнее.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
PostgreSQL 19 представляет запросы в графовом стиле.

Вместо того чтобы вручную связывать таблицу за таблицей через JOIN
, теперь можно описать путь по данным:
клиент → купил → товар ← купил ← похожий клиент → подписан на → бренд

Такой подход полезен для:
• рекомендательных систем;
• управления доступом;
• обнаружения мошенничества;
• графов знаний (Knowledge Graphs);
• предоставления контекста для AI.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
> 💡 Java: Тестируйте граничные случаи: null, пустые коллекции и предельные значения — именно там чаще всего скрываются баги.

Одних тестов счастливого пути недостаточно — они не помогут выявить NullPointerException при отсутствии входных данных.

Пустые списки и коллекции с одним элементом нередко ведут себя иначе, чем коллекции с «обычными» данными.

Явные тесты для null, пустых коллекций, а также минимальных и максимальных значений документируют ожидаемое поведение.

#Testing

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
image_2026-07-12_07-37-40.png
1.6 MB
Rate Limiting ≠ Throttling ≠ Backpressure

Эти три термина часто используют как взаимозаменяемые…

Но на самом деле они решают совершенно разные задачи масштабирования.

Вот самый простой способ их запомнить:

- Rate Limiting → ограничивает количество запросов, которые клиент может отправить.
- Throttling → ограничивает скорость обработки запросов системой, когда она находится под высокой нагрузкой.
- Backpressure → позволяет медленному потребителю сигнализировать быстрому производителю, чтобы тот снизил скорость и не перегружал систему.

Простая шпаргалка

- Rate Limiting = ограничение количества запросов.
- Throttling = замедление обработки.
- Backpressure = управление потоком данных.

Где используется каждый из подходов?

Rate Limiting

Используется в:

- API Gateway
- Публичных API
- Эндпоинтах авторизации
- Защите от злоупотреблений и DDoS-атак

Типичный ответ сервера:

HTTP/1.1 429 Too Many Requests


Throttling

Используется в:

- Фоновых задачах
- Сервисах с высокой нагрузкой на базу данных
- CPU-интенсивных операциях
- Защите зависимых сервисов во время всплесков трафика

Backpressure

Используется в:

- Kafka-консьюмерах
- Reactive Streams
- Событийно-ориентированных архитектурах
- Стриминговых конвейерах обработки данных

Главная задача — предотвратить переполнение очередей, когда производитель данных работает быстрее, чем потребитель успевает их обрабатывать.

Пример из реальной жизни

Представьте платформу по продаже билетов на концерт во время старта продаж.

Rate Limiting

Каждый пользователь может отправить не более 100 запросов в минуту.

Throttling

Если база данных перегружена, сервис бронирования намеренно снижает скорость обработки запросов до безопасного уровня.

Backpressure

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

Самое распространённое заблуждение

- Rate Limiting защищает API от слишком активных клиентов.
- Throttling защищает сам сервис от перегрузки.
- Backpressure защищает потребителей данных от слишком быстрых производителей.

Это не взаимоисключающие механизмы — они часто используются совместно.

Фраза, которую стоит запомнить

- Rate Limiting — *слишком много запросов.*
- Throttling — *обрабатывай медленнее.*
- Backpressure — *я не успеваю, притормози.*

Эти три концепции лежат в основе построения масштабируемых систем, таких как Netflix, Uber, Amazon и событийно-ориентированных архитектур на базе Kafka.

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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Системный дизайн: Архитектура с одним сервером

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

Обычно всё начинается с простого варианта: все компоненты работают на одном сервере.

Посмотрим, как проходит запрос:
> Пользователь обращается к api.mysite.com через веб-приложение или мобильное приложение.
> DNS преобразует доменное имя в IP-адрес 27.220.30.232.
> Запрос поступает на единственный веб-сервер.
> Сервер выполняет всё самостоятельно:
обрабатывает API-запрос;
выполняет бизнес-логику;
обращается к базе данных.
> Сервер отправляет пользователю HTML-страницу или JSON-ответ для дальнейшего отображения.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
Новый сервис, для конверта документов в Markdown: https://docs.context.dev/api-reference/utility/parse

Достаточно сделать один API-запрос: отправить содержимое файла и получить на выходе Markdown с сохранённой структурой, ссылками и порядком текста.

Сервис поддерживает PDF, Word, Excel, PowerPoint, HTML, CSV, изображения, исходный код и многие другие форматы. Если документ представляет собой скан или фотографию, встроенный OCR автоматически распознает текст.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Системный дизайн: База данных

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

- один для обработки веб- и мобильного трафика — веб-уровень (web tier);
- другой для базы данных — уровень данных (data tier).

Разделение серверов, обрабатывающих веб- и мобильный трафик, и серверов базы данных позволяет масштабировать эти уровни независимо друг от друга.

Какую базу данных использовать?

Можно выбрать между традиционной реляционной базой данных — RDBMS, или SQL-базой данных — и нереляционной базой данных — NoSQL.

Реляционные базы данных представляют и хранят данные в виде таблиц и строк. С помощью SQL можно выполнять операции JOIN между различными таблицами базы данных.

Нереляционная база данных может быть подходящим выбором, если:

- приложению требуется сверхнизкая задержка;
- данные неструктурированы или не имеют связей;
- требуется только сериализация и десериализация данных — JSON, YAML и т. д.;
- необходимо хранить огромные объёмы данных.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Java Streams: limit(n) превращает бесконечный поток в конечный.

Полезно при работе со Stream.iterate() / generate() — они могут создавать бесконечные потоки
limit(5) означает: «взять первые 5 элементов и остановиться»
Отлично подходит для выборки данных или получения первых N значений

#Java #Streams

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3