home.social

#protobuf — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #protobuf, aggregated by home.social.

fetched live
  1. 🎉 Wow, congratulations! 🎉 After years in the wilderness, #Protobuf finally caught up to 2016 with #LSP #support. Someone give these folks a #participation #trophy 🏆 for joining the club where everyone else was already dancing. 💃🕺
    buf.build/blog/protobuf-lsp #technews #development #HackerNews #ngated

  2. Как я придумывал замену Redis и что из этого получилось

    Некоторое время назад мне пришла задача спроектировать высокопроизводительный балансировщик нагрузки для протокола Diameter. Через 3 месяца задача исчезла, так как как оказалось слишком долго и дорого, но в итоге балансировщик был сделан и имеется его MVP которое готово к установке как на реальное железо так и в облаке. В итоге продукт получился неплохим, и он с лихвой выигрывал имееющееся решение в той компании, по производительности был выигрыш раз в 6 по ресурсам раз в 100. Но суть не в этом, а в том что балансировщик был кластерным и умел хранить сессии в Redis. Решение было сделано, оно показало работоспособность, все хорошо, но меня не устраивала производительность. В тот момент я столкнулся с очень интересной проблемой - по каким то причинам я не мог пробить барьер в 5-7К Diameter Transactions per second. В принципе 5-7К TPS было неплохо, но проблемным участком как показал анализ был Redis. Проведя немного времени я смог добиться приемлемого результать и производительность поднялась до 20К TPS но там были другие проблемы.

    habr.com/ru/articles/1067130/

    #c++ #redis #grpc #protobuf #inmemory_database #highload #keyvalue #cache #latency #redisdb

  3. 🪧 The CPU Cost of Protobuf Varints in Go: Do fixed-size integers serialize faster than varints? We benchmark the CPU overhead of continuation-bit parsing using Go, vtprotobuf, and hyperpb.
    kmcd.dev/posts/protobuf-varint
    #Protobuf #Go #Performance #Software-architecture

  4. 🪧 The CPU Cost of Protobuf Varints in Go: Do fixed-size integers serialize faster than varints? We benchmark the CPU overhead of continuation-bit parsing using Go, vtprotobuf, and hyperpb.
    kmcd.dev/posts/protobuf-varint
    #Protobuf #Go #Performance #Software-architecture

  5. CONTRACT: одна схема вместо N×M сериализаторов

    Одна C+±схема — protobuf, binary, JSON, YAML и structured logging без ручных маппингов. В статье разбираю, как CONTRACT отделяет стабильный контракт типа от конкретных форматов, зачем нужны BASE, PROPERTY и REFERENCE и как атрибуты полей задают общую политику для разных адаптеров. Всё - на реальном коде из репозитория: YAML-конфиг, структурированный лог и сравнение производительности с libprotobuf. GitHub.

    habr.com/ru/articles/1065488/

    #c++ #c++26 #c++_библиотеки #open_source #protobuf #сериализация #logger #config #json #yaml

  6. Как мы сделали протобаф-адаптер CONTRACT быстрее libprotobuf

    CONTRACT умеет писать protobuf-совместимый wire-формат — и в 20 из 28 замеров обогнал по скорости настоящий libprotobuf, включая его собственный сгенерированный protoc-код. Разбираем три инженерных решения, которые это дали, и два сценария, где не получилось. CONTRACT — это C++ библиотека сериализации без кодогена и рантайм-рефлексии: схема объявляется один раз, в самой C+±структуре, и работает сразу под разные форматы.

    habr.com/ru/articles/1064148/

    #с++20 #с++ #protobuf #highload #serialization #adapters

  7. Как я посадил WireMock.Net на gRPC стероиды

    WireMock.Net умеет мокать gRPC . Но для этого он заставляет разработчика таскать .proto файлы и поддерживать лишнюю конфигурацию. Я контрибьютил в проект несколько месяцев, разобрался в кишках и написал своё расширение WireMock.Grpc.Protobuf Пакет предлагает gRPC моки через типизированные контракты Google.Protobuf . Получилось короче, надёжнее и заметно удобнее. В статье покажу, почему мой способ удобнее стандартного, как всё устроено под капотом и зачем вашему проекту пакет WireMock.Grpc.Protobuf Кстати, подобные инженерные разборы, open-source и внутренности .NET я регулярно публикую в Telegram-канале StepOne . Если статья зайдёт — заглядывайте. dotnet add package WireMock.Grpc.Protobuf

    habr.com/ru/articles/1063162/

    #grpc #proto #protobuf #wiremock #google #csharp #dotnet #nuget #github #mock

  8. 🪧 Beating Go's encoding/json with Schema-Guided ProtoJSON: How protojsonx compares to standard protojson, JSON, and vtproto.
    kmcd.dev/posts/benchmarking-pr
    #Protobuf #Go #Performance #Json #Protojsonx

  9. 🪧 gRPC-Web Should Have Fixed gRPC: gRPC-Web should have been the pressure that made gRPC simpler, more inspectable, and better suited for the web.
    kmcd.dev/posts/grpc-web-should
    #Grpc #Grpc-web #Protobuf #Connectrpc

  10. 🪧 gRPC-Web Should Have Fixed gRPC: gRPC-Web should have been the pressure that made gRPC simpler, more inspectable, and better suited for the web.
    kmcd.dev/posts/grpc-web-should
    #Grpc #Grpc-web #Protobuf #Connectrpc

  11. Великая ересь, или Как использовать protobuf без контракта

    Привет! На связи Влад, разработчик product-facade — сердца витрины Ozon и одного из самых высоконагруженных сервисов, который выдерживает до 2,2 млн RPS. В прошлой моей статье я рассказывал об одном из архитектурных вызовов, с которым мы столкнулись в процессе работы. В этот раз продолжим тему микросервисной архитектуры и поговорим о том, что происходит, когда привычная строгость контрактов начинает мешать. Одна из ключевых причин использования gRPC для связи между сервисами — строгий protobuf-контракт. Он даёт типизацию, фиксирует схему данных и снижает риск случайно сломать интеграцию. Но иногда случаются ситуации, когда эти плюсы загоняют нас в рамки. Например, когда сервис просто передаёт данные дальше, но его всё равно приходится обновлять из-за изменений, которые нужны только конечному потребителю. В таких случаях полезно знать, какие механизмы protobuf позволяют работать с контрактом более гибко, не отказываясь от него полностью. В статье расскажу о трёх из них и приведу примеры, для чего они могут применяться.

    habr.com/ru/companies/ozontech

    #gRPC #protobuf #микросервисы #контракт #проксирование #передачаданных #строгийконтракт #механизмыprotobuf #обновлениесервиса #ozon_tech

  12. 🪧 Making Dynamic Protobuf Fast in Go: Using Buf’s hyperpb to speed up FauxRPC’s runtime-loaded Protobuf request path.
    kmcd.dev/posts/dynamic-protobu
    #Protobuf #Go #Performance #Software-architecture

  13. 🪧 Making Dynamic Protobuf Fast in Go: Using Buf’s hyperpb to speed up FauxRPC’s runtime-loaded Protobuf request path.
    kmcd.dev/posts/dynamic-protobu
    #Protobuf #Go #Performance #Software-architecture

  14. 🪧 Speeding Up ProtoJSON: Benchmarking protojsonx: How protojsonx compares to standard protojson, JSON, and vtproto.
    kmcd.dev/posts/benchmarking-pr
    #Protobuf #Go #Performance #Json #Protojsonx

  15. 🪧 Proxy, Record, and Mock gRPC APIs with FauxRPC: Stop writing mock stubs by hand. How FauxRPC uses smart proxying, reflection, and CEL to automate your API testing.
    kmcd.dev/posts/fauxrpc-proxy/
    #Fauxrpc #Connectrpc #Grpc #Protobuf #Api #Rpc #Go #Golang #Http3

  16. 🪧 Proxy, Record, and Mock gRPC APIs with FauxRPC: Stop writing mock stubs by hand. How FauxRPC uses smart proxying, reflection, and CEL to automate your API testing.
    kmcd.dev/posts/fauxrpc-proxy/
    #Fauxrpc #Connectrpc #Grpc #Protobuf #Api #Rpc #Go #Golang #Http3

  17. Как пробросить свой UDP-транспорт через RustDesk без патча сервера

    Привет, Хабр! Есть RustDesk-инфраструктура: rendezvous-сервер ( hbbs ) для NAT traversal и relay ( hbbr ) для проброса трафика, когда P2P не получился. И есть свой UDP-транспорт реального времени для видео (у меня это EVRT), который хочется гнать напрямую между пирами , минуя relay — ради задержки. Вопрос: как двум пирам договориться о прямом UDP-канале, если они общаются только через RustDesk? Ответ короткий: RustDesk relay — это «тупая труба» . Он передаёт зашифрованные PeerMessage между пирами и не парсит их содержимое . Значит, в эти сообщения можно подложить свои данные — и сервер прозрачно их пробросит, ничего не зная про твой протокол.

    habr.com/ru/articles/1052332/

    #rustdesk #rust #udp #nat_traversal #p2p #protobuf #relay #сетевые_протоколы #видеостриминг #transport

  18. 🪧 Exploring Protocol Buffers Interactively: Announcing protobuf.kmcd.dev, an interactive explainer and playground for exploring the binary details of Protocol Buffers.
    kmcd.dev/posts/interactive-pro
    #Protobuf #Wasm #Go #Webassembly #Dataviz

  19. 🪧 Exploring Protocol Buffers Interactively: Announcing protobuf.kmcd.dev, an interactive explainer and playground for exploring the binary details of Protocol Buffers.
    kmcd.dev/posts/interactive-pro
    #Protobuf #Wasm #Go #Webassembly #Dataviz

  20. 🪧 Introducing ProtoDocs: A protobuf-first documentation browser for APIs that deserve better than ugly generated docs.
    kmcd.dev/posts/introducing-pro
    #Protobuf #Grpc #Connectrpc #Documentation #Go #Rpc

  21. 🪧 Introducing ProtoDocs: A protobuf-first documentation browser for APIs that deserve better than ugly generated docs.
    kmcd.dev/posts/introducing-pro
    #Protobuf #Grpc #Connectrpc #Documentation #Go #Rpc

  22. Mapping dynamic JSON objects to `google.protobuf.Struct` in your Go APIs? You might actually be hurting your performance. Unstructured Protobuf loses the compression benefits of static schemas, meaning a simple key and value can take up nearly double the space of compact JSON.

    I wrote about the hidden structural costs and what the wire format actually looks like under the hood: kmcd.dev/posts/hidden-cost-of- #go #protobuf #performance #softwarearchitecture