chat_service
中文 | English
微服务版的聊天服务
该服务在工作中用来给App内社区聊天提供服务支持
目前第一版仅支持好友聊天,本项目自带了一个简易的用户授权rpc服务,若已有其他的现有授权方式可做替换,后续将会完善聊天业务接口,以及群聊相关接口。
若有问题欢迎提出。
软件架构
软件架构说明
chat_service /
|—— app // 项目应用
| |—— core // 框架内核
| |—— gateway // 网关服务
| | |—— http // 包含控制器、路由,应用请求处理逻辑以及调用grpc都放这里
| | └── rpc // 注册请求处理需要的rpc服务
| |—— global // 包含框架全局的常量、变量
| |—— initialize // 组件初始化服务
| |—— model // 数据模型
| |—— providers // 服务注册
| |—— services // 框架服务层
| └── util // 自定义方法
|—— cmd // 服务启动
| |—— gateway // 网关服务启动目录
| |—— chat // 聊天服务启动目录
| └── member // 用户服务启动目录
| ... // 其他服务启动目录
|—— config // 配置模型
|—— idl // protobuf文件
└── log // 存储运行日志
使用说明
Docker安装
# docker启动暂未测试consul负载均衡
docker-compose up -d
本地安装
单机启动
# 启动用户服务
go build -o ./cmd/member/app ./cmd/member
./cmd/member/app
# 启动聊天服务
go build -o ./cmd/chat/app ./cmd/chat
./cmd/chat/app
# 启动网关服务
go build -o ./cmd/gateway/app ./cmd/gateway
./cmd/gateway/app
rpc服务负载均衡
修改config.yaml->system->use-consul为true
启动聊天以及用户服务时附带端口参数,例如
# 聊天服务节点1
./cmd/chat/app -p 6000
# 聊天服务节点2
./cmd/chat/app -p 7000
开发说明
新增grpc服务
a.新增protobuf
# 创建文件 demo_service.proto
cd ./idl
# 在文件 demo_service.proto 中完成接口定义后执行以下命令
protoc --plugin=protoc-gen-grpc=`which protoc-gen-go-grpc` --go_out=. --go-grpc_out=. demo_service.proto
b. 实现客户端以及服务端service:在 app->gateway->rpc 目录中参考现有实现对应的客户端初始化方法[client_init]以及服务端接口继承[srv_service]
c. 在cmd中实现 服务启动main.go文件
d. 在 app->initialize->grpc_registry 的方法 InstallGrpcService
中注册grpc客户端启动
e. 在 config(包含docker.config) 中的 grpc-service
配置中新增对应服务配置
f. 新增Dockerfile启动方式以及更新docker-compose.yaml文件
注意:如果知识更新了grpc接口只需要重新生成protobuf文件然后更改对应的接口继承即可
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
特技
- 使用了 Consul 做负载均衡,参考网站 https://developer.hashicorp.com/consul
- 使用了 RabbitMq 做服务之间的通信渠道,参考 https://www.rabbitmq.com/
- 采用了 Docker 快速部署
- 个人博客 https://blog.crdyjh.cn
- Gitee | Github