kratos 微服务框架商城实战初识 kratos

准备工作

本机器这里已经安装好了 go、kratos、proto、wire、make 等所需的工具。

初始化项目目录

进入自己电脑中存放 Go 项目的目录

新建 kratos-shop/service 目录,并进入到新建的目录中

执行 kratos new user 命令并进入 user 目录,执行命令 kratos proto add api/user/v1/user.proto ,

这时你在 /service/user/api/user/v1 目录下会看到新的 user.proto 文件已经创建好了

接下来执行 kratos proto server api/user/v1/user.proto -t internal/service 命令生成对应的 service 文件。

删除不需要的 proto 文件 rm -rf api/helloworld/

删除不需要的 service 文件 rm internal/service/greeter.go

  • 完整的命令代码如下

mkdir  -p kratos-shop/servicecd kratos-shop/service
kratos new usercd user
kratos proto add api/user/v1/user.proto
kratos proto server api/user/v1/user.proto -t internal/service
rm -rf api/helloworld/
rm internal/service/greeter.go

复制代码

  • 修改 user.proto 文件,内容如下:

proto 基本的语法请自行学习,目前这里的只先提供了一个创建用户的 rpc 接口,后续会逐步添加其他 rpc 接口

syntax = "proto3";package user.v1;option go_package = "user/api/user/v1;v1";
service User{
    rpc CreateUser(CreateUserInfo) returns (UserInfoResponse); // 创建用户}
// 创建用户所需字段message  CreateUserInfo{
    string nickName = 1;  string password = 2;  string mobile = 3;}
// 返回用户信息message UserInfoResponse{
    int64 id = 1;  string password = 2;  string mobile = 3;  string nickName = 4;  int64 birthday = 5;  string gender = 6;  int32 role = 7;}

复制代码

  • 生成 user.proto 定义的接口信息

进入到 service/user 目录下,执行 make api 命令,

这时可以看到 user/api/user/v1/ 目录下多出了 proto 创建的文件

cd user
make api
# 目录结构如下:├── api│   └── user│       └── v1│           ├── user.pb.go│           ├── user.proto│           └── user_grpc.pb.go

复制代码

修改配置文件

  • 修改 user/configs/config.yaml 文件,代码如下:

具体链接 mysql、redis 的参数填写自己本机的,本项目用到的是 gorm 。trace 是以后要用到的链路追踪的参数,先定义了。

server:  http:    addr: 0.0.0.0:8000    timeout: 1s  grpc:    addr: 0.0.0.0:50051    timeout: 1sdata:  database:    driver: mysql    source: root:root@tcp(127.0.0.1:3306)/shop_user?charset=utf8mb4&parseTime=True&loc=Local  redis:    addr: 127.0.0.1:6379    dial_timeout: 1s    read_timeout: 0.2s    write_timeout: 0.2strace:  endpoint: http://127.0.0.1:14268/api/traces

复制代码

新建 user/configs/registry.yaml 文件,代码如下:

# 这里引入了 consul 的服务注册与发现,先把配置加入进去consul:    address: 127.0.0.1:8500    scheme: http

复制代码

  • 修改 user/internal/conf/conf.proto 配置文件

# 文件底部新增 consul 和 trace 的配置信息message Trace {
    string endpoint = 1;}
message Registry {
    message Consul {
      string address = 1;    string scheme = 2;  }  Consul consul = 1;}

复制代码

  • 新生成 conf.pb.go 文件,执行 make config

# `service/user` 目录下,执行命令make config

复制代码

安装 consul 服务工具

# 这里使用的是 docker 工具进行创建的docker run -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600/udp consul consul agent -dev -client=0.0.0.0
# 浏览器访问 http://127.0.0.1:8500/ui/dc1/services 测试是否安装成功

复制代码

修改 internal 服务目录

修改 user/internal/data/ 目录下的文件

  • 修改 data.go 添加如下内容:

package data
import (    "github.com/go-kratos/kratos/v2/log"    "github.com/go-redi
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值