This project uses Go version 1.20, protobuffers and kitex (ByteDance's rpc middleware framework)
# verify installation
go version
As this project has multiple main.go
files, vscode might not recognize the correct workspace.
The solution is to create a go.work
file and run the following commands to add the respective folders.
# in root
go work init
go work use http-server
go work use rpc-server
References: here
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
go install github.com/cloudwego/thriftgo@latest
go install github.com/golang/protobuf/protoc-gen-go@latest
Pull the images and start the server with docker compose up
.
Client -> HTTP Server -> RPC Server -> Redis
References:
Protocol buffers (protobufs) are a way to serialize data in an efficient way, allowing better utilization of network resources.
It is an interface definition language (IDL) that is language neutral. i.e From a single .proto file, you can easily generate Go, Java, Python code with the code generation features.
idl_http.proto
defines the API request and response types.
References:
RPC Framework by ByteDance.
References:
Another RPC Framework but under Apache.
kitex_gen
contains RPC client (HTTP is client from architecture) and server code for RPC server.
Generated from idl_rpc.thrift
.
References:
HTTP Framework for Go by ByteDance.
Generated from idl_http.proto
.
References: