chat_service

module
v0.0.0-...-44c9d76 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 18, 2024 License: Apache-2.0

README

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文件然后更改对应的接口继承即可

参与贡献
  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
特技
  1. 使用了 Consul 做负载均衡,参考网站 https://developer.hashicorp.com/consul
  2. 使用了 RabbitMq 做服务之间的通信渠道,参考 https://www.rabbitmq.com/
  3. 采用了 Docker 快速部署
  4. 个人博客 https://blog.crdyjh.cn
  5. Gitee | Github

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL