Introducing DRPC: Our Replacement for gRPC

Building a new decentralized storage platform from the ground up in Go, obviously, we considered using gRPC to simplify our development process in peer-to-peer remote procedure calling. In fact, I’m not even sure we really considered anything else. Using gRPC for us was a deliberate decision to avoid using an innovation token. How could gRPC be the wrong choice? It has impressive credentials and wide usage. We were always disappointed Google didn’t release a standard RPC implementation with proto2. With an otherwise previously strongly positive experience with protocol buffers, we were excited to jump all in to the new protobuf RPC land.

Fast forward to the latter half of 2019, and we had 170k lines of Go, a beta network of over 4 PB, real live active users, and it turns out the gRPC bed we made for ourselves was not all roses, and we kind of pooped just a little in it. Just a little bit. This much ->||<-. So not a lot, but still.

So we rewrote gRPC and migrated our live network…

4 Likes

:rofl:
Are you just checking to see whether people actually read it? Haha

Speaking of which…

gRPC stands for something with a G, Remote Procedure Call

There are 2 names at the top, but now I’m really curious who the joker is. :smiley:

But seriously though… what does the D stand for? Something with a D? It’s actually not mentioned anywhere that I could find.
Maybe Drop-in Remote Procedure Call?

Either way, I appreciate these contributions to open source!

1 Like

The idea was to create a dumb version of grpc without all the features that we don’t need. So d stands for dumb.

1 Like

Haha, I see why it has been left out the blogpost then.

maybe we should call it “downsized” RPC? :slight_smile:

:rofl: one more in the hat: Debloat RPC

When I read the title I think “Decentralized” but this isn’t relevant

We’re so happy that people are enjoying and reading the post! our team puts a lot of time and thought into the blog, so its great to hear that people are taking the time to engage with it :slight_smile:

6 Likes

can i ask general question rpc in here?

Hello @bokunodev ,
Welcome to the forum!

About the DRPC protocol - sure or your question should be related to Storj (we do not use gRPC).

1 Like

hi i’ve fould the solution for that one.

though i have another problem. drpc always return context.Canceled when error happen.
is this intentional? is there a plan for fixing this?

in my case, i do client certificate based auth and use the wrong cert. and the logged error message is not what i was expecting.

Hi @bokunodev, I think this might be relevant to your question drpcmanager: cancel stream with error when terminated by kylecarbs · Pull Request #31 · storj/drpc · GitHub which is closed by this commit: drpcmanager: expose error from transport failures · storj/drpc@9206537 · GitHub

2 Likes