awesome-everything EN
↑ Обратно к восхождению

API

gRPC и Protobuf: тест с множественным выбором

Суть Синтез юнита gRPC/Protobuf с множественным выбором — совместимость по field tag, эволюция схемы, формы streaming, deadlines и решение gRPC-против-REST на границе.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов поперёк всего юнита. Каждый отражает реальное решение — изменение схемы, которое ты подписываешь, форму streaming для выбора, deadline для установки — а не определение для заучивания. На проводе едут номера, а не имена, и большинство этих ловушек рождается из того, что про это забыли.

Цель

Убедись, что связываешь wire format Protobuf, дисциплину field tag, четыре формы вызовов, deadlines и границу gRPC-против-REST — синтез, к которому вёл урок.

Викторина

Коллега переименовывает поле Protobuf с discount_pct на discountPercent и тем же коммитом перенумеровывает его с 3 на 4, чтобы номера шли подряд. Какое изменение безопасно, а какое портит данные?

Викторина

Нужно удалить устаревшее поле с номером 3 из сообщения, живущего в production. Каков senior-ход?

Викторина

Новая сборка producer'а добавляет поле 7 и шлёт его consumer'ам, всё ещё на старой схеме; тем временем старый producer вовсе опускает поле 7, общаясь с новыми consumer'ами. Что происходит в каждом направлении?

Викторина

Дашборду нужно, чтобы сервер пушил живые обновления цены каждому клиенту, пока тот подписан, без запроса на каждое обновление. Какая форма RPC подходит и какова частая ошибка?

Викторина

Клиентский вызов возвращает DEADLINE_EXCEEDED, но логи сервера показывают, что обработчик завершился и закоммитил запись. Как это читать и каков надёжный фикс?

Викторина

Публичный REST-эндпоинт, дёргаемый напрямую из React SPA, тормозит под нагрузкой. Коллега предлагает перевести его на нативный gRPC, чтобы браузер звал его напрямую. Каков senior-ход?

Итог

Сквозная линия юнита — один факт: провод несёт field tag и значения, никогда имена. Поэтому переименование бесплатно, а перенумерация или переиспользование номера — молчаливая порча; add-only эволюция с reserved — единственный безопасный путь, и именно она даёт Protobuf двустороннюю backward/forward совместимость. Поверх мультиплексирования HTTP/2 четыре формы вызовов отражают, кто стримит (unary, server, client, bidi), deadlines распространяются и могут провалить caller’а, чья работа реально удалась, а решение на границе остаётся прежним: gRPC между твоими сервисами, REST/JSON или Connect-RPC у браузера.

Продолжить восхождение ↑gRPC и Protobuf: тест на свободное припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.