Skip to content

RyanCheungJF/instant-messenger

 
 

Repository files navigation

TikTok Tech Immersion 23

Tests

Setup

This project uses Go version 1.20, protobuffers and kitex (ByteDance's rpc middleware framework)

# verify installation
go version

Configure Go

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

Install Kitex

go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
go install github.com/cloudwego/thriftgo@latest

Install protobuf

go install github.com/golang/protobuf/protoc-gen-go@latest

Docker

Pull the images and start the server with docker compose up.

Project Architecture

Client -> HTTP Server -> RPC Server -> Redis

Learning Points

Remote Procedure Call (RPC)

References:

proto

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:

kitex

RPC Framework by ByteDance.

References:

thrift

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:

hertz

HTTP Framework for Go by ByteDance.

Generated from idl_http.proto.

References:

About

Instant Messenger app for TikTok Tech Immersion 23

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 78.3%
  • Thrift 10.7%
  • Shell 5.4%
  • Makefile 4.1%
  • Dockerfile 1.5%