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/RDS
is done - 2021/04/06
xDS protocol - CDS/EDS
is done. - 2021/03/19
Send Request
is completely rewritten. - 2021/03/19
Send Response
is completely rewritten. - 2021/03/28
Client dial
is completely rewritten. - 2021/03/18
The transport
is done. This chapter provide whole picture from the view of transport. - 2021/04/03
xDS wrappers
is done. The xDS class diagram for main type. - 2021/04/06
XDS picker
is 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.