IT序号网

go的微服务框架go-zero

leader 2022年04月19日 编程语言 137 0

1.微服务

单一的模块无法再支撑大量的用户请求,如果一个功能挂了很可能导致整个项目奔溃,所以要将一个项目按照不同的功能分成多个模块进行部署,每个模块之间低耦合,每个模块通过RPC进行内部通讯。
    微服务的好处:将复杂的项目模块化、有利于程序员开发、有利于提高项目健壮性、也有利于测试和维护
    微服务的坏处:拆分项目需要一定的工足量、要部署多个模块、每个模块沟通需要成本、项目整体架构复杂了、还需要保证模块数据的一致性
在这里插入图片描述


2.微服务go-zero

    1).啥是go-zero
    go-zero 能自动生成微服务,是一个简单好用的微服务框架。
    go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
    go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。

    go-zero的gihub地址
    go-zero中文文档地址

    使用go-zero的好处:

    ● 轻松获得支撑千万日活服务的稳定性
    ● 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
    ● 微服务治理中间件可无缝集成到其它现有框架使用
    ● 极简的API描述,一键生成各端代码
    ● 自动校验客户端请求参数合法性
    ● 大量微服务治理和并发工具包

    2).安装goctl
        (1).安装goctl
       go env -w GO111MODULE=on
       go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
       git clone https://github.com/zeromicro/go-zero
       然后进入D:\go-zero-master\tools\goctl目录执行go build goctl.go命令

在这里插入图片描述
       然后将goctl.exe放到go的bin目录下
在这里插入图片描述
        (2).新建个目录zeroTest,生成go项目
        go mod init zeroTest
        go mod tidy
在这里插入图片描述

        (3).在项目根目录下下载go-zero
        go get -u github.com/zeromicro/go-zero

在这里插入图片描述

        (4).快速生成api
        goctl api -o user.api
在这里插入图片描述
        (5).找到user.api,然后按照自己需求修改user.api

 syntax = "v1" 
 
info( 
	title: // TODO: add title 
	desc: // TODO: add description 
	author: "" 
	email: "" 
) 
 
type Request { 
	Username string `json:"username"` 
	Passwd   string `json:"passwd"` 
	Age      int    `json:"age"` 
	Sex      string `json:"sex"` 
} 
 
type Response { 
	Code string `json:"code"` 
	Message string `json:"message"` 
	  
} 
 
service user-api { 
	@handler GetUser 
	get /users/:name(Request) returns (Response); 
	 
	@handler PostUser 
	post /users/create(Request) 
} 

        (6).根据user.api生成user模块
        goctl api go -api user.api -dir user
在这里插入图片描述
        以下是此命令说明
在这里插入图片描述
在这里插入图片描述

        (7).在user文件夹下修改部分代码
在这里插入图片描述

        (8).在user文件夹下开始运行项目
        go run user.go -f etc/user-api.yaml
在这里插入图片描述
        默认端口在8888
在这里插入图片描述

        直接get请求http://127.0.0.1:8888/user/getUser?即可
在这里插入图片描述


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

go项目的打包部署