Skip to content

基于go micro + gin + kafka + etcd的分布式消息即时通信微服务系统

Notifications You must be signed in to change notification settings

leeweikung/micro-message-system

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于go micro的分布式即时通信系统

技术架构

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没有放到网关,避免网关流量过大

系统架构图:

Image text

系统环境要求

golang >= 1.14
protoc >= 3.6.1

用户服务-userservice

生成pb

cd userserver/protos
protoc --proto_path=. --micro_out=. --go_out=. user.proto

启动user rpc服务

cd /userserver/cmd/rpc
go run user_rpc.go -f ../config/config_rpc.json

启动user api

cd /userserver/cmd/api
go run user_api.go -f ../config/config_api.json

IM通信服务-imservice

生成pb

cd imserver/protos
protoc --proto_path=. --micro_out=. --go_out=. im.proto

启动kafka消息推送rpc服务 供网关gateway调用

cd imserver/cmd/
go run rpcproducer/im_rpc.go

启动kafka消息订阅消费者服务(进程) 订阅kafka消息推送到websocket

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

网关API-gateway 需token认证并调用userservice和imservice

调用rpc发送消息到kafka(/send)

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

获取并绑定用户与IM服务地址(/address)

cd /userserver/cmd/rpc
go run user_rpc.go -f ../config/config_rpc.json

cd gateway/cmd
go run api/gateway_api.go

docker 方式运行

详见 docker目录

k8s 方式运行

详见 k8s目录
sh batch_deploy.sh

About

基于go micro + gin + kafka + etcd的分布式消息即时通信微服务系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.6%
  • Shell 0.4%