简介

http://wen.topgoer.com/docs/mindoc/changjianwenti

学习rpc与grpc https://www.liwenzhou.com/posts/Go/gRPC/
学习etcd https://www.liwenzhou.com/posts/Go/go_etcd/
学习protobuf https://www.liwenzhou.com/posts/Go/protobuf/

安装

go get github.com/micro/go-micro/v2
go get github.com/micro/micro/v2
go get github.com/micro/protoc-gen-micro/v2

编写服务

一、服务协议

syntax = "proto3";service Greeter {rpc Hello(Request) returns (Response) {}
}message Request {string name = 1;
}message Response {string greeting = 2;
}

二、生成原型

protoc -I . --micro_out=. --go_out=. ./hello.proto

三、实现服务

上面已经定义了实现服务所需的服务接口.
下面是问候器服务的代码. 它执行以下操作:

  • 实现为 Greeter 处理程序定义的接口
  • 初始化一个 micro.Service
  • 注册 Greeter 处理器
  • 运行服务
package mainimport ("context""fmt"micro "github.com/micro/go-micro"proto "go-micro/my-micro01/proto"
)
/*
protoc -I . --micro_out=. --go_out=. ./greet.proto*/type Greeter struct{}// 实现接口
func (g *Greeter) Hello(ctx context.Context, req *proto.Request, rsp *proto.Response) error {rsp.Greeting = "Hello " + req.Namereturn nil
}func main() {// 得到服务端实例service := micro.NewService(micro.Name("go.micro.api.hello"),   // micro call go.micro.api.hello Greeter.Hello {\"name\": \"John\"})// 初始化service.Init()// 服务注册err := proto.RegisterGreeterHandler(service.Server(), new(Greeter))if err != nil {fmt.Println(err)}// 运行服务if err := service.Run(); err != nil {fmt.Println(err)}
}
运行服务

访问服务

方式一:

micro call go.micro.api.hello Greeter.Hello {“name”: “John”}

方式二:

先运行命令 micro api --handler=rpc
再启动服务

方式三:

编写客户端

package mainimport ("context""fmt"micro "github.com/micro/go-micro"proto "go-micro/my-micro02/proto"
)func main() {// 创建一个服务service := micro.NewService(micro.Name("greeter.client"))// 初始化service.Init()// 创建客户端greeter := proto.NewGreeterService("go.micro.api.hello", service.Client())// 发现服务rsp, err := greeter.Hello(context.TODO(), &proto.Request{Name: "go-micro"})if err != nil {fmt.Println(err)}// 响应fmt.Println(rsp.Greeting)
}

初识go-micro相关推荐

  1. 初识micro:bit

    01什么是micro:bit micro:bit由英国广播电视公司(B B C)推出的一款专为青少年编程教育设计的微型电脑开发板. micro:bit支持Python,Java,JavaScript, ...

  2. java语言基础 : 初识计算机和Java语言-----java初识之路

    初识计算机和Java语言 第一节:计算机的体系结构(常识) 1.计算机的基本概念 计算机(Computer)俗称电脑,是一种用于高级计算,使用非常广泛的设备,主要由 计算机硬件和 计算机软件两个部分组 ...

  3. 第一阶 01 初识Java 安装Eclipse运行及推荐软件

    学习目标 * 能够说出JDK,JRE,JVM各自的作用和关系 * 能够完成HelloWorld案例的编写及运行 * 能够使用注释对程序进行说明 * 能够知道标识符.关键字的特点 * 能够知道常量的分类 ...

  4. 1.第一章 Java基础语法 第一节(一)初识java

    初识java 1.java的发展史 1.1.起源 1.2.演变 2.Java体系与特点 2.1java的体系 2.2java的应用 2.3java的特性 3.JVM,JDK,JRE与GC 3.1jav ...

  5. 行空板入门教程第一课:初识行空板

    行空板是什么? 大家可能在之前都没听说行空板,但你可能听过micro:bit.掌控板亦或者是树莓派.行空板是一款由DFRobot专为Python编程教育而设计的开源硬件,是一块有着树莓派级别性能,如m ...

  6. STM32MP1系列教程连载-硬件设计篇1:初识STM32MP1系列微处理器

    STM32MP1系列教程连载-硬件设计篇1:初识STM32MP1系列微处理器 一.与一只蝴蝶的邂逅 时间退回至2007年9月,对于刚步入大学的笔者而言,微控制器的含义仅仅局限于文字.而在同年的6月意法 ...

  7. 树莓派学习笔记——初识树莓派

    初识树莓派 树莓派简介: 树莓派由注册于英国的慈善组织"Raspberry Pi 基金会"开发,Eben·Upton/埃·厄普顿为项目带头人.2012年3月,英国剑桥大学埃本·阿普 ...

  8. 魔法女孩第一次见世面(初识java)

    初识java 前言:许多刚刚接触互联网的小可爱们,你们打开我的博客是我的荣幸 我也在一点点去探索这个看似让人秃头的行业. 在刻板印象里面,人们根本不了解java是什么? 如果你接触了他应该会知道他应该 ...

  9. 第一课:初识Java语言

    第一课:初识Java语言 一.了解Java的历史由来. 1.为什么学习Java编程语言. (1)首先要了解编程语言的流行趋势,Tiobe.PYPL排行榜. (2)在这些排行榜上,Java语言的流行程度 ...

  10. 1.初识Java语言

    初识Java语言 Why? Tiobe排行榜第一的位置 What? Java基础->网站开发(Java EE) ↓→Android开发(Kotlin) 客户端:QQ 迅雷 内网通 网站开发:京东 ...

最新文章

  1. 高数_解二元方程,复数怎么求出来的?(复数问题)
  2. mysql默认安装目录说明
  3. java数_java大数
  4. 想做测试工程师,这7件事你必须先知道
  5. selenium rc java_selenium RC+JAVA 笔记 一
  6. jeesite如何配置swagger_Spring Boot 2.x基础教程:Swagger接口分类与各元素排序问题详解...
  7. java生成离散型随机数_几种随机数生成方式
  8. linux挂马检测,检测网站挂马程序(Python)
  9. Python爬虫进阶教程(五):数据存储
  10. H5+CSS3实现官网首页--视频全屏背景
  11. 四大研究领域揭示自然语言技术的奥秘
  12. es6 使用filter给对象数组去重
  13. 0704一阶线性微分方程-微分方程
  14. 计算机考研 学渣逆袭上清华,学渣逆袭:曾挂科8门学分绩点1.08 考上北大研究生...
  15. C#IEnumerator.MoveNext 方法 ()
  16. VSC C++ 配置
  17. ECShop 商城小程序「weeshop 」- 基于 ECShop 3.6 版本开发的完整版商城小程序
  18. UDP数据包接收逻辑的优化修改以及对性能的影响
  19. 汇桔宝时代:重新定义互联网营销与流量格局!
  20. 杂志业游戏规则的改变者——《时代周刊》发行第一期NFT

热门文章

  1. 个人日记开发最终实现
  2. 如何查看浏览器http请求协议
  3. 桌面上的Internet explorer图标删不掉
  4. myeclipse把选中的字母转换成大写或者大写转小写
  5. 自定义控件学习之钟表制作
  6. flutter-Decoration
  7. JavaScript里面的“类”
  8. wazuh官方安装指南(中文译版本)
  9. kvm虚拟机扩展磁盘空间
  10. python散点图中如何添加拟合线并显示拟合方程与R方?