参考文档:

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的更多相关文章

  1. ZooKeeper+Dubbo+SpringBoot 微服务Demo搭建

    1. 首先创建springBoot项目,springBoot是一堆组件的集合,在pom文件中对需要的组件进行配置.生成如下目录结构 创建test项目,同步在test创建dubbo-api,dubbo- ...

  2. traefik+etcd构建grpc微服务demo

    1.下载安装traefik https://github.com/containous/traefik/releases 2.下载安装etcd3 https://github.com/coreos/e ...

  3. 微服务和SpringCloud入门

    微服务和SpringCloud入门 微服务是什么 微服务的核心是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去耦合,每个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种 ...

  4. 微服务框架-Spring Cloud

    Spring Cloud入门 微服务与微服务架构 微服务架构是一种新型的系统架构.其设计思路是,将单体架构系统拆分为多个可以相互调用.配合的独立运行的小程序.这每个小程序对整体系统所提供的功能就称为微 ...

  5. 微服务架构-选择Spring Cloud,放弃Dubbo

    Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多. 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的.从 ...

  6. 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结

    http://developer.51cto.com/art/201710/554633.htm Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经 ...

  7. 微服务:Java EE的拯救者还是掘墓人?

    有人认为,微服务的大行其道是在给Java EE下达死刑判决书.也有人认为,Java EE已死的论调可笑至极.读者朋友,你们怎么看? 引言 有人说,Java确实过于臃肿,经常“小题大做”.但PHP.No ...

  8. abp vNext微服务框架分析

    本文转载自:https://www.cnblogs.com/william-xu/p/11245738.html abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了 ...

  9. [Abp vNext微服务实践] - 框架分析

    一.简介 abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.n ...

  10. (子文章)Spring Boot搭建两个微服务模块

    目录 1. 创建工程和user-service模块 1.1 创建空工程 1.2 在空工程里新建Module 2. 配置文件 2.1 pom.xml 2.2 application.yml 3. 代码 ...

随机推荐

  1. KingbaseESV8R6用户登录失败自动锁定后解锁遇到权限问题

    测试用户登录失败自动锁定 创建用户tee并授权. TEST=# create user tee; CREATE ROLE TEST=# alter user tee with createdb; AL ...

  2. C++设计模式 - 原型模式(Prototype)

    对象创建模式 通过"对象创建" 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定.它是接口抽象之后的第一步工作. 典型模式 Fac ...

  3. OpenHarmony加速行业应用落地,多款软件发行版正通过兼容性测评

    4 月 25 日,OpenAtom OpenHarmony(以下简称"OpenHarmony")技术日在深圳举办,大会聚焦 OpenHarmony 3.1 Release 版本核心 ...

  4. Drop 、Delete、Truncate的区别是什么

    Drop .Delete.Truncate 的区别是什么? DROP 删除表结构和数据,truncate 和 delete 只删除数据 truncate 操作,表和索引所占用的空间会恢复到初始大小:d ...

  5. HarmonyOS如何使用异步并发能力进行开发

      一.并发概述 并发是指在同一时间段内,能够处理多个任务的能力.为了提升应用的响应速度与帧率,以及防止耗时任务对主线程的干扰,HarmonyOS系统提供了异步并发和多线程并发两种处理策略. ● 异步 ...

  6. 解密prompt系列27. LLM对齐经验之如何降低通用能力损失

    前面我们已经聊过众多指令微调的方案,这一章我们重点讨论下如何注入某一类任务或能力的同时,尽可能不损失模型原有的通用指令理解能力.因为在下游或垂直领域应用中,我们设计的推理任务风格或形式,往往很难通过p ...

  7. 鸿蒙HarmonyOS实战-ArkUI组件(Navigation)

    一.Navigation Navigation组件通常作为页面的根容器,支持单页面.分栏和自适应三种显示模式.开发者可以使用Navigation组件提供的属性来设置页面的标题栏.工具栏.导航栏等. 在 ...

  8. mysql入门操作(部分操作,不为完全格式)

    查询数据库在电脑中绝对路径: show variables like '%datadir%'; 设置字符集 set names gbk; 导入数据库 source 绝对路径 eg: source D: ...

  9. MyBatis 核心配置讲解(上)

    大家好,我是王有志,一个分享硬核 Java 技术的互金摸鱼侠. 前两篇的文章中我们分别介绍了 MyBatis 和 MyBaits 的应用组成,到这里基础篇的内容就结束了. 从今天开始,我们正式进入 M ...

  10. EMAS移动测试-远程真机篇

    简介: 导读:本文将介绍申请远程真机以及在远程真机上执行测试任务的详细操作,包括申请远程真机.安装应用.扫码.定位.性能测试等. 一.移动测试概览 移动测试服务(Mobile Testing)是为企业 ...