Size: a a a

2020 July 05

AZ

Alex Zhukovsky in rust_offtopic
унылый ролик
источник

p

polunin.ai in rust_offtopic
Прикольный
источник

AZ

Alex Zhukovsky in rust_offtopic
Dmitry Rodionov
Сложно сказать насколько больше могу говорить :) С одной стороны микросервисы, с другой их не 200 и есть возможность иметь для всех один релизный график. Новые поля в протокол могут доезжать каждый спринт. Пока контроль над всеми клиентами есть, может поменяться. Обратная совместимость все равно важна из-за деплоев разных версий и т к некоторые данные в хранилищах тоже лежат в протобафе. protostuff пользоваться не доводилось. Спасибо за находку, в юзкейсах не вижу мобилки, мне может пригодиться. Под мобилки есть protobuf-lite который тоньше обычного протобафа (в lite версии нет рефлексии). Один из плюсов всплывавших flat buffers - это хедер онли либа, она очень тонкая, но вот пока обросла не всеми фичами и по популярности сильно уступает протобафу. Из замеченного это отсутствие удобной отладочной принтилки буферов и конвертации из/в JSON, вялая активность в репе (т е делаю вывод что сам гугл не особо смотрит на fbs), достаточно небрежный подход к ошибкам flatc, которые вылетают юзеру. Чинил там сегфолт, пофиксил его выдачей ошибки и мейнтейнеру было пофиг что сообщение не говорит юзеру что же именно пошло не так. Спрашивал как лучше протестить это и тоже без ответа остался. Приняли фикс сегфолта на ошибку и все. Может быть мне стоило быть настойчивее :) Что-то могло поменяться, плотно смотрел это все зимой. Также при создании сообщения достаточно неудобно собирать вложенные структуры. У протобафа с этим сильно проще. Но это плата за zero copy. Возможно либами это подтянется (или уже подтянулось). Кстати fbs можно конвертировать из протобафа (как схемы так и сообщения). Можно по fbs схеме получать json схему. Есть еще один zero-copy протокол - CapNProto. Его использовать не приходилось, но хотел бы потыкать.

По поводу видоса. Сложилось мнение что их проблема была не в протобафе, а в организационных процессах. Могли они также сделать основную протобаф версию и экстеншены в протокол? Выглядит так что могли. Просто люди лучше знают и понимают JSON, поэтому смогли придумать для него решение которое им подошло. Может быть у них были еще какие-то внутренние причины которые не прослеживаются на докладе. Новые поля можно добавлять не требуя пересборки всех клиентов. Но и эту пересборку можно достаточно удобно организовать. Например, используя такого монстра как bazel (про это могу отдельно поделиться если интересно). Сразу видно у кого какие зависимости по коду, и какой сервис какие proto сущности использует. Если еще вопросы есть буду рад поделиться чем могу :)
кстати для особых извращенцев есть jsonb
источник

DR

Dmitry Rodionov in rust_offtopic
Alex Zhukovsky
кстати для особых извращенцев есть jsonb
есть еще cbor, на него хоть rfc есть
источник

DR

Dmitry Rodionov in rust_offtopic
а так да, много разных извращений напридумывать успели :)
источник

AZ

Alex Zhukovsky in rust_offtopic
прост есть распространенная технология с которой сложно продолбаться
источник

AZ

Alex Zhukovsky in rust_offtopic
и в которую умеют все языки
источник

AZ

Alex Zhukovsky in rust_offtopic
логично её взять, если нет проблем
источник

SP

Stanislav Popov in rust_offtopic
samocbor
источник

DR

Dmitry Rodionov in rust_offtopic
Alex Zhukovsky
прост есть распространенная технология с которой сложно продолбаться
могу рассказать норм историю про продолбаться и JSON (на самом деле JS конечно, не JSON). В базе решили генерировать околослучайные bigint, они получались большими, и на фронте для них проявлялась потеря точности т к в JS все number. А выглядело это так, что фронт получил с бека id сущности, а потом по нему же ничего не нашел в бекенде.

А если серьезно, то я ничего против JSON не имею, опять же поинт в том что использование бинарного протокола перестало быть болью. Есть нормальный способ поддерживаемо его использовать. Обычно же и бинарные версии жсона не сразу начинают использовать, а когда что-то упираться начинает. Так что да, как всегда все от задачи. Иногда имеет смысл сразу использовать бинарный протокол если понятен путь развития продукта и есть задачи где он хорошо впишется. А можно и с JSON начать, при необходимости пожать его или пересесть на бинарный протокол. Того же тулинга вокруг GRPC понаписано очень много, может быть достаточно просто затыкать дырки готовыми решениями

Ты кстати рассказывал про задачу с развесистыми JSON документами, их можно вполне и в proto хранить/передавать. На больших документах особенно заметно разницу будет. Чем кстати закончилась история с монгой?
источник

AZ

Alex Zhukovsky in rust_offtopic
Dmitry Rodionov
могу рассказать норм историю про продолбаться и JSON (на самом деле JS конечно, не JSON). В базе решили генерировать околослучайные bigint, они получались большими, и на фронте для них проявлялась потеря точности т к в JS все number. А выглядело это так, что фронт получил с бека id сущности, а потом по нему же ничего не нашел в бекенде.

А если серьезно, то я ничего против JSON не имею, опять же поинт в том что использование бинарного протокола перестало быть болью. Есть нормальный способ поддерживаемо его использовать. Обычно же и бинарные версии жсона не сразу начинают использовать, а когда что-то упираться начинает. Так что да, как всегда все от задачи. Иногда имеет смысл сразу использовать бинарный протокол если понятен путь развития продукта и есть задачи где он хорошо впишется. А можно и с JSON начать, при необходимости пожать его или пересесть на бинарный протокол. Того же тулинга вокруг GRPC понаписано очень много, может быть достаточно просто затыкать дырки готовыми решениями

Ты кстати рассказывал про задачу с развесистыми JSON документами, их можно вполне и в proto хранить/передавать. На больших документах особенно заметно разницу будет. Чем кстати закончилась история с монгой?
сидим в монге, по совокупности причин
источник

AZ

Alex Zhukovsky in rust_offtopic
в том числе потому что главный архитектор не верит что мы что-то выиграем если возьмем реляционку, частично потому что не выдлили на это ресурсов, эта доработка не влезает в эпик по вресени
источник

AR

Aleksandr Razumov in rust_offtopic
grpc не только про бинарность, основной каеф в описании протокола
источник

AR

Aleksandr Razumov in rust_offtopic
точнее в схеме
источник

DR

Dmitry Rodionov in rust_offtopic
Aleksandr Razumov
grpc не только про бинарность, основной каеф в описании протокола
+ и генерировать сразу клиент и сервер
источник

DR

Dmitry Rodionov in rust_offtopic
как сваггер для бинарного протокола
источник

DR

Dmitry Rodionov in rust_offtopic
@ernado13 привет кстати из destiny, видел твои коммиты ;)
источник

DR

Dmitry Rodionov in rust_offtopic
Alex Zhukovsky
в том числе потому что главный архитектор не верит что мы что-то выиграем если возьмем реляционку, частично потому что не выдлили на это ресурсов, эта доработка не влезает в эпик по вресени
это бывает :) ресурсы под исследования тяжко выбиваются, да и с одной бд на другую тоже нелегко переползать когда уже устаканилось все
источник

AR

Aleksandr Razumov in rust_offtopic
Dmitry Rodionov
@ernado13 привет кстати из destiny, видел твои коммиты ;)
ого, привет)

жаль что тера в России закрылась
источник

DR

Dmitry Rodionov in rust_offtopic
Aleksandr Razumov
ого, привет)

жаль что тера в России закрылась
ага, прям печально было сообщения игроков в комментах читать
источник