基于Golang+Kratos实现的看房网项目

基于Golang+Kratos实现的看房网项目,第1张

看房网

基于Golang+Kratos+MySQL+Redis+Kafka+elk+Opentracing实现的微服务项目

github地址

效果展示

功能描述 房源列表房源详情 (TODO)点击房源title,代表查看了房源,会生成一条查看历史记录输入用户名进行登录看房历史记录 (TODO) 技术点 微服务架构(BFF、Service、Admin、Job、Task 分模块) API 设计(包括 API 定义、错误码规范、Error 的使用) gRPC 的使用 Go 项目工程化(项目结构、DI、代码分层、ORM 框架) 并发的使用(errgroup 的并行链路请求) 微服务中间件的使用(ELK、Opentracing、Prometheus、Kafka) (链路追踪) 缓存的使用优化(一致性处理、Pipeline 优化) 项目目录结构
.
├── README.md
├── api
│   ├── account 
│   ├── history
│   └── house
├── app
│   ├── account
│   ├── history
│   └── house
├── deploy
│   └── docker
├── docs
│   └── images
├── gen
├── go.mod
├── go.sum
├── openapi.yaml
├── pkg
│   └── job
├── third_party
│   ├── README.md
│   ├── errors
│   ├── google
│   ├── protoc-gen-openapiv2
│   └── validate
└── web
    ├── admin
    └── kfan
微服务项目结构

通过kratos构建工具生成,新增了job子目录

.
├── Dockerfile
├── Makefile
├── README.md
├── cmd
│   ├── history
│   └── job
├── configs
│   └── config.yaml
├── generate.go
└── internal
    ├── biz
    ├── conf
    ├── data
    ├── job 
    ├── server
    └── service
运行 docker-compose运行
cd deploy/docker && make kfan-run
清除容器
make clean
并发的使用

errgroup 的并行链路请求

并行请求多个服务获取详情信息

代码位置

eg, ctx := errgroup.WithContext(ctx)
for _, history := range histories {
  history := history
  eg.Go(func() error {
      house, err := h.data.h1.GetHouse(ctx, &housepb.GetHouseRequest{Id: history.ObjId})
      if err != nil {
          return err
      }
      history.ObjDetail = structs.Map(house)
      return nil
  })
  eg.Go(func() error {
      account, err := h.data.a1.GetAccount(ctx, &accountpb.GetAccountRequest{Id: int32(history.UserId)})
      if err != nil {
          return err
      }
      history.Username = account.GetName()
      return nil
  })
}
err = eg.Wait()
开发命令

生成proto代码

kratos proto client api/account/service/v1/account.proto
docker部署 创建volume
docker volume create kfan-db
调试 SaveHistory

grpcurl -d '{"obj_id": 2,"obj_type": "house","user_id": 1}' -plaintext 127.0.0.1:9002 api.history.service.v1.History/SaveHistory
GetHistory
grpcurl -d '{"user_id": 1}' -plaintext 127.0.0.1:9002 api.history.service.v1.History/GetHistory

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/994229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存