Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Основные концепции · часть 1

Все темы Systems Analyst

Что такое WSDL?

WSDL (Web Services Description Language) — это язык описания веб-сервисов, который используется для описания доступных функций, структуры данных, протоколов и методов коммуникации для веб-сервиса. Основные аспекты WSDL:

  1. Описание сервиса: WSDL описывает доступные операции (методы) сервиса, параметры этих операций и типы данных, которые они используют.

  2. Протоколы и форматы: Описывает протоколы и форматы сообщений, используемые для обмена данными между клиентами и сервисом. Это может включать SOAP (Simple Object Access Protocol) или другие протоколы.

  3. Местоположение и доступ: WSDL может содержать информацию о местоположении (адресе) сервиса и методах доступа к нему (например, HTTP GET, POST, SOAP).

  4. Используемые типы данных: Определяет структуры данных, используемые в запросах и ответах сервиса, обеспечивая единообразие в коммуникации.

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


Что такое идемпотентность? Почему это важно?

Идемпотентность в контексте информационных систем означает свойство операции, которое гарантирует, что её повторное применение не изменит состояние системы. Другими словами, если операция была выполнена один раз, повторное её выполнение не приведет к изменениям в системе.

Почему это важно:
  1. Безопасность: Идемпотентные операции минимизируют риски случайных или нежелательных изменений данных.

  2. Надежность: Повторное выполнение операции не вызывает неожиданных эффектов или ошибок.

  3. Устойчивость к сетевым сбоям: В случае сбоев или дублирования запросов, идемпотентность помогает избежать нежелательных последствий.

Примеры идемпотентных операций включают запросы HTTP методом GET, удаление ресурсов (DELETE), и использование уникальных идентификаторов для предотвращения дублирования операций.


DELETE – идемпотентный метод?

Да. Несколько одинаковых DELETE имеют тот же ожидаемый эффект над ресурсом, что и один: ресурс удалён. Ответы могут различаться, например 204 при первом удалении и 404 при повторном. Идемпотентность не требует одинаковых кодов ответа и не запрещает журналирование.


Есть некий UI, нужно написать к нему веб-сервис. Опишите вашу постановку – что в ней будет.

Постановка задачи на создание веб-сервиса для UI включает следующие основные шаги и компоненты:

  1. Определение функциональных требований:
    • Определение API эндпоинтов и методов (GET, POST, PUT, DELETE) веб-сервиса.

    • Разработка структуры данных для запросов и ответов (JSON или XML формат).

  2. Разработка веб-сервиса:
    • Создание маршрутов (routes) для обработки различных HTTP запросов от UI.

    • Реализация бизнес-логики для обработки запросов и взаимодействия с базой данных или другими сервисами.

  3. Аутентификация и авторизация:
    • Внедрение механизмов аутентификации и авторизации для защиты API от несанкционированного доступа.
  4. Тестирование:
    • Проведение тестирования API для проверки функциональности и соответствия требованиям.
  5. Документация:
    • Написание документации к API (например, с использованием OpenAPI/Swagger) для удобства использования разработчиками UI.
  6. Развёртывание и мониторинг:
    • Развертывание веб-сервиса на сервере.

    • Настройка мониторинга для отслеживания работы веб-сервиса и выявления возможных проблем.

  7. Поддержка и обновление:
    • Поддержка и обновление веб-сервиса в соответствии с изменяющимися требованиями и обратной связью от пользователей.

Что такое синхронные и асинхронные вызовы?

Синхронные и асинхронные вызовы относятся к способу организации выполнения операций или функций в программном коде:

  1. Синхронные вызовы:
    • В синхронных вызовах выполнение программы блокируется до завершения операции.

    • Когда код выполняет синхронный вызов, он ждёт завершения этого вызова, прежде чем продолжить дальнейшее выполнение.

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

  2. Асинхронные вызовы:
    • В асинхронных вызовах выполнение программы не блокируется и продолжает работу сразу после инициации операции.

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

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

Выбор между синхронными и асинхронными вызовами зависит от конкретных требований задачи, производительности системы и специфики взаимодействия с внешними ресурсами.


Чем Kafka отличается от RabbitMQ?

Kafka и RabbitMQ - это два различных брокера сообщений, оба известные своими способностями обработки сообщений, но они имеют несколько ключевых различий:

  1. Архитектура:
    • Kafka: Построен как распределённая система, которая распределяет данные по разным брокерам в кластере. Он разработан для высокой пропускной способности и устойчивости к отказам.

    • RabbitMQ: Ориентирован на классическую AMQP (Advanced Message Queuing Protocol) архитектуру. Он более традиционный и прост в использовании для разнообразных сценариев.

  2. Производительность и масштабирование:
    • Kafka: Очень высокая пропускная способность и поддержка масштабирования до тысяч и миллионов сообщений в секунду.

    • RabbitMQ: Хорошо масштабируется вертикально, но его производительность может быть ограничена при работе с большими объемами сообщений.

  3. Хранение сообщений:
    • Kafka: Хранит сообщения в виде лога, что делает его хорошим выбором для построения потоковой обработки данных (stream processing).

    • RabbitMQ: Хранит сообщения в памяти или на диске, в зависимости от настроек, и обеспечивает гибкость в выборе способа хранения.

  4. Гарантии доставки сообщений:
    • Kafka сохраняет порядок записей внутри одной партиции. Гарантии доставки и обработки зависят от подтверждений, фиксации offset, идемпотентного producer и транзакций; глобального порядка между партициями нет.

    • RabbitMQ использует publisher confirms и подтверждения потребителей для надёжной доставки. При сбоях возможны повторы, поэтому обработчики должны уметь их распознавать или быть идемпотентными. Сквозная обработка exactly once не гарантируется автоматически.

  5. Применение:
    • Kafka: Часто используется для стриминга данных, аналитики, мониторинга и других сценариев, требующих высокой пропускной способности и упорядоченности данных.

    • RabbitMQ: Широко применяется в микросервисной архитектуре, интеграционных задачах и там, где требуется более традиционная система очередей сообщений.


Клиент читает в Kafka два последних сообщения. Как тому же клиенту заново прочитать эти два последние сообщения?

Для повторного чтения используйте consumer.seek(partition, offset). Сохраните партицию и offset нужных записей; offset задаёт позицию внутри партиции, а не всего топика. Записи должны ещё храниться в журнале.

Для каждой нужной партиции установите позицию на offset первой из перечитываемых записей и снова вызовите poll. Группа хранит подтверждённые позиции чтения, а не сами сообщения. Если записи были в разных партициях, единого offset для последних двух нет.

В примере с двумя последними сообщениями в Kafka:

  1. Определить оффсеты последних двух сообщений, которые клиент уже прочитал.

  2. Установить оффсеты на начальные значения, соответствующие этим сообщениям.

  3. Прочитать сообщения с установленными оффсетами из темы Kafka.


Приходилось ли вам писать JSON? С помощью чего вы писали JSON?

Расскажите о реальном опыте. JSON можно писать в текстовом редакторе или получать сериализацией данных: например, JSON.stringify в JavaScript или json.dumps в Python. Проверяйте синтаксис и согласованную схему; JSON является форматом данных, а не языком программирования.

Эта страница была полезной?