HTTP

обучение kafka, курсы kafka, kafka для начинающих

HTTP (Hyper Text Transfer Protocol) — это протокол передачи данных, который изначально служил для передачи данных в сети в виде гипертекстовых документов в формате HTML-страниц (Hyper Text Markup Language). В настоящее время этот протокол используется для передачи абсолютно любых данных в сети Интернет, включая Apache Kafka и другие технологии Big Data.

обучение kafka, курсы kafka, kafka для начинающих
Схема работы протокола HTTP

Что такое HTTP и как он работает: краткий ликбез

Метод HTTP — это запрос, который указывает на основную операцию над ресурсом. Как правило, метод представляет собой зарезервированное английское слово, записанное заглавными буквами. Название метода чувствительно к регистру. Сервер может возвращать следующие распространенные виды ошибок при обращении к HTTP-методам:

  • 501 (Not Implemented) — это статус, возвращаемый сервером при невозможности распознания указанного метода;
  • 405 (Method Not Allowed) — это статус, который возвращает сервер в случае невозможности применения указанного метода к конкретному ресурсу.

В HTTP существуют следующие методы для передачи данных в сети:

  1. OPTIONS — это метод, использующийся для определения параметров соединения (конкретный URL или «*» для указания всего сервера). Предполагается, что запрос клиента может содержать тело сообщения, которое содержит данные для указания интересующих его сведений. Результат выполнения метода OPTIONS не кэшируется.
  2. GET — это метод, который используется для запроса содержимого указанного ресурса. Метод GET позволяет начать какой-либо процесс, связанный с получением данных (например, содержимое HTML-страницы по указанному адресу). Запрос GET является идемпотентным (неизменяемость возвращаемого результата при повторном обращении к источнику).
  3. HEAD — этот метод аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело (body). Запрос HEAD обычно применяется для извлечения каких-либо метаданных или проверки наличия ресурса (например, валидация URL). Заголовки ответа кэшируются (сохраняются данные, которые могут быть запрошены еще раз с весьма большой информацией). При несовпадении метаданных с соответствующей информацией в кэше копия ресурса помечается как устаревшая.
  4. POST — этот метод предназначен для запросов, при которых сервер принимает данные для хранения. Метод POST не является идемпотентным и, таким образом, не гарантирует что результат не поменяется при повторном обращении.
  5. PUT — это метод, предназначенный для загрузки содержимого запроса на указанный в запросе URL (Uniform Resource Locator). Если по заданному URL не существует ресурс, то сервер создает его и возвращает статус 201 (Created). В отличие от POST, используя метод PUT, клиент предполагает, что загружаемое содержимое соответствует находящемуся по заданному URL ресурсу.
  6. DELETE — это метод, использующийся для удаления указанного ресурса [1].

Интеграция HTTP и Apache Kafka

Для интеграции протокола HTTP с брокером Apache Kafka существует специальная утилита KafkaBridge. Развертывание HTTP-моста с помощью KafkaBridge возможно через Kubernetes (платформа для развертывания веб-приложений) следующим образом:

apiVersion: kafka.strimzi.io/v1alpha1
kind: KafkaBridge
metadata:
name: my-bridge
spec:
replicas: 1
bootstrapServers: my-cluster-kafka-bootstrap:9092
http:
port: 8080

Доступ к внутренним службам протокола  происходит через специальный ресурс Ingrees. Для этого необходимо создать необходимо создать ресурс Ingress, определяющий правило маршрутизации HTTP-трафика на мост Strimzi Kafka Bridge следующим образом:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-bridge-ingress
spec:
rules:
- host: my-bridge.io
http:
paths:
- path: /
backend:
serviceName: my-bridge-bridge-service
servicePort: 8080

После создания ресурса можно получить доступ к мосту (bridge) через метод GET:

curl -v GET http://my-bridge.io

Если созданный мост доступен через Ingrees, сервер вернет ответ со статусом 200 (OK) [2].

Как появился и развивался протокол HTTP: краткая история

Протокол HTTP был предложен в марте 1991 года Тимом Бернерсом-Ли как механизм для доступа к документам в Интернете посредством использования гипертекста (системы из текстовых страниц с перекрестными ссылками).  Уже к январю 1992 года была впервые опубликована самая ранняя версия протокола HTTP/0.9. Современная версия HTTP/1.1 была принята в июне 1999 года. В этой версии новым стал элемент «постоянного соединения»: соединения может оставаться открытым после отправки ответа на запрос, что позволяет посылать несколько запросов за одно соединение. 11 февраля 2015 года была опубликована версия HTTP/2. Ключевыми особенностями этой версии стали: мультиплексирование (передача нескольких потоков данных по одному каналу) и расстановка приоритетов для запросов. Это позволило значительно снизить нагрузку на сеть во время параллельной передачи данных. В 2019 году в браузерах Google Chrome и Firefox добавлена поддержка версии протокола HTTP/3. Он позволяет работать одновременно с протоколом QUIC (Quick UDP Internet Connections), позволяющий снизить задержку посредством мультиплексирования потоков данных между двумя компьютерами.

Таким образом, благодаря развитию и постоянному обновлению, протокол http является универсальным средством для работы с различными данными в сети. Это позволяет более эффективно вести работу с большими массивами данных в пределах кластера, что делает протокол HTTP неотъемлемой частью технологий работы с большими данными, включая Apache Kafka и другие технологии Big Data, а также различные направления Data Science, такие как аналитические системы на базе алгоритмов машинного обучения (Machine Learning) и других методов искусственного интеллекта [3].

Записаться на курс

Смотреть раcписание

Источники

  1. https://ru.wikipedia.org/wiki/HTTP
  2. https://strimzi.io/blog/2019/11/05/exposing-http-bridge
  3. https://ru.bmstu.wiki/HTTP_(Hypertext_Transfer_Protocol)

Поиск по сайту