> Along with that, many of the performance boosts that are provided by gogo
have been addressed in the official Go lib, golang/protobuf
<https://github.com/golang/protobuf>, as of v1.4.0
<https://blog.golang.org/protobuf-apiv2>.

This surprised me a little, and sounds awesome - but I can't find any more
information about it.  Does v1.4.0 generate code for the serialisation /
deserialisation function or still rely on Golang reflection?  Does it allow
for the neat tricks to get rid of pointers and all the allocations?
Anything I can read about this would be super useful.

> Off the top of my head, I would think checking in with the Cortex and
Thanos projects is probably a good idea, I know both have a good amount of
optimizations optimizing allocations, so it would be good to check that
these would still be possible.

>From a Cortex PoV, we have copies of these protos so I don't think this
would be too much of a problem, but I'd defer to people who know better
than me.

Cheers

Tom

On Wed, Apr 28, 2021 at 10:07 AM Frederic Branczyk <[email protected]>
wrote:

> I'd be very happy with this. One consideration that we should take
> (certainly not blocking this but should keep in mind) is how this would
> affect immediate downstream users. Off the top of my head, I would think
> checking in with the Cortex and Thanos projects is probably a good idea, I
> know both have a good amount of optimizations optimizing allocations, so it
> would be good to check that these would still be possible.
>
> On Tue, 27 Apr 2021 at 22:51, Austin Cawley-Edwards <
> [email protected]> wrote:
>
>>
>> Hi all,
>>
>> The protobuf library used in Prometheus, gogo/protobuf
>> <https://github.com/gogo/protobuf>, is no longer actively maintained
>> (activity largely stopped pre-2020, looking for new ownership
>> <https://github.com/gogo/protobuf/issues/691>). Along with that, many of
>> the performance boosts that are provided by gogo have been addressed in the
>> official Go lib, golang/protobuf <https://github.com/golang/protobuf>,
>> as of v1.4.0 <https://blog.golang.org/protobuf-apiv2>.
>>
>> Many projects that used gogo/protobuf have since switched to the official
>> lib (ex: Istio <https://github.com/istio/istio/pull/17132>, Envoyproxy
>> <https://github.com/envoyproxy/go-control-plane/issues/213>), largely
>> for eco-system compatibility reasons now that performance is not a factor.
>> The gogo-compiled protobufs are not compatible with any golang-compiled
>> protobufs, and vice-versa. This makes consuming external protobuf APIs
>> impossible unless they also maintain a gogo version, which is not common.
>>
>> I'm wondering if anyone has done work in this area recently, and if the
>> community agrees it's a net benefit switching to the official
>> golang/protobuf implementation.
>>
>> *What this would mean for Prometheus*
>>
>> Looking at the history of protobuf in Prometheus, it seems like both
>> golang/protobuf and gogo/protobuf were until the end of 2017, when it then
>> made sense to consolidate onto gogo (#3346
>> <https://github.com/prometheus/prometheus/issues/3346>) (#3394
>> <https://github.com/prometheus/prometheus/pull/3394>).
>>
>> As noted in the above issues, the official golang/protobuf package is
>> still present in vendored files, so it is just the Prometheus protos that
>> would need to be updated. The build procedures (mainly
>> scripts/genproto.sh
>> <https://github.com/prometheus/prometheus/blob/75e505babb9bbcefd8849e945814d35c7ce97e9f/scripts/genproto.sh>)
>> have not changed much since the 2017 shift, so the work would be mainly
>> adjusting this back to use golang/protobuf and recompiling the `prompb`
>> package.
>>
>> Does anyone know of other necessary changes/ complications that I'm
>> missing?
>>
>> Thanks all for your time,
>> Austin
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Prometheus Developers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/prometheus-developers/38caa51d-e88a-489b-a045-54144cd1a03fn%40googlegroups.com
>> <https://groups.google.com/d/msgid/prometheus-developers/38caa51d-e88a-489b-a045-54144cd1a03fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Prometheus Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/prometheus-developers/CAOs1Umy%2BhjN10r9q_MOwZ2wHL-0MEDZWw_2SCUPW%2B%3D8xpKvdQw%40mail.gmail.com
> <https://groups.google.com/d/msgid/prometheus-developers/CAOs1Umy%2BhjN10r9q_MOwZ2wHL-0MEDZWw_2SCUPW%2B%3D8xpKvdQw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-developers/CAB58Z13WjbHrdGwZ-WEd94qbHwVk7BG2s5Kx5v1Vhp9vaLx%3Dxw%40mail.gmail.com.

Reply via email to