🤔 С каким максимальным кол-ом адресов ОП может провзаимодействовать процессор?
Максимальное количество адресов оперативной памяти (ОП), с которыми может взаимодействовать процессор, зависит от ширины адресной шины процессора. Адресная шина определяет, сколько уникальных адресов памяти процессор может адресовать.
🚩Формула вычисления
Количество адресуемых ячеек памяти определяется по формуле:
\text{Максимальное количество адресов} = 2^{\text{ширина адресной шины (в битах)}}
🚩Примеры
🟠Процессор с 32-битной адресной шиной
Максимально возможное количество адресов:
2^{32} = 4,294,967,296 \, (\approx 4 \, \text{Гбайт})
🟠Процессор с 64-битной адресной шиной
Теоретический максимум
2^{64} = 18,446,744,073,709,551,616 \, (\approx 16 \, \text{эксабайт})
Однако современные процессоры обычно поддерживают меньше, например
Архитектура x86-64 (например, Intel и AMD): ограничена 48–57 битами для адресов памяти, что позволяет адресовать от 256 Тбайт до 128 Пбайт.
🚩Почему реальная адресуемая память меньше?
🟠Ограничения архитектуры
Производители процессоров могут использовать меньшее количество адресных линий, чтобы снизить сложность и стоимость. Например, современные 64-битные процессоры адресуют только часть 64-битного пространства (например, 48 бит).
🟠Ограничения ОЗУ
Даже если процессор поддерживает большое количество адресов, максимальная память ограничивается количеством слотов памяти и их емкостью на материнской плате.
🟠Системные резервы
Некоторые адреса зарезервированы для системных нужд (например, для ввода/вывода или BIOS).
Ставь 👍 и забирай 📚 Базу знаний
Максимальное количество адресов оперативной памяти (ОП), с которыми может взаимодействовать процессор, зависит от ширины адресной шины процессора. Адресная шина определяет, сколько уникальных адресов памяти процессор может адресовать.
🚩Формула вычисления
Количество адресуемых ячеек памяти определяется по формуле:
\text{Максимальное количество адресов} = 2^{\text{ширина адресной шины (в битах)}}
🚩Примеры
🟠Процессор с 32-битной адресной шиной
Максимально возможное количество адресов:
2^{32} = 4,294,967,296 \, (\approx 4 \, \text{Гбайт})
🟠Процессор с 64-битной адресной шиной
Теоретический максимум
2^{64} = 18,446,744,073,709,551,616 \, (\approx 16 \, \text{эксабайт})
Однако современные процессоры обычно поддерживают меньше, например
Архитектура x86-64 (например, Intel и AMD): ограничена 48–57 битами для адресов памяти, что позволяет адресовать от 256 Тбайт до 128 Пбайт.
🚩Почему реальная адресуемая память меньше?
🟠Ограничения архитектуры
Производители процессоров могут использовать меньшее количество адресных линий, чтобы снизить сложность и стоимость. Например, современные 64-битные процессоры адресуют только часть 64-битного пространства (например, 48 бит).
🟠Ограничения ОЗУ
Даже если процессор поддерживает большое количество адресов, максимальная память ограничивается количеством слотов памяти и их емкостью на материнской плате.
🟠Системные резервы
Некоторые адреса зарезервированы для системных нужд (например, для ввода/вывода или BIOS).
Ставь 👍 и забирай 📚 Базу знаний
🤔 Как понять, что это за ветка завалилась, если нет buildinfo?
- Использовать переменные CI/CD (CI_COMMIT_REF_NAME).
- Посмотреть в git log последнюю ветку.
- Вручную извлечь информацию из репозитория:
- git reflog
- git branch -r --contains <commit>
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Использовать переменные CI/CD (CI_COMMIT_REF_NAME).
- Посмотреть в git log последнюю ветку.
- Вручную извлечь информацию из репозитория:
- git reflog
- git branch -r --contains <commit>
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какие есть лучшие практики в использовании инструкции add и copy?
🚩Лучшие практики по использованию `COPY` и `ADD`
🟠Используйте `COPY` вместо `ADD`, если не нужно распаковывать архивы
Плохо (избыточное использование
Хорошо (явное распаковывание в
🟠Минимизируйте число `COPY` и `ADD`, чтобы уменьшить размер образа
Плохо (копируем всё без исключений)
Хорошо (копируем только нужные файлы)
Добавьте
🟠Копируйте только изменяемые файлы, чтобы ускорить кэширование
Плохо (изменение кода приводит к пересборке зависимостей)**
Хорошо (сначала зависимости, потом код)
🟠Не используйте `ADD` для загрузки файлов из интернета
Плохо (
🟠Хорошо (используем
Ставь 👍 и забирай 📚 Базу знаний
ADD и COPY — это инструкции Dockerfile, которые копируют файлы в контейнер. Их использование влияет на размер образа, безопасность и производительность сборки. 🚩Лучшие практики по использованию `COPY` и `ADD`
🟠Используйте `COPY` вместо `ADD`, если не нужно распаковывать архивы
Плохо (избыточное использование
ADD) ADD app.tar.gz /app/
Хорошо (явное распаковывание в
RUN) COPY app.tar.gz /tmp/
RUN tar -xzf /tmp/app.tar.gz -C /app && rm /tmp/app.tar.gz
🟠Минимизируйте число `COPY` и `ADD`, чтобы уменьшить размер образа
Плохо (копируем всё без исключений)
COPY . /app
Хорошо (копируем только нужные файлы)
COPY src/ /app/src/
COPY requirements.txt /app/
Добавьте
.dockerignore.git
node_modules
__pycache__
*.log
🟠Копируйте только изменяемые файлы, чтобы ускорить кэширование
Плохо (изменение кода приводит к пересборке зависимостей)**
COPY . /app
RUN pip install -r /app/requirements.txt
Хорошо (сначала зависимости, потом код)
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt
COPY src/ /app/src/
🟠Не используйте `ADD` для загрузки файлов из интернета
Плохо (
ADD загружает файл, но не кэшируется) ADD https://example.com/file.tar.gz /tmp/
🟠Хорошо (используем
RUN curl + COPY) RUN curl -L -o /tmp/file.tar.gz https://example.com/file.tar.gz
COPY file.tar.gz /app/
Ставь 👍 и забирай 📚 Базу знаний
👍5
🤔 Как получить секреты?
- Через CI/CD Secret Store (GitLab, Jenkins, ArgoCD).
- Через vault или doppler.
- Через Kubernetes Secrets (kubectl get secret + decode).
- Локально — из .env, dotenv, или переменных окружения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Через CI/CD Secret Store (GitLab, Jenkins, ArgoCD).
- Через vault или doppler.
- Через Kubernetes Secrets (kubectl get secret + decode).
- Локально — из .env, dotenv, или переменных окружения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥3👍2
🤔 Зачем нужны теги в Ansible?
Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией.
🚩Когда использовать теги?
🟠Запуск только нужных задач
если плейбук содержит много шагов, можно выполнить только нужные.
🟠Разделение задач по категориям
например, отдельно установка, обновление, настройка сервиса.
🟠Оптимизация CI/CD
ускорение развертывания, выполняя только измененные задачи.
🚩Как использовать теги?
🟠Теги в задачах (`tasks`)
Простой пример – установка и перезапуск Nginx
Запуск только установки (
Запуск только перезапуска (
🟠Теги в ролях (`roles`)
Если у вас несколько ролей, можно запускать только нужную:
Запуск только роли
🟠Исключение тегов (`--skip-tags`)
Можно пропустить выполнение определенных задач
Ставь 👍 и забирай 📚 Базу знаний
Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией.
🚩Когда использовать теги?
🟠Запуск только нужных задач
если плейбук содержит много шагов, можно выполнить только нужные.
🟠Разделение задач по категориям
например, отдельно установка, обновление, настройка сервиса.
🟠Оптимизация CI/CD
ускорение развертывания, выполняя только измененные задачи.
🚩Как использовать теги?
🟠Теги в задачах (`tasks`)
Простой пример – установка и перезапуск Nginx
yaml
- name: Установить Nginx
apt:
name: nginx
state: present
tags: install
- name: Перезапустить Nginx
service:
name: nginx
state: restarted
tags: restart
Запуск только установки (
install) sh
ansible-playbook playbook.yml --tags install
Запуск только перезапуска (
restart) sh
ansible-playbook playbook.yml --tags restart
🟠Теги в ролях (`roles`)
Если у вас несколько ролей, можно запускать только нужную:
yaml
- hosts: all
roles:
- { role: nginx, tags: web }
- { role: database, tags: db }
Запуск только роли
database sh
ansible-playbook playbook.yml --tags db
🟠Исключение тегов (`--skip-tags`)
Можно пропустить выполнение определенных задач
sh
ansible-playbook playbook.yml --skip-tags restart
Ставь 👍 и забирай 📚 Базу знаний
👍7💊1
🤔 Что такое init-контейнер?
Init-контейнер запускается перед основным контейнером в поде.
1. Используется для выполнения подготовительных задач, таких как загрузка данных или настройка окружения.
2. Гарантирует, что основное приложение начнёт работу в подготовленном состоянии.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Init-контейнер запускается перед основным контейнером в поде.
1. Используется для выполнения подготовительных задач, таких как загрузка данных или настройка окружения.
2. Гарантирует, что основное приложение начнёт работу в подготовленном состоянии.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3🔥3
🤔 Как примонтировать диск?
Чтобы использовать новый диск в Linux, его нужно разметить, создать файловую систему и примонтировать.
🚩Разметить диск (`fdisk`)
Запустить
🚩Создать файловую систему (`mkfs`)
Форматировать раздел в
Если нужен
🚩Автоматическое монтирование при загрузке (`/etc/fstab`)
Найти
Вывод
Добавить в
Применить изменения
Ставь 👍 и забирай 📚 Базу знаний
Чтобы использовать новый диск в Linux, его нужно разметить, создать файловую систему и примонтировать.
🚩Разметить диск (`fdisk`)
Запустить
fdisk для диска sdb sudo fdisk /dev/sdb
🚩Создать файловую систему (`mkfs`)
Форматировать раздел в
ext4sudo mkfs.ext4 /dev/sdb1
Если нужен
xfssudo mkfs.xfs /dev/sdb1
🚩Автоматическое монтирование при загрузке (`/etc/fstab`)
Найти
UUID дискаblkid /dev/sdb1
Вывод
/dev/sdb1: UUID="12345678-abcd-1234-efgh-56789abcdef0" TYPE="ext4"
Добавить в
/etc/fstab echo 'UUID=12345678-abcd-1234-efgh-56789abcdef0 /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
Применить изменения
sudo mount -a
Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Что лучше: Fluentd или Logstash?
Выбор зависит от контекста. В Kubernetes-средах чаще выбирают Fluentd из-за лёгкости и нативной поддержки логов. Logstash лучше подходит для централизованной обработки сложных логов в инфраструктурах, где важны мощные фильтры и grok-парсеры.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Выбор зависит от контекста. В Kubernetes-средах чаще выбирают Fluentd из-за лёгкости и нативной поддержки логов. Logstash лучше подходит для централизованной обработки сложных логов в инфраструктурах, где важны мощные фильтры и grok-парсеры.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 Что такое шебанг?
Это спецсимволы в начале скрипта, указывающие, каким интерпретатором следует запускать файл. Он необходим для правильного исполнения скрипта в UNIX-подобных системах.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Это спецсимволы в начале скрипта, указывающие, каким интерпретатором следует запускать файл. Он необходим для правильного исполнения скрипта в UNIX-подобных системах.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍5🔥2
🤔 Можно ли на лету изменить настройки dns контейнре через cli?
Нет, нельзя изменить DNS у уже запущенного контейнера напрямую через CLI. Но есть обходные способы!
🚩Остановка и перезапуск контейнера с новыми DNS
Самый надежный способ — перезапустить контейнер с нужными DNS-серверами
Или задать DNS через
🚩Изменение `/etc/resolv.conf` внутри контейнера (может сработать)
Можно изменить DNS вручную внутри работающего контейнера
🚩Использование `network connect` (только для user-defined сетей)
Можно подключить контейнер к другой сети с нужными DNS:
🚩Изменение настроек `systemd-resolved` (для контейнеров с `host`-сетью)
Если контейнер использует сеть хоста (
Ставь 👍 и забирай 📚 Базу знаний
Нет, нельзя изменить DNS у уже запущенного контейнера напрямую через CLI. Но есть обходные способы!
🚩Остановка и перезапуск контейнера с новыми DNS
Самый надежный способ — перезапустить контейнер с нужными DNS-серверами
docker run --dns 8.8.8.8 --dns 8.8.4.4 -d my_container
Или задать DNS через
docker network docker network create mynet --dns=1.1.1.1
docker run --net=mynet -d my_container
🚩Изменение `/etc/resolv.conf` внутри контейнера (может сработать)
Можно изменить DNS вручную внутри работающего контейнера
docker exec -it my_container sh
echo "nameserver 1.1.1.1" > /etc/resolv.conf
🚩Использование `network connect` (только для user-defined сетей)
Можно подключить контейнер к другой сети с нужными DNS:
docker network create mynewnet --dns=8.8.8.8
docker network connect mynewnet my_container
🚩Изменение настроек `systemd-resolved` (для контейнеров с `host`-сетью)
Если контейнер использует сеть хоста (
--network host), можно поменять DNS на хосте: resolvectl dns eth0 8.8.8.8
Ставь 👍 и забирай 📚 Базу знаний
👍3
🤔 Как понять, что микросервисы работают исправно?
Это определяется по:
- метрикам и мониторингу (нагрузка, количество ошибок, время отклика);
- health-check endpoint (возвращает статус);
- логам (отслеживание ошибок и предупреждений);
- тестам в проде (canary, smoke-тесты);
- трассировке запросов (end-to-end следование пути данных).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Это определяется по:
- метрикам и мониторингу (нагрузка, количество ошибок, время отклика);
- health-check endpoint (возвращает статус);
- логам (отслеживание ошибок и предупреждений);
- тестам в проде (canary, smoke-тесты);
- трассировке запросов (end-to-end следование пути данных).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥3
🤔 Чем отличаются друг от друга GET и POST?
- GET передаёт данные через URL, ограничен по длине, используется для чтения, кэшируется.
- POST передаёт данные в теле запроса, не кэшируется, подходит для создания и отправки чувствительных данных (форм, файлов).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- GET передаёт данные через URL, ограничен по длине, используется для чтения, кэшируется.
- POST передаёт данные в теле запроса, не кэшируется, подходит для создания и отправки чувствительных данных (форм, файлов).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥2
🤔 Для чего нужны инструменты управления конфигурацией (Ansible / Puppet / Chef / Salt)?
Они автоматизируют:
- настройку серверов;
- установку пакетов;
- деплой;
- управление инфраструктурой.
Позволяют описывать инфраструктуру как код, упрощают масштабирование и поддержание консистентности.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Они автоматизируют:
- настройку серверов;
- установку пакетов;
- деплой;
- управление инфраструктурой.
Позволяют описывать инфраструктуру как код, упрощают масштабирование и поддержание консистентности.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Зачем нужен OOM
OOM (Out Of Memory) — это механизм, срабатывающий, когда системе не хватает памяти для работы, что приводит к завершению процессов с высокой нагрузкой. Он защищает систему от полного исчерпания памяти, освобождая ресурсы, чтобы другие процессы могли продолжать работать. OOM-killer используется для выбора и завершения наименее критичных процессов, предотвращая полное зависание системы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4
🤔 Как посмотреть логи в уже работающем контейнере?
Чтобы посмотреть логи работающего контейнера в Docker, используйте команду:
или
🚩Основные флаги
🟠`-f` (follow)
следить за логами в реальном времени (как
🟠`--tail N`
показать только последние N строк:
🟠`-t` (timestamps)
добавить метки времени:
🚩Просмотр логов через `docker-compose`
Если контейнер запущен через
или для конкретного сервиса:
🚩Логи для контейнера с systemd (если Docker пишет в `journald`)
Ставь 👍 и забирай 📚 Базу знаний
Чтобы посмотреть логи работающего контейнера в Docker, используйте команду:
docker logs <container_id>
или
docker logs <container_name>
🚩Основные флаги
🟠`-f` (follow)
следить за логами в реальном времени (как
tail -f): docker logs -f <container_id>
🟠`--tail N`
показать только последние N строк:
docker logs --tail 100 <container_id>
🟠`-t` (timestamps)
добавить метки времени:
docker logs -t <container_id>
🚩Просмотр логов через `docker-compose`
Если контейнер запущен через
docker-compose, можно использовать: docker-compose logs -f
или для конкретного сервиса:
docker-compose logs -f <service_name>
🚩Логи для контейнера с systemd (если Docker пишет в `journald`)
journalctl -u docker -f
Ставь 👍 и забирай 📚 Базу знаний
👍3
🤔 Что такое Quality of Service (QoS) в Kubernetes?
QoS определяет приоритет пода в ситуации, когда не хватает ресурсов. Поды с лучшими ресурсными гарантиями (и явно указанными requests и limits) получают более высокий класс. Это влияет на поведение системы при давлении — в первую очередь удаляются те поды, у которых нет чётко заданных лимитов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
QoS определяет приоритет пода в ситуации, когда не хватает ресурсов. Поды с лучшими ресурсными гарантиями (и явно указанными requests и limits) получают более высокий класс. Это влияет на поведение системы при давлении — в первую очередь удаляются те поды, у которых нет чётко заданных лимитов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3💊1
🤔 Как проверить лимит SQL Database?
Используются команды или интерфейсы мониторинга, чтобы узнать:
- количество подключений;
- использование CPU/IO;
- количество операций на запись/чтение;
- объём занимаемого пространства;
- текущую нагрузку и лимиты по плану (если облако).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Используются команды или интерфейсы мониторинга, чтобы узнать:
- количество подключений;
- использование CPU/IO;
- количество операций на запись/чтение;
- объём занимаемого пространства;
- текущую нагрузку и лимиты по плану (если облако).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊3👍1
🤔 Что такое pod?
Pod — это основная единица развертывания в Kubernetes, которая представляет собой один или несколько контейнеров, работающих вместе и разделяющих общие ресурсы, такие как сеть и хранилище. Каждый pod получает уникальный IP-адрес в кластере и может включать контейнеры, которые взаимодействуют друг с другом. Pod является недолговечным и может быть перезапущен или пересоздан при сбое, поэтому Kubernetes автоматически управляет их состоянием. Pod помогает упрощать управление контейнерами в кластере.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4
🤔 В чём отличие Deployment от Delivery?
Continuous Deployment подразумевает автоматический выпуск каждой успешной сборки в продакшн. Continuous Delivery предполагает автоматическую подготовку к выпуску, но для выпуска требуется ручное одобрение. Deployment обеспечивает более быстрый и непрерывный процесс, в то время как Delivery фокусируется на стабильности.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Что такое Web Sockets (веб сокет)?
WebSockets (веб-сокеты) — это коммуникационный протокол, предоставляющий возможность устанавливать постоянное, двустороннее соединение между клиентом (обычно веб-браузером) и сервером через один TCP-соединение. Это позволяет обмениваться данными в реальном времени с минимальной задержкой и без необходимости повторного открытия соединения для каждого обмена сообщениями, как это происходит в традиционных HTTP-соединениях.
🚩Основные характеристики WebSockets:
🟠Двусторонняя коммуникация: WebSockets поддерживают полноценную двустороннюю (или full-duplex) коммуникацию, что позволяет как клиенту, так и серверу отправлять данные в любое время без необходимости инициирования запроса.
🟠Постоянное соединение: После установления WebSocket-соединение остается открытым, что значительно уменьшает задержки, связанные с установлением новых соединений, характерных для HTTP-запросов.
🟠Меньший накладной расход: WebSockets используют меньше заголовков по сравнению с HTTP-запросами, что делает передачу данных более эффективной и менее затратной по времени и ресурсам.
🟠Протокол: WebSocket протокол стандартизирован в RFC 6455 и поддерживается большинством современных веб-браузеров. Соединение начинается с обычного HTTP-запроса, который затем "обновляется" до WebSocket-соединения через HTTP-заголовок
🚩Как работает WebSocket:
🟠Установление соединения: Клиент отправляет HTTP-запрос с заголовком
🟠Передача данных: После установления соединения клиент и сервер могут обмениваться данными в обе стороны по мере необходимости. Сообщения передаются как фреймы (frames), которые могут содержать текстовые или бинарные данные.
🟠Закрытие соединения: Соединение может быть закрыто любой стороной в любой момент времени с отправкой соответствующего фрейма закрытия.
🚩Применения WebSocket:
🟠Реальное время: Приложения, требующие обновлений в реальном времени, такие как чаты, системы обмена сообщениями, онлайн-игры, торги на биржах.
🟠Потоковая передача данных: Веб-сокеты идеально подходят для приложений, передающих данные в реальном времени, таких как спортивные трансляции или финансовые данные.
🟠Уведомления и оповещения: Приложения, отправляющие мгновенные уведомления пользователям, например, социальные сети или системы мониторинга.
🟠Коллаборативные инструменты: Инструменты для совместной работы, такие как совместное редактирование документов или доски с заметками.
Преимущества WebSocket:
🟠Эффективность: Меньший накладной расход и постоянное соединение делают WebSockets более эффективными для приложений, требующих частого обмена данными.
🟠Скорость: WebSockets обеспечивают более низкую задержку, что делает их идеальными для приложений, работающих в реальном времени.
🟠Простота использования: WebSockets имеют простой API, который легко интегрируется с современными веб-приложениями.
Ставь 👍 и забирай 📚 Базу знаний
WebSockets (веб-сокеты) — это коммуникационный протокол, предоставляющий возможность устанавливать постоянное, двустороннее соединение между клиентом (обычно веб-браузером) и сервером через один TCP-соединение. Это позволяет обмениваться данными в реальном времени с минимальной задержкой и без необходимости повторного открытия соединения для каждого обмена сообщениями, как это происходит в традиционных HTTP-соединениях.
🚩Основные характеристики WebSockets:
🟠Двусторонняя коммуникация: WebSockets поддерживают полноценную двустороннюю (или full-duplex) коммуникацию, что позволяет как клиенту, так и серверу отправлять данные в любое время без необходимости инициирования запроса.
🟠Постоянное соединение: После установления WebSocket-соединение остается открытым, что значительно уменьшает задержки, связанные с установлением новых соединений, характерных для HTTP-запросов.
🟠Меньший накладной расход: WebSockets используют меньше заголовков по сравнению с HTTP-запросами, что делает передачу данных более эффективной и менее затратной по времени и ресурсам.
🟠Протокол: WebSocket протокол стандартизирован в RFC 6455 и поддерживается большинством современных веб-браузеров. Соединение начинается с обычного HTTP-запроса, который затем "обновляется" до WebSocket-соединения через HTTP-заголовок
Upgrade.🚩Как работает WebSocket:
🟠Установление соединения: Клиент отправляет HTTP-запрос с заголовком
Upgrade: websocket на сервер, указывая на желание перейти к протоколу WebSocket. Сервер отвечает подтверждением, если поддерживает WebSockets, и соединение устанавливается.🟠Передача данных: После установления соединения клиент и сервер могут обмениваться данными в обе стороны по мере необходимости. Сообщения передаются как фреймы (frames), которые могут содержать текстовые или бинарные данные.
🟠Закрытие соединения: Соединение может быть закрыто любой стороной в любой момент времени с отправкой соответствующего фрейма закрытия.
🚩Применения WebSocket:
🟠Реальное время: Приложения, требующие обновлений в реальном времени, такие как чаты, системы обмена сообщениями, онлайн-игры, торги на биржах.
🟠Потоковая передача данных: Веб-сокеты идеально подходят для приложений, передающих данные в реальном времени, таких как спортивные трансляции или финансовые данные.
🟠Уведомления и оповещения: Приложения, отправляющие мгновенные уведомления пользователям, например, социальные сети или системы мониторинга.
🟠Коллаборативные инструменты: Инструменты для совместной работы, такие как совместное редактирование документов или доски с заметками.
Преимущества WebSocket:
🟠Эффективность: Меньший накладной расход и постоянное соединение делают WebSockets более эффективными для приложений, требующих частого обмена данными.
🟠Скорость: WebSockets обеспечивают более низкую задержку, что делает их идеальными для приложений, работающих в реальном времени.
🟠Простота использования: WebSockets имеют простой API, который легко интегрируется с современными веб-приложениями.
Ставь 👍 и забирай 📚 Базу знаний
👍3🤔1
🤔 Что произойдёт, если мы раскатали приложение с помощью deployment, зашли в ReplicaSet и поменяли там версию приложения?
Изменение в ReplicaSet не сохранится надолго: Deployment всё равно будет следить за своим состоянием и при следующем изменении пересоздаст ReplicaSet с заданной в манифесте конфигурацией. Поэтому любые ручные изменения потеряются — надо менять именно Deployment.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Изменение в ReplicaSet не сохранится надолго: Deployment всё равно будет следить за своим состоянием и при следующем изменении пересоздаст ReplicaSet с заданной в манифесте конфигурацией. Поэтому любые ручные изменения потеряются — надо менять именно Deployment.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍5