My original goal is to understand the source code of gRPC-go. When researching the source code, I found a lot of coding skills/design which deserved to be noted for later reference.
Gradually, as more chapter finished, it becomes "Understanding gRPC-go": the code analysis book. All content are golang and gRPC-go related.
Get a quick glimpse from the following diagram. See Balancer and Resolver API for detail.
Done:
- 2021/03/29
xDS protocol - LDS/RDSis done - 2021/04/06
xDS protocol - CDS/EDSis done. - 2021/03/19
Send Requestis completely rewritten. - 2021/03/19
Send Responseis completely rewritten. - 2021/03/28
Client dialis completely rewritten. - 2021/03/18
The transportis done. This chapter provide whole picture from the view of transport. - 2021/04/03
xDS wrappersis done. The xDS class diagram for main type. - 2021/04/06
XDS pickeris done. How to choose the endpoint during RPC calling?
Plan:
Stream dial,Stream request and response.- Load reporting service
- RPC filter
- Client Dial
- Send Request
- Send Response
- Request parameters
- controlBuffer, loopyWriter and framer
- The transport
- Interceptor
- Authentication
- Load Balancing - Client
- xDS protocol - LDS/RDS
- xDS protocol - CDS/EDS
The following books help me to build a solid foundation for HTTP2 and gRPC. They answer a lot of questions about Why, What and some part of How, while gSkills purely focus on How to implement them in gRPC.
The following articles are very helpful to understand envoy. The official Introduction is not easy to understand, full of terminology, too much details to easily get distracted.
- Envoy introduction
- Envoy data plane and control plane
- Envoy internal
- Envoy proto3 <> JSON <> YAML
- Envoy and gRPC-Web
Please read the LICENSE for more details.