1.微服务框架:go micro 基于go-plugins可插拔模式
2.服务发现:etcd
3.服务端限流:令牌桶(ratelimit)
4.熔断机制:hystrix
5.消息中间件:kafka
6.web框架:gin gorm
7.数据库:mysql
8.token认证:jwt-go
9.搜索:ES
10.链路追踪:jaeger
1. 用户服务:
用户API服务 - 用户注册登录
用户RPC服务 - 用户鉴权 网关gate调用
2. IM服务:
IM消息发送服务 - produce消息到kafka 网关gate调用
IM消息订阅服务 - 订阅kafka消息供websocket展示
3. 网关:
调用userrpc验证用户token是否存在
调用imrpc发送消息到kafka
获取并绑定用户与IM websocket服务地址
4. Upload服务:
文件分块上传 api没有放到网关,避免网关流量过大
golang >= 1.14
protoc >= 3.6.1
cd userserver/protos
protoc --proto_path=. --micro_out=. --go_out=. user.proto
cd /userserver/cmd/rpc
go run user_rpc.go -f ../config/config_rpc.json
cd /userserver/cmd/api
go run user_api.go -f ../config/config_api.json
cd imserver/protos
protoc --proto_path=. --micro_out=. --go_out=. im.proto
cd imserver/cmd/
go run rpcproducer/im_rpc.go
cd imserver/cmd/
go run imconsumer/im_server.go -f ./config/config_im_1.json
go run imconsumer/im_server.go -f ./config/config_im_2.json
cd /userserver/cmd/rpc
go run user_rpc.go -f ../config/config_rpc.json
cd imserver/cmd/
go run rpcproducer/im_rpc.go
cd gateway/cmd
go run api/gateway_api.go
cd /userserver/cmd/rpc
go run user_rpc.go -f ../config/config_rpc.json
cd gateway/cmd
go run api/gateway_api.go
详见 docker目录
详见 k8s目录
sh batch_deploy.sh