Skip to content

Repository files navigation

relationmicro

社交服务

项目结构

handler.go-kitex对外暴露的服务接口main.go-主方法, 资源初始化: 注册中心数据库线程池等资源
│
├─idlrelation.thrift-idl定义文件
│
├─kitex_gen-kitex自动生成代码
│ └─relation
│ │ k-consts.go
│ │ k-relation.go
│ │ relation.go
│ │
│ ├─combineservice- 汇总各模块对外提供
│ │ client.go
│ │ combineservice.go
│ │ invoker.go
│ │ server.go
│ │
│ ├─messageservice- 消息模块
│ │ client.go
│ │ invoker.go
│ │ messageservice.go
│ │ server.go
│ │
│ └─relationservice- 关注模块
│ client.go
│ invoker.go
│ relationservice.go
│ server.go
│
├─kitex_server-封装其他服务initmicro.go-从etcd获取其他服务客户端user_service.go- 封装usermicro服务接口为本地方法
│ user_service_test.go
│
├─service-核心业务逻辑follower_service.go- 粉丝
│ follower_service_test.gofollow_service.go- 关注
│ follow_service_test.gomessage_service.go- 消息
│ message_service_test.go
│ userinfo_service.gouser_service.go-用户信息
│
└─utillua_util.go-lua脚本相关redis_constant.go-redis键生成等固定规则redis_util.go- redis调用
│ redis_util_test.go
│ str2time_util.go
│ type_convert_util.go
│
└─luafollowfollower

项目运行

运行环境

  1. linux使用windows需配置好远程开发, 因win版的kitex自动生成有bug
  2. go1.19.5
  3. redis > 2.6.0 支持 EVALSHA, > 5.0 支持stream
    • 关注用到EVALSHA
    • 消息用到stream
  4. 其他依赖直接拉取最新的即可 go get & go mod tidy

项目启动需要配置的资源

  1. etcd
  2. redis
  3. usermicro 不启动user服务也能正常跑起来, 但查询列表等功能需要查询user服务,没有user服务会查询失败
    • 引用usermicro服务go get github.com/ClubWeGo/usermicro@latest 上述配置均能再main方法里找到

其他

idl 我们使用的kitex+thrift

如需要加入新的rpc接口, 需通过编写thrift文件和kitex命令自动生成相关代码

kitex官方文档

聚合message的方法到relation的生成代码中的方案 https://www.cloudwego.io/zh/docs/kitex/tutorials/code-gen/combine_service/

使用combine-service 合并多个分块的service kitex --combine-service -service github.com/ClubWeGo/relationmicro -module github.com/ClubWeGo/relationmicro ./idl/relation.thrift

go get github.com/cloudwego/kitex@latest && go mod tidy

注意生成的handler中是CombineServiceImpl

About

社交服务

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages