Протоколы общения
Основные разделы
Архитектурные подходы
- REST: каждый ресурс системы представлен уникальным URL и взаимодействие с ними осуществляется через
стандартные HTTP-методы, поддерживает JSON, XML, HTML и текст.
- SOAP: обмен сообщениями между сервисами происходит через строго
структурированные XML-запросы и ответы.
- GraphQL
- GraphQL: позволяет клиентам формировать запросы к API, точно определяя необходимые данные, минимизируя
избыточность.
- gRPC
- gRPC: использует протоколы буферов и HTTP/2 для создания высокопроизводительных и масштабируемых
сервисов с двусторонней связью.
- WebSockets: создаёт постоянное соединение между клиентом и сервером, и обеспечивает двусторонний обмен
данными в реальном времени.
- Webhooks: асинхронное взаимодействие, где сервер уведомляет клиента о событиях через HTTP-запросы,
инициированные самим сервером. Применим для CI/CD процессов и платежных шлюзов.
- MQTT: оптимизирован для IoT-устройств, поддерживает легковесный обмен сообщениями с низким потреблением
ресурсов.
- AMQP: для высоконадёжных систем, ориентирован на очереди сообщений и гарантированную доставку данных
между сервисами.
IP
IP(Internet Protocol) - является ненадёжным, тк. не подтверждает доставку пакетов получателю и не
контролирует целостность данных. По протоколу IP передача данных осуществляется без установки соединения.
TCP/IP
TCP(Transmission Control Protocol/Internet Protocol) — транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью.
Исключает потери данных, дублирование и перемешивание пакетов, задержки.
UDP
UDP(User Datagram Protocol) — транспортный протокол, передающий сообщения-датаграммы без необходимости установки соединения в IP-сети.
Допускает потери данных, дублирование и перемешивание пакетов, задержки. Но работает быстрее TCP.
FTP
FTP(File Transfer Protocol) — используются при удалённом доступе к хостингам, гарантирует передачу данных
и получает доступ к файловой системе сервера.
DNS
DNS(Domain Name System) — не только система доменных имён, но и протокол, без которого эта система не смогла
бы работать. Он позволяет клиентским компьютерам запрашивать у DNS-сервера IP-адрес какого-либо сайта,
а также помогает обмениваться базами данных между серверами DNS. В работе этого протокола также используются
TCP и UDP.
localhost - доменное имя для компьютера указывающее еа себя. IP:127.0.0.1
NTP
NTP(Network Time Protocol) - для синхронизации локальных часов устройства со временем в сети.
Он использует алгоритм Марзулло. Благодаря нему протокол выбирает более точный источник времени.
Работает поверх UDP — поэтому достигает большой скорости.
SSH
SSH(Secure SHell) - для удалённого управления операционной системой с использованием TCP. Шифруется весь
трафик, с возможностью выбора алгоритма шифрования. Позволяет обрабатывать любые другие протоколы передачи.
Протоколы электронной почты
- POP3 - это стандартный протокол почтового соединения, с помощью которого почтовый клиент скачивает
письма на локальный компьютер, а на почтовом сервере их удаляет (можно настроить). По умолчанию POP3
использует 110 порт или 995 порт при защищенном соединении.
- IMAP - протокол прикладного уровня для почтового соединения. В отличие от POP3 он хранит письма на
почтовом сервере и загружает их при каждом просмотре пользователем. При использовании этого протокола
требуется активное подключение к интернету. IMAP использует порты 143 и 993 (SSL/TLS) по умолчанию.
- SMTP - простой протокол передачи почты, который используется для передачи писем. Он устанавливает связь
с сервером получателем и отправляет письмо, в противном случае сервер вернет отправителю отчет об
ошибке отправки сообщения. Протокол SMTP по умолчанию использует порт 25 или 465 если соединение
защищенное. Порт может быть изменен, так как некоторые интернет-провайдеры блокируют его. В таком
случае Вы можете использовать альтернативный порт 587 или обратиться за помощью к администратору сети.
Batch Processing vs Stream Processing
Batch processing(пакетная обработка)
- Обрабатывает данные большими порциями (батчами) по расписанию.
- Отлично подходит для исторических данных, хранилищ (DWH) и аналитики.
- Примеры: расчёт зарплаты, периодические отчёты, ETL/ELT джобы.
Плюсы: эффективно на больших объёмах, дешевле по ресурсам, хорошо оптимизируется под throughput
Минусы: высокая задержка (latency), не подходит для задач, где нужно “прямо сейчас”
Инструменты: Apache Hadoop, Apache Spark, AWS Glue
Stream processing(потоковая обработка)
- Обрабатывает данные непрерывно, по мере поступления.
- Используется для real-time аналитики, антифрода, мониторинга “вживую”.
- Примеры: мониторинг биржи, рекомендации в реальном времени, IoT-датчики.
Плюсы: низкая задержка, инсайты в реальном времени, реактивные системы
Минусы: сложнее в реализации и поддержке, требует высокой доступности и масштабируемости
Инструменты: Apache Kafka, Apache Flink, Apache Storm, Spark Streaming