go-zero 微服务应用实践(一)

简介

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。

本节将用go-zero 开发一个用户服务;主要包括注册、登录、用户信息查询功能

初始化项目

//创建目录
madir project && cd project
//初始化项目
go mod init project

用户服务

0、环境准备
protoc & protoc-gen-go安装

protoc是一款用C++编写的工具,其可以将proto文件翻译为指定语言的代码。在go-zero的微服务中,我们采用grpc进行服务间的通信,而grpc的编写就需要用到protoc和翻译成go语言rpc stub代码的插件protoc-gen-go。

1、创建proto 文件 user/rpc/user.proto

syntax = "proto3";

package user;

option go_package = "./user";

message RegisterRequest {
  string Name = 1;
  int64 Gender = 2;
  string Email = 3;
  string Password = 4;
}

message RegisterResponse {
  int64 Id = 1;
  string Name = 2;
  int64 Gender = 3;
  string Email = 4;
}

message LoginRequest {
  string Email = 1;
  string Password = 2;
}
message LoginResponse {
  int64 Id = 1;
  string Name = 2;
  int64 Gender = 3;
  string Email = 4;
}

message UserInfoRequest {
  int64 Id = 1;
}
message UserInfoResponse {
  int64 Id = 1;
  string Name = 2;
  int64 Gender = 3;
  string Email = 4;
}

service User {
  rpc Register(RegisterRequest) returns(RegisterResponse);
  rpc Login(LoginRequest) returns(LoginResponse);
  rpc UserInfo(UserInfoRequest) returns(UserInfoResponse);
}

2、创建 user/generate.go
为了方便快速执行 goctl 相关命令,创建generate.go 文件 写入生成命令

package user

//Rpc
//go:generate goctl rpc protoc ./rpc/user.proto --go_out=./rpc/types --go-grpc_out=./rpc/types --zrpc_out=./rpc/
//go:generate goctl model mysql ddl -src ./model/user.sql -dir ./model -c
//go:generate goctl api go -api ./api/user.api -dir ./api

执行 goctl rpc protoc 命令生成代码;代码目录如下

──rpc
    ├─etc
    ├─internal
    │  ├─config
    │  ├─logic
    │  ├─server
    │  └─svc
    ├─types
    │  └─user
    └─user

3、创建model/user.sql 并执行 命令

goctl model mysql ddl -src ./model/user.sql -dir ./model -c

CREATE TABLE `user` (
    `id` bigint unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(255)  NOT NULL DEFAULT '' COMMENT '用户姓名',
    `gender` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '用户性别',
    `email` varchar(255)  NOT NULL DEFAULT '' COMMENT '用户邮箱',
    `password` varchar(255)  NOT 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Devin_S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值