gRPC Name Resolution & Load Balancing on Kubernetes: Everything you need to know (and probably a bit more)

This page summarizes the projects mentioned and recommended in the original post on dev.to

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • grpc-kuber-load-balancing

    gRPC Name Resolution and Load Balancing on Kubernetes

  • DISCLAIMER: I make lots of mistakes on a daily basis! If you notice any, please let me know. This blog is a digest of many amazing blogs by amazing people. I’ll try to put a link to each one wherever possible. Also you can find links to all the references at the end of the blog as well as a Github Repo for a sample project regarding this subject.

  • grpc-go

    The Go language implementation of gRPC. HTTP/2 based RPC

  • We’re hoping to make this rate at least optional via this pull request but as the time of writing this blog, it’s nothing we can do to circle our way around it.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • grpc-proto

    gRPC-defined protobufs for peripheral services such as health checking, load balancing, etc.

  • The State which was returned by the name resolver in the previous steps contains both a list of endpoints and a configuration called ServiceConfig. One of the main use cases of the ServiceConfig is to decide which load balancing policy to go for (e.g. round_robin). ServiceConfig is based on a proto message but the name resolver returns it in JSON form. Let’s look at an example ServiceConfig:

  • gRPC

    The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

  • The loadBalancingConfig is what we use in order to decide which policy to go for (round_robin in this case). This JSON representation is based on a protobuf message, then why does the name resolver returns it in the JSON format? The main reason is that loadBalancingConfig is a oneof field inside the proto message and so it can not contain values unknown to the gRPC if used in the proto format. The JSON representation does not have this requirement so we can use a custom loadBalancingConfig .

  • proposal

    A repository for gRFCs (by grpc)

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Partially-Implemented Interfaces in Go

    1 project | /r/golang | 24 Feb 2023
  • Leveling Up Reddit's Core - The Transition from Thrift to gRPC

    1 project | /r/RedditEng | 19 Sep 2022
  • gRPC behind a firewall - no public ip

    3 projects | /r/grpc | 10 Aug 2022
  • Explanation of context in go?

    2 projects | /r/golang | 8 Nov 2021
  • Killing PubSub connection when client of server side stream dies in go

    1 project | /r/golang | 30 Apr 2021