Size: a a a

2020 July 04

DR

Dmitry Rodionov in rust_offtopic
Nick Linker
Схемы для json можно делать сильно позже, по факту. Мигрировать json гораздо проще, иногда достаточно взглянуть на него, чтобы понять, это старая или новая версия.
json можно посмотреть на мобилках или на js клиенте, и делается это намного проще, чем pb.
Одно из сильных преимуществ: можно смотреть и понимать некорректно сформированное или даже неполное json сообщение и уже по нему строить какие-то выводы.

Наконец, в этом видео, если ты смотрел, очерчены главные и самые болезненные грабли, которые связаны с версионированием протоколов, в микросервисной архитектуре крайне желательно уметь независимо апгрейдить каждый из сервисов, и даже больше -- в процессе роллаута могут работать экземпляры разных версий одновременно.
Это можно сделать и на pb с помощью умной архитектуры и такой-то матери, но как мы видим гораздо эффективнее вообще избегать подобных проблем.
те же pb либы доступны и на мобилке, можно также попросить либу вывести декодированный протобаф в читаемом виде по которому также можно определить какие поля есть каких нет. Некоторый оверхед есть и решение о том что перевешивает отталкивается от задачи. Если куча данных летит с мобилки на сервер и мы хотим наиболее эффективно использовать канал, то есть кирпичики в виде протобафа которые позволяют это реализовать без боли (или с минимальным оверхедом) Вопрос должен ли браузер общаться с бекендом через GRPC, достаточно интересный, в браузер придется тащить либу, JSON есть из коробки. Опять же от задачи. Есть разные варианты.

Видос целиком не смотрел, глянул минут 5 c тайминга который ты кинул, посмотрю дальше. По твоим словам не понимаю чем это отличается от двух разных версий приложения использующих разные версии текстового протокола. Также будут поля которые появились в новой версии которые надо игнорить. Также нельзя удалять поля одним релизом, надо сначала депрекейтить, а потом удалять. В протобафе парсер тупо игнорирует поля которые не знает (при этом можно попросить парсер выдать отдельно незнакомые поля чтобы, например, кинуть в лог warning). В целом я согласен, начинать с JSON проще, мой поинт в том, что бинарные протоколы с имеющимся тулингом это не больно и не так чтобы прям сложнее чем JSON который оброс всеми атрибутами микросервисного окружения (версионирование, схемы, openapi и тд). А плюшки бинарного протокола в некоторых задачах могут быть полезными
источник

VV

Victor Victorov in rust_offtopic
источник

NL

Nick Linker in rust_offtopic
Dmitry Rodionov
те же pb либы доступны и на мобилке, можно также попросить либу вывести декодированный протобаф в читаемом виде по которому также можно определить какие поля есть каких нет. Некоторый оверхед есть и решение о том что перевешивает отталкивается от задачи. Если куча данных летит с мобилки на сервер и мы хотим наиболее эффективно использовать канал, то есть кирпичики в виде протобафа которые позволяют это реализовать без боли (или с минимальным оверхедом) Вопрос должен ли браузер общаться с бекендом через GRPC, достаточно интересный, в браузер придется тащить либу, JSON есть из коробки. Опять же от задачи. Есть разные варианты.

Видос целиком не смотрел, глянул минут 5 c тайминга который ты кинул, посмотрю дальше. По твоим словам не понимаю чем это отличается от двух разных версий приложения использующих разные версии текстового протокола. Также будут поля которые появились в новой версии которые надо игнорить. Также нельзя удалять поля одним релизом, надо сначала депрекейтить, а потом удалять. В протобафе парсер тупо игнорирует поля которые не знает (при этом можно попросить парсер выдать отдельно незнакомые поля чтобы, например, кинуть в лог warning). В целом я согласен, начинать с JSON проще, мой поинт в том, что бинарные протоколы с имеющимся тулингом это не больно и не так чтобы прям сложнее чем JSON который оброс всеми атрибутами микросервисного окружения (версионирование, схемы, openapi и тд). А плюшки бинарного протокола в некоторых задачах могут быть полезными
Спасибо, что описал примерные решения проблем выше.
Можно чуть больше узнать о вашей системе?
У вас микросервисы использующие protobuf? Или это какой-то монолит?
Насколько часто сменился протокол за последний год?
Есть ли у вас контроль над всеми клиентами?
Что скажешь про protostuff, доводилось использовать?
источник

p

polunin.ai in rust_offtopic
@vlad20012 то что справа не подсвечивается до эвейта это фича или баг?
источник

H

Hirrolot in rust_offtopic
> справа
> до авейта
источник

H

Hirrolot in rust_offtopic
это как
источник

p

polunin.ai in rust_offtopic
Hirrolot
это как
ну смотри справа подсвечивается FormBuilder. А до эвейта нет этой подскащки.
источник

VB

Vlad Beskrovnyy in rust_offtopic
polunin.ai
@vlad20012 то что справа не подсвечивается до эвейта это фича или баг?
Зависит от того, какие там типы
источник

D

Dika in rust_offtopic
Hirrolot
это как
вертикально до авейта
источник

p

polunin.ai in rust_offtopic
Vlad Beskrovnyy
Зависит от того, какие там типы
FormBuilder везде
источник

p

polunin.ai in rust_offtopic
если убрать эвейт то подсвечивает
источник

H

Hirrolot in rust_offtopic
polunin.ai
ну смотри справа подсвечивается FormBuilder. А до эвейта нет этой подскащки.
ладно мне не понять
источник

EG

Emmanuel Goldstein in rust_offtopic
Emmanuel Goldstein
Ушел на x1.5 в Авито.
В Яндекс имеет смысл идти ради огромной тусовки и огромных масштабов происходящего
источник

VB

Vlad Beskrovnyy in rust_offtopic
polunin.ai
FormBuilder везде
Тогда фича, и ее можно отключить, чтоб всегда показывало
источник

EG

Emmanuel Goldstein in rust_offtopic
Денег в Яндексе не так много, если ты не Император
источник

p

polunin.ai in rust_offtopic
Emmanuel Goldstein
Денег в Яндексе не так много, если ты не Император
кто?
источник

EG

Emmanuel Goldstein in rust_offtopic
polunin.ai
кто?
Бывший технический директор Яндекса
источник

EG

Emmanuel Goldstein in rust_offtopic
imperator@ — это его ник
источник

EG

Emmanuel Goldstein in rust_offtopic
С самомнением у чувака было всё в порядке
источник

H

Hirrolot in rust_offtopic
может это был царь
источник