Network Flashcards
REST API
REST (Representational State Transfer) - это архитектурный стиль для разработки сетевых приложений, который основывается на простых и однородных операциях CRUD (Create, Read, Update, Delete) с ресурсами URI (Uniform Resource Identifier) через HTTP протокол.
Оффициальные 6 принцыпов:
Клиент-серверная архитектура (Client-Server): Система разделяется на клиентов и сервера, что позволяет им развиваться независимо друг от друга.
Без состояния (Stateless): Каждый запрос клиента к серверу должен содержать всю необходимую информацию для выполнения запроса, и сервер не должен сохранять состояние между запросами. Сессионная информация, если необходима, хранится на клиенте.
Кэширование (Caching): Серверы и клиенты могут кэшировать ресурсы для улучшения производительности. Ресурсы должны быть явно помечены как кэшируемые или некэшируемые.
Единообразие интерфейса (Uniform Interface): Все ресурсы должны иметь уникальные идентификаторы (URI) и обращаться с использованием стандартных методов HTTP (GET, POST, PUT, DELETE и т. д.). Это обеспечивает единообразие взаимодействия с ресурсами.
Слои (Layered System): Архитектура может быть многоуровневой, где клиенты могут общаться непосредственно с сервером или через промежуточные слои, такие как балансировщики нагрузки или кэширующие серверы.
Код по требованию (Optional): Сервер может отправлять код (например, JavaScript) клиенту для выполнения в его контексте, но это не является обязательным.
gRPC
Remote Procedure Call - удалённый вызов процедур, альтернатива REST от гугла. Чаще всего используется для микросервисов. На сервере создаются процедуры (стабы), а на клиенте происходит их вызов как обычных методов client.someMethod и всё, никаких хедеров и всего остального не надо. Использует HTTP 2.0
HTTP 2.0
Многопоточность
Сжатие хедеров
Бинарный протокол - тоесть, теперь передаем не JSON, а Protobuf (1001010101010)
Long polling
Использовался до того как появились websockets.
Когда от клиента приходит запрос на сервер, мы это соединение не закрываем и оно остается висеть и ждать новых данных от сервера. После получения новых данных от сервера, ответ приходит на клиент и соединение закрывается. Через заданный промежуток времени, приходит новый запрос, который также не закрывается и ждет данные.
Балансировка нагрузки
Балансировщик нагрузки – это устройство, которое находится между пользователем и группой серверов и действует как невидимый посредник, обеспечивая одинаковое использование всех серверов ресурсов.
JSONP
JSON with padding
Способ общения с сервером посредством внедрения тега скрипт с src в котором зашит нуждный url. Такой подход обходит защиту CORS