Skip to content

ilovesusu/suim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Suim 即时通讯项目

suim 是一个即时通讯服务器,代码全部使用golang完成,采用 Kratos 搭建大仓,可以很方便的扩充业务。

主要功能包括

1.支持tcp,websocket接入
2.离线消息同步
3.单用户多设备同时在线
4.单聊,群聊,频道,以及房间聊天场景
5.支持服务水平扩展

使用技术:

  • 数据库:MySQL+Redis
  • 消息队列:Nats
  • 通讯框架:GRPC
  • 项目框架:Kratos
  • 长连接通讯协议:Protocol Buffers
  • ORM框架:GORM

Create a service

# 创建模板项目
kratos new server

cd server
# 添加一个 proto 模板
kratos proto add api/server/server.proto
# 生成 proto 代码
kratos proto client api/server/server.proto
# 通过proto文件生成服务的源码
kratos proto server api/server/server.proto -t internal/service

go generate ./...
go build -o ./bin/ ./...
./bin/server -conf ./configs

通过Makefile生成其他辅助文件

Usage:
 make [target]

Targets:
init                   init env
grpc                   generate grpc code
http                   generate http code
errors                 generate errors code
swagger                generate swagger
proto                  generate internal proto struct
generate               generate client code
build                  build
test                   test
wire                   generate wire
api                    generate api proto
all                    generate all
help                   show help

例如:生成User 服务的 http grcp swagger proto 代码

cd app/xxx/service
make http grpc swagger
#or
make api

自动初始化 (wire)

# install wire
go install github.com/google/wire/cmd/wire

# generate wire
cd cmd/server
wire

docker-compsoe

启动项目的底层服务,例如MariaDb,Redis,Etcd,Nats

# run
docker-compose up -d 

# stop
docker-compose stop

# Stop and remove containers, networks
docker-compose down

应用类型

微服务中的 app 服务类型主要分为4类:interface、service、job、admin,应用 cmd 目录负责程序的:启动、关闭、配置初始化等。

  • interface: 对外的 BFF 服务(英文全称:Backend For Frontend),接受来自用户的请求,比如暴露了 HTTP/gRPC 接口。
  • service: 对内的微服务,仅接受来自内部其他服务或者网关的请求,比如暴露了gRPC 接口只对内服务。
  • admin:区别于 service,更多是面向运营测的服务,通常数据权限更高,隔离带来更好的代码级别安全。
  • job: 流式任务处理的服务,上游一般依赖 message broker。
  • task: 定时任务,类似 cronjob,部署到 task 托管平台中。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published