Protobuf

Создание событийно-управляемых микросервисов - Глава 3 - Обмен информацией и контракты на передачу данных

Создание событийно-управляемых микросервисов - Глава 3 - Обмен информацией и контракты на передачу данных

Переводы: EN

Управляемая событиями модель, сильно зависит от КАЧЕСТВА событий.

События хорошего качества:

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

События хорошего качества реализуются с помощью правильных инструментов:

  • используйте форматы Avro/Thrift/Protobuf и никогда не используйте JSON!
  • используйте правильный брокер событий (например, Pulsar)

События хорошего качества проектируются так, чтобы:

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

Эти темы раскрыты в главе 3 книги, которую мы сейчас изучаем:

Высоконагруженные приложения - Глава 4 - Кодирование и эволюция

Высоконагруженные приложения - Глава 4 - Кодирование и эволюция

Переводы: EN

Ранее в этом году книжный клуб нашей компании изучил отличную книгу:

Martin Kleppmann - Designing Data-Intensive Applications

Мартин Клеппман - Высоконагруженные приложения. Программирование, масштабирование, поддержка

Это - лучшая книга о создании комплексных масштабируемых программных систем, которые я когда-либо читал. 💪

Как обычно, я подготовил краткий обзор и майнд-мапу.

Глава 4:

  • Что такое эволюционируемость. Обратная и прямая совместимость
  • Подходы к кодированию данных:
    • JSON, XML и их двоичные варианты
    • Thrift и Protobuf
    • Apache Avro
  • Модели работы с потоком данных
    • Через базы данных
    • Через сервисы: REST, SOAP, RPC и их будущее развитие
    • Через брокеры сообщений - когда они лучше, а когда нет

Намного больше деталей в майнд-мапе: