Font size
WorksheetsКодирование и эволюция
Total questions: 44
Worksheet time: 29mins
Чем характеризуется поэтапное развертывание (staged rollout)?
Новая версия развертывается на нескольких узлах и проверяется, работает ли она без проблем
Новая версия развертывается на всех узлах и проверяется, работает ли она без проблем
Постепенно обходятся все узлы
Нет простоя сервиса
Могут ли сосуществовать в системе в один и тот же момент времени старые и новые версии кода, форматы?
Могут
Не могут
Обратная совместимость это - ?
Новый код способен читать данные, записанные более старым кодом
Старый код способен читать данные записанные более новым кодом
Новый код не способен читать данные, записанные более старым кодом
Старый код не способен читать данные записанные более новым кодом
Прямая совместимость - это ?
Старый код не способен читать данные записанные более новым кодом
Новый код способен читать данные записанные более старым кодом
Старый код способен читать данные записанные более новым кодом
Новый код не способен читать данные записанные более старым кодом
Чего добиться сложнее?
Обратной совместимости
Прямой совместимости
Ничего, все возможно
С какими представлениями данных обычно имеют дело программы (в рамках 4 главы)?
Хеш-таблица
Структура
Дерево
Последовательность байтов
Что такое кодирование (encoding) в рамках 4 главы изучаемой книги?
Способ преобразования из представления в памяти в последовательность байтов
Способ преобразования из последовательности байтов в представления в памяти
Способ преобразования объекта или структуры данных в такой формат, который можно легко сохранить или передать
Десериализация - это операция обратная
Кодированию (encoding)
Сериализации (serialization)
Маршалинг (marshalling)
Парсинг (parsing)
Какие серьезные проблемы есть для встроенных пакетов поддерживающих преобразования объектов из памяти в последовательности байтов в языках программирования?
Кодирование привязано к конкретному языку
Низкая эффективность
Проблемы прямой и обратной совместимости
Проблемы с безопасностью
О каких наиболее популярных текстовых форматах, независимых от языка программирования говорится в 4 главе?
JSON
XML
CSV
BinaryFormatter
В ... и CSV невозможно различать число и строку, состоящую из цифр (разве что с помощью ссылки не внешнюю схему)
(a)
... различает числа и строки, но не целочисленные значения и значения с плавающей точкой
и не позволяет задать их точность
(a)
Какие текстовые форматы хорошо поддерживают строки и символы в кодировке Unicode?
CSV
JSON
XML
Какие текстовые форматы НЕ имеют поддержки схем, вследствие чего значение каждого столбца и строки приходится определять приложению?
XML
CSV
JSON
Какой формат данных автор предлагает использовать внутри организации?
CSV
JSON
XML
Двоичное кодирование
Какой формат является двоичным форматом кодирования JSON?
Thrift
MessagePack
Protocol Buffers
Avro
Найдите схему, которую требует Thrift для кодирования данных:
{ "userName": "Martin", "favoriteNumber": 1337 }
struct Person {
1: required string userName,
2: optional i64 favoriteNumber,
}
message Person {
required string user_name = 1;
optional int64 favorite_number = 2;
}
Сколько различных двоичных форматов кодирования в библиотеке Thrift?
1
2
3
4
О каком формате речь? "Здесь у каждого поля есть сигнатура типа и при необходимости указание длины. Встречающиеся в данных строки также преобразуются в кодировку ASCII"
BinaryProtocol
CompactProtocol
DenseProtocol
Чем формат кодирования CompactProtocol отличается от BinaryProtocol?
Тип поля и номер тега упаковывается в один байт
Использование целых чисел переменной длины
Тип поля и номер тега упаковывается в два байта
Использование целых чисел постоянной длины
Что такое эволюция схемы?
Изменение схемы с течением времени
Возможность безопасно изменять формат данных со временем, не ломая существующие системы, которые еще не обновились
Набор правил и возможностей системы сериализации, который позволяет гибко и безопасно изменять формат данных во времени, обеспечивая сосуществование разных версий приложений
Каким образом обеспечивается прямая совместимость при добавлении нового поля в схему?
Задается новый номер тега для поля
Старый код игнорирует поле с непонятным тегом
Статический анализатор определяет сколько байт пропустить
Статический анализатор определяет сколько байт прочитать
О каком нюансе нельзя забывать при добавлении нового поля в схему?
Поле должно быть required
Поле должно быть optional
Поле должно быть repeated
Поле должно быть visible
Можно ли поменять тип данных в схеме?
Нет
Да
Да, но существует риск потери точности полей
Да, но существует риск усечения полей
Какой пакет засветился в УКЗ по Банку для airflow-de?
Protocol Buffers
Apache Thrift
Apache Avro
Использует ли Avro схему для задания структуры кодируемых данных?
Да
Нет
Какие особенности существуют для двоичного формата кодирования Avro?
В схеме нет номеров тегов
Нет ничего что идентифицирует поля и их типы данных
Целые числа кодируются с помощью кодирования со значениями переменной длинны
Для разбора двоичных данных проходим по полям в схеме в алфавитном порядке
Что такое схема для записи (writer's schema)?
Схема, которую приложение использует для кодирования данных в формат Avro
Схема, которую приложение использует для декодирования данных
Схема для чтения и схема для записи для формата Avro обязательно должны совпадать?
Да
Нет
Должны быть совместимы
Откуда читающий данные код знает, с помощью какой схемы для записи кодировались данные?
Схема вставляется в начало одного из передаваемых файлов
Используется номер версии в начале каждой закодированной записи, версии схемы хранятся в БД
Отправка схемы при с установке соединения между процессами
Схема вставляется в начало каждого передаваемого файла
Самое важное преимущество подхода Avro по сравнению с Protocol Buffers и Thrift?
Схема содержит номера тегов
Схема не содержит номера тегов
Отсутствие проверок во время кодирования/декодирования
В чем заключается удобство двоичных форматов кодирования, основанных на схемах?
Намного компактнее "двоичного JSON"
Схема - вид документации и она всегда актуальна
БД данных схем не дает проверять прямую и обратную совместимость изменений схемы при развертывании
Проверка типов данных во время компиляции для языков программирования со статической типизацией
Какие распространенные способы движения данных рассматриваются в 4 главе?
Поток данных через БД
Поток данных через сервисы REST и RPS
Поток данных через общее адресное пространство
Поток данных передачи сообщений
Какие простые изменения разрешены в большинстве реляционных БД?
Добавление нового столбца
Удаление столбца
Добавление нового столбца со значение null по умолчанию
Удаление столбца со значением null по умолчанию
Предоставляемый сервером API называется?
сервис
клиентский интерфейс
протокол передачи данных
Главная цель сервис-ориентированной и микросервисной архитектур?
Снизить связанность
Повысить сопровождаемость и эволюционируемость
Обеспечить независимое развертывание компонентов
Повысить производительность
Какие популярные подходы к проектированию web-сервисов существуют?
RPC
REST
Event-Driven Architecture
SOAP
... - основанный на формате XML протокол для выполнения запросов к сетевым API
(a)
Пользователи какого подхода к проектированию web-сервисов сильно зависят от поддержки утилит, генерации кода и различных IDE?
RPC
REST
SOAP
RPC - это (в рамках 4 главы) ?
remote procedure call
random protocol call
recursive program control
real-time packet channel
Основная идея удаленного вызова процедур (RPC)?
Абстрагировать сетевое взаимодействие, чтобы вызвать функцию/метод на удалённом компьютере так же просто, как если бы это был локальный вызов в рамках одной программы
Обеспечить максимально возможную скорость передачи данных по сети, превосходящую все другие протоколы
Заменить все локальные вызовы функций в программе на удалённые для лучшей масштабируемости
Сделать сетевое взаимодействие видимым и явным для программиста, заставляя его вручную работать с сокетами и потоками
Фундаментальные недостатки RPC?
Проблемы сети
Передаются ссылки на объекты
Потеря ответов при запросах
Сетевые запросы занимают одно и тоже время
Клиент и сервис могут быть реализованы на разных языках программирования
Какие преимущества дает использование брокера сообщений по сравнению с RPC?
повышает надежность системы
предотвращает потерю сообщений
нет привязки к IP-адресам, номерам портов
может отправлять одно сообщение нескольким получателям
Акторная модель характеризуется?
Актор - один клиент/сущность
Взаимодействие между акторами осуществляется путем отправки и получения асинхронных сообщений
Доставка сообщений гарантируется
Необходимостью заботиться о потоках выполнения
