# mykratos **Repository Path**: enzolwb/mykratos ## Basic Information - **Project Name**: mykratos - **Description**: 练习kratos的地方 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-24 - **Last Updated**: 2021-12-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 毕业心得见 `Summary.md` ### 毕业作业 #### 对当下自己项目中的业务,进行一个微服务改造,需要考虑如下技术点: > 以项目中的购物车模块来改造, - [x] 微服务架构(BFF、Service、Admin、Job、Task 分模块) - [ ] API 设计 - cart.proto 没有涉及错误码 返回error 这点完成的不好 - [x] gRPC 的使用 - [x] Go 项目工程化 - [x] 项目结构 - [x] DI依赖注入: wire - [x] 代码分层:internal目录 - [x] 引入GORM - [x] 引入基于zap的自定义log包 - [x] 并发的使用(errgroup 的并行链路请求):kratos的app.Run() - [x] 微服务中间件的使用 :docker部署文件在`docker`文件夹内 - [x] ELK:将rabbitmq、redis作为logstash 的 input来源 - [x] Prometheus:利用kratos的`Metrics` 中间件,在grpc.go中配置,添加中间件 - [x] Opentracing:利用kratos的`Tracing` 中间件,在grpc.go中配置,添加中间件 - [x] 缓存的使用优化(一致性处理、Pipeline 优化):这项会在 `Cache.md` 以笔记形式展现 ### Kratos相关 #### 常用操作 ##### 生成proto模板 kratos proto add api/helloworld/helloworld.proto ##### 生成proto源码 kratos proto client api/helloworld/helloworld.proto ##### 生成server模板 kratos proto server api/helloworld/helloworld.proto -t internal/service ##### 生成所有proto源码、wire等等 go generate ./... #### Automated Initialization (wire) ``` # install wire go get github.com/google/wire/cmd/wire # generate wire cd cmd/server wire ``` #### Docker ```bash # build docker build -t . # run docker run --rm -p 8000:8000 -p 9000:9000 -v :/data/conf ```