首页 > 其他分享 >go-zero,etcd,gorm完成一次简单的微服务操作

go-zero,etcd,gorm完成一次简单的微服务操作

时间:2024-11-04 14:57:17浏览次数:2  
标签:string rpc json yaml zero etcd go

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架,etcd 是一个开源的分布式键值存储系统,用于可靠地存储分布式系统中的关键数据
1.环境准备

#官方脚手架
go install github.com/zeromicro/go-zero/tools/goctl@latest 安装go-zero脚手架,根据配置文件自动生成配置文件
#protobuf 工具
goctl env check --install --verbose --force
#框架
go get -u github.com/zeromicro/go-zero@latest

2.rpc服务端

  • 编写proto配置文件user.proto文件
syntax = "proto3";
package user;

option go_package = "../proto/user";

service UserService {
  rpc GetUser (UserRequest) returns (Response) {}
  rpc AddUserInfo (UserInfo) returns (Response) {}
}

message UserInfo {
  string name = 1;
  string nickname = 2;
  int64  iphone = 3;
  string password = 4;
  int32  status = 5;
  bool   is_admin = 6;
}

message UserRequest {
  int64 id = 1;
}

message Response {
  int64 result = 1;
  bytes data = 2;
}
  • 通过goctl命令生成文件
    goctl rpc protoc user.proto --go_out=. --go-grpc_out=. --zrpc_out=../
  • 修改yaml配置文件,并添加mysql等配置信息
Name: user.rpc
ListenOn: 0.0.0.0:8080
Etcd:
  Hosts:
  - 127.0.0.1:2379
  Key: user.rpc


MySQLConf:
  Enable: true
  User: root
  Password: '123456'
  Host: 127.0.0.1
  Port: 3306
  Database: test
  CharSet: utf8
  ParseTime: true
  TimeZOne: Local
  AutoMigrate: true
  Gorm:
    TablePrefix: zero_
    SingularTable: true
    MaxOpenConns: 100
    MaxIdleConns: 5
    ConnMaxLifetime: 600
  • 修改配置config.go文件,添加mysql配置读取结构体
// Mysql config
type MySQLConf struct {
	Host        string   `json:"" yaml:"Host"`
	Port        int64    `json:"" yaml:"Port"`
	User        string   `json:"" yaml:"User"`
	Password    string   `json:"" yaml:"Password"`
	Database    string   `json:"" yaml:"Database"`
	CharSet     string   `json:"" yaml:"CharSet"`
	TimeZone    string   `json:"" yaml:"TimeZone"`
	ParseTime   bool     `json:"" yaml:"ParseTime"`
	Enable      bool     `json:"" yaml:"Enable"` // use mysql or not
	AutoMigrate bool     `json:"" yaml:"AutoMigrate"`
	Gorm        GormConf `json:"" yaml:"Gorm"`
}

// gorm config
type GormConf struct {
	SingularTable   bool   `json:"" yaml:"SingularTable"` // 是否使用单数表名(默认复数),启用后,User结构体表将是user
	TablePrefix     string `json:"" yaml:"TablePrefix"`   // 表前缀
	MaxOpenConns    int    `json:"" yaml:"MaxOpenConns"`
	MaxIdleConns    int    `json:"" yaml:"MaxIdleConns"`
	ConnMaxLifetime int    `json:"" yaml:"ConnMaxLifetime"`
}

标签:string,rpc,json,yaml,zero,etcd,go
From: https://www.cnblogs.com/xj9912/p/18525271

相关文章

  • (开题报告)django+vue电影推荐系统APP源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景关于电影推荐系统的研究,现有研究多集中在推荐算法的优化、单一框架的实现等方面。专门针对django+vue组合框架构建电影推荐系统APP的研......
  • (开题报告)django+vue基于的商品销售信息系统源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着互联网技术的迅猛发展,电子商务在全球范围内蓬勃发展。关于商品销售信息管理系统的研究,现有研究主要以传统的销售模式与简单的信息......
  • LeetCode 每日一题,用 Go 实现两数之和的非暴力解法
    题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],target......
  • 【Google Cloud】专用 Google 访问通道的组成和利用方法详解
    专用Google访问通道(PrivateGoogleAccess)允许从没有外部IP的虚拟机访问GoogleCloud服务的API。本文将详细介绍此功能。什么是专用Google访问通道专用Google访问通道(PrivateGoogleAccess)是指在GoogleCloud(原称GCP)中,允许没有外部IP(公网IP)的虚拟机或本地......
  • mongodb指数汇总
    mongodb安装:安装mongodb:https://blog.csdn.net/zerochia/article/details/90767583【社区版下载地址:https://www.mongodb.com/try/download/community】安装mongodbcompress(GUI,界面操作,可以连本地mongodb,也可以连远程服务器上的mongodb):https://www.mongodb.com/try/download/com......
  • Golang new() make var []int 使用的具体区别
    一、数组和切片的初始化1var []int 格式funcmain(){ vart1[]int t1=append(t1,1) fmt.Println(t1)//正常输出1 vart11[]int t11[0]=11//panic:runtimeerror:indexoutofrange[0]withlength0 fmt.Println(t11) vart12[1]int t12[0]=......
  • 本地uni-app链接阿里云esc实例上的mongo
    1.准备工作1.1获取阿里云ESC实例推荐使用阿里云ESC,因为可以免费试用很爽阿里云试用<—点我跳转阿里云确保实例已预装MongoDB<—点我看怎么安装1.2连接到ESC实例这里参考阿里云自带的文档们阿里云ESC文档<–点这里看文档给esc开3000端口<–点击看如何开端口开出方......
  • 2024-11-03:得到更多分数的最少关卡数目。用go语言,Alice 和 Bob 正在进行一个有 n 个关
    2024-11-03:得到更多分数的最少关卡数目。用go语言,Alice和Bob正在进行一个有n个关卡的游戏,其中每个关卡要么是困难模式(possible[i]==0),要么是简单模式(possible[i]==1)。玩家在游戏中获得分数的规则如下:通过简单模式的关卡可得1分,而遇到困难模式的关卡将扣除1分。Alice从......
  • (开题报告)django+vue面向高铁的旅客点餐系统与实现论文+源码
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于高铁旅客点餐系统的研究,现有研究主要以传统点餐模式或通用点餐系统为主,专门针对高铁场景下结合django+vue技术构建旅客点餐系统......