02 go-zero入门--微服务demo
参考文档:
https://go-zero.dev/cn/docs/advance/rpc-call
视频地址:
https://space.bilibili.com/387126464/channel/series
cd /d/code/go/src/go-zero/go-mindoc/roles/rpc/pb-desc/roles.proto
创建 /d/code/go/src/go-zero/go-mindoc/roles/rpc/pb-desc/roles.proto 文件
syntax = "proto3";
package role;
///pb-desc/types/role/roles.pb.go 和types/role/roles_grpc.pb.go 和包名
option go_package = "./role";
message IdReq{
int64 id = 1;
}
message RolesInfoReply{
int64 id = 1;
string name = 2;
}
//对外暴露的方法包名 如果和go_package同名会在加roleclient做区分 如 roleclient
service role {
rpc getRoles(IdReq) returns(RolesInfoReply);
}
生成服务代码
goctl rpc protoc roles.proto --go_out=./types --go-grpc_out=./types --zrpc_out=../ --style go_zero
查看生成的文件目录
Administrator@haima-PC MINGW64 /d/code/go/src/go-zero/go-mindoc/roles/rpc/pb-desc
$ cd ..
Administrator@haima-PC MINGW64 /d/code/go/src/go-zero/go-mindoc/roles/rpc
$ tree
.
|-- etc
| `-- roles.yaml
|-- internal
| |-- config
| | `-- config.go
| |-- logic
| | `-- get_roles_logic.go
| |-- server
| | `-- roles_server.go
|-- pb-desc
| |-- roles.proto
| `-- types
| `-- roles
| |-- roles.pb.go
| `-- roles_grpc.pb.go
|-- roles.go
`-- rolesclient
`-- roles.go
10 directories, 10 files
下载依赖
$ cd /d/code/go/src/go-zero/go-mindoc/roles/rpc
$ go mod tidy
启动服务
如果没有安装etcd服务,启动时会报错
解决方式
1.搭建 ETCD 环境
# 参考如下,使用Docker安装ETCD
docker run -d --name Etcd-server \
--network app-tier \
--publish 2379:2379 \
--publish 2380:2380 \
--env ALLOW_NONE_AUTHENTICATION=yes \
--env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \
bitnami/etcd:latest
2.用Endpoints方式调用rpc服务
a. 注释 roles/rpc/etc/roles.yaml 配置中的代码
#Etcd:
# Hosts:
# - 127.0.0.1:2379
# Key: roles.rpc
b. api配置里使用Endpoints调用rpc服务
#rpc service
UserRpcConf:
Endpoints:
- 127.0.0.1:8080
NonBlock: true
$ go run roles.go -f etc/roles.yaml
Starting rpc server at 127.0.0.1:8080...
流程图:

02 go-zero入门--微服务demo的更多相关文章
- ZooKeeper+Dubbo+SpringBoot 微服务Demo搭建
1. 首先创建springBoot项目,springBoot是一堆组件的集合,在pom文件中对需要的组件进行配置.生成如下目录结构 创建test项目,同步在test创建dubbo-api,dubbo- ...
- traefik+etcd构建grpc微服务demo
1.下载安装traefik https://github.com/containous/traefik/releases 2.下载安装etcd3 https://github.com/coreos/e ...
- 微服务和SpringCloud入门
微服务和SpringCloud入门 微服务是什么 微服务的核心是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去耦合,每个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种 ...
- 微服务框架-Spring Cloud
Spring Cloud入门 微服务与微服务架构 微服务架构是一种新型的系统架构.其设计思路是,将单体架构系统拆分为多个可以相互调用.配合的独立运行的小程序.这每个小程序对整体系统所提供的功能就称为微 ...
- 微服务架构-选择Spring Cloud,放弃Dubbo
Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多. 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的.从 ...
- 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结
http://developer.51cto.com/art/201710/554633.htm Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经 ...
- 微服务:Java EE的拯救者还是掘墓人?
有人认为,微服务的大行其道是在给Java EE下达死刑判决书.也有人认为,Java EE已死的论调可笑至极.读者朋友,你们怎么看? 引言 有人说,Java确实过于臃肿,经常“小题大做”.但PHP.No ...
- abp vNext微服务框架分析
本文转载自:https://www.cnblogs.com/william-xu/p/11245738.html abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了 ...
- [Abp vNext微服务实践] - 框架分析
一.简介 abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.n ...
- (子文章)Spring Boot搭建两个微服务模块
目录 1. 创建工程和user-service模块 1.1 创建空工程 1.2 在空工程里新建Module 2. 配置文件 2.1 pom.xml 2.2 application.yml 3. 代码 ...
随机推荐
- IDEA怎么添加类注释和方法注释模板
IDEA设置自动生成模板类和方法注释 一.模板类注释 在右侧粘贴如下代码: /** *@BelongsProject: ${PROJECT_NAME} *@BelongsPackage: ${PACK ...
- Scala打印输出
1 package com.atguigu.chapter02 2 object TestCharType { 3 def main(args: Array[String]): Unit = { 4 ...
- #轮廓线dp#HDU 1400 Mondriaan's Dream
题目传送门 分析 状压dp会TLE,考虑用轮廓线dp, 设 \(dp[i][j][S]\) 表示现在处理到 \((i,j)\) 这个位置轮廓线上状态为 \(S\) 的情况 二进制位为1表示左边或者上方 ...
- C++ 编程入门指南:深入了解 C++ 语言及其应用领域
C++ 简介 什么是 C++? C++ 是一种跨平台的编程语言,可用于创建高性能应用程序. C++ 是由 Bjarne Stroustrup 开发的,作为 C 语言的扩展. C++ 为程序员提供了对系 ...
- 【FAQ】视频编辑服务常见问题及解答
Q1问题描述 1. 访问贴纸等素材的时候提示"网络异常,请重试"怎么办? 2. 使用AI能力时,提示"errorCode:20124 errorMsg:Method no ...
- 报表如何批量导出成 excel 文件
需求说明 报表展现后可以通过工具栏中的导出按钮将当前展现的报表导出成 excel 文件,但是在实际使用中通常会要求报表不需要展现,直接通过一些操作将报表导出成 excel 文件,并且往往会要求批量导出 ...
- nginx重新整理——————nginx 的设计模型[八]
前言 简单介绍一下nginx的设计模型,对我们设计程序还是有一定帮助的. 正文 这里先列一下模型哈,后面有深入篇,介绍的比较清楚. nginx 的处理模型: nginx 进程模型: 可以看到下面列出了 ...
- labelme转coco数据集
原始labelme数据目录结构如下: |-- images | |--- 1.jpg | |--- 1.json | |--- 2.jpg | |--- 2.json | |--- ....... | ...
- eclipse 卡顿的优化办法
1. 关闭校验 2. 关闭插件自动升级 3.关闭界面设置的一些选项
- Django框架——ORM执行SQL语句、神奇的双下划线、外键字段的创建、跨表查询、进阶操作
ORM执行SQL语句 有时候ORM的操作效率可能偏低 我们是可以自己编写SQL的 方式一: models.User.objects.raw('select * from app01_user') 方式 ...