您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Go语言

go-micro的安装和使用

时间:2021-09-06 13:43:45  来源:石老师小跟班  作者:

go-micro是基于 Go 语言用于开发的微服务的 RPC 框架,主要功能如下:

服务发现,负载均衡 ,消息编码,请求/响应,Async Messaging,可插拔接口,最后这个功能牛p

安装步骤

安装protobuf

protobuf是谷歌提供的一种高效的协议数据交换格式工具库,类似于xml,json,但是相比他们更高效,体积更小

地址:https://github.com/protocolbuffers/protobuf/releases,找到对应的版本下载,解压,并配置环境变量,我在Ubuntu下

操作

方法如下

#下载

https://github.com/protocolbuffers/protobuf/releases/download/v3.17.3/protoc-3.17.3-linux-x86_64.zip

#解压 目录/usr/local

unzip protoc-3.17.3-linux-x86_64.zip

#设置环境变量 ~/.bashrc文件下

export PATH=$PATH:/usr/local/protoc/bin

#生效

source ~/.bashrc

下载相关的依赖

go get -u github.com/golang/protobuf/proto

go get -u github.com/golang/protobuf/protoc-gen-go

//go get github.com/micro/micro/v3/cmd/protoc-gen-micro

go get github.com/asim/go-micro/cmd/protoc-gen-micro/v3

安装v3版本的micro

go get github.com/micro/micro/v3

安装二进制文件

#linuxr操作

wget -q https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh -O - | /bin/bash

基本操作

帮助命令

micro -h 

#命令如下

auth      Manage authentication, accounts and rules
call      Call a service e.g micro call greeter Say.Hello '{"name": "John"}'
cli       Run the interactive CLI
config    Manage configuration values
env       Get/set micro cli environment
gen       Generate a micro related dependencies e.g protobuf
get       Get resources from micro
health    Get the service health
init      Generate a profile for micro plugins
kill      Kill a service: micro kill [source]
login     Interactive login flow.
logout    Logout.
logs      Get logs for a service e.g. micro logs helloworld
network   Manage the micro service network
new       Create a service template
run       Run a service: micro run [source]
server    Run the micro server
service   Run a micro service
services  List services in the registry
stats     Query the stats of specified service(s), e.g micro stats srv1 srv2 srv3
status    Get the status of services
store     Commands for accessing the store
stream    Create a service stream e.g. micro stream foo Bar.Baz '{"key": "value"}'
update    Update a service: micro update [source]
user      Print the current logged in user
help, h   Shows a list of commands or help for one command

运行服务

micro server

登录: 用户名: admin 密码:micro

micro login

登录成功后可以查看服务

micro servers

#显示如下

api auth broker config events network proxy registry runtime server store

查看运行状态

micro status

查看日志

micro logs 服务名

创建服务

micro new 服务名

创建服务案例

编写hello.proto文件

//目录路径:
/mnt/d/go/go-micro/proto/hello.proto

syntax = "proto3";

//如果不加会报错

//说明:option go_package = "path;name";

//path 表示生成的go文件的存放地址,会自动生成目录的。

//name 表示生成的go文件所属的包名

option go_package="./;hello";

//结构体

message InfoRequest{

string username=1;

}

message InfoResponse{

string msg=2;

}

//定论接口

service Hello{

rpc Info(InfoRequest)returns (InfoResponse);

}

在proto文件所在的目录生成对应的go文件

命令如下:会在当前目录下生成hell.pb.go文件

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

编写一 个server文件测试

//文件路径
:/mnt/d/go/go-micro/proto/server.go

//代码如下

package main

import (

"fmt"

"github.com/asim/go-micro/v3"

"context"

proto "test/go-micro/proto"

)

/*

Example usage of top level service initialisation

*/

type Greeter struct{}

func (g *Greeter) Hello(ctx context.Context, req *proto.Request, rsp *proto.Response) error {

rsp.Greeting = "Hello " + req.Name

return nil

}

func main() {

// 创建一个服务

service := micro.NewService(

micro.Name("greeter"),

micro.Address(":8081"),

micro.Version("latest"),

micro.Metadata(map[string]string{

"type": "helloworld",

"content-type":"Application/json",

}),

)

//初始化

service.Init(

)

// 注册服务

proto.RegisterGreeterHandler(service.Server(), new(Greeter))

// 启动服务

if err := service.Run(); err != nil {

fmt.Println(err)

}

}

客户端调用

命令如下:

micro call greeter Greeter.Hello '{"name": "John"}'

返回值如下:

{ "greeting": "Hello John" }



Tags:go-micro   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
go-micro是基于 Go 语言用于开发的微服务的 RPC 框架,主要功能如下:服务发现,负载均衡 ,消息编码,请求/响应,Async Messaging,可插拔接口,最后这个功能牛p安装步骤安装proto...【详细内容】
2021-09-06  Tags: go-micro  点击:(196)  评论:(0)  加入收藏
▌简易百科推荐
zip 是一种常见的归档格式,本文讲解 Go 如何操作 zip。首先看看 zip 文件是如何工作的。以一个小文件为例:(类 Unix 系统下)$ cat hello.textHello!执行 zip 命令进行归档:$ zip...【详细内容】
2021-12-17  Go语言中文网    Tags:Go语言   点击:(12)  评论:(0)  加入收藏
大家好,我是 polarisxu。前段时间,Russ Cox 明确了泛型相关的事情,原计划在标准库中加入泛型相关的包,改放到 golang.org/x/exp 下。目前,Go 泛型的主要设计者 ianlancetaylor 完...【详细内容】
2021-11-30  Go语言中文网    Tags:slices 包   点击:(24)  评论:(0)  加入收藏
前言最近因为项目需要写了一段时间的 Go ,相对于 Java 来说语法简单同时又有着一些 Python 之类的语法糖,让人大呼”真香“。 但现阶段相对来说还是 Python 写的多一些,偶尔还...【详细内容】
2021-11-25  crossoverJie    Tags:Go   点击:(29)  评论:(0)  加入收藏
go-micro是基于 Go 语言用于开发的微服务的 RPC 框架,主要功能如下:服务发现,负载均衡 ,消息编码,请求/响应,Async Messaging,可插拔接口,最后这个功能牛p安装步骤安装proto...【详细内容】
2021-09-06    石老师小跟班  Tags:go-micro   点击:(196)  评论:(0)  加入收藏
GoLand 2021.2 EAP 5 现已发布。用户可以从工具箱应用程序中获得 EAP 构建,也可以从官方网站手动下载。并且从此 EAP 开始,只有拥有有效的 JetBrains 帐户才能加入该计划。手...【详细内容】
2021-06-29  IT实战联盟  今日头条  Tags:GoLand   点击:(185)  评论:(0)  加入收藏
作者:HDT3213今天给大家带来的开源项目是 Godis:一个用 Go 语言实现的 Redis 服务器。支持: 5 种数据结构(string、list、hash、set、sortedset) 自动过期(TTL) 发布订阅、地理位...【详细内容】
2021-06-18  HelloGitHub  今日头条  Tags:Go   点击:(125)  评论:(0)  加入收藏
统一规范篇合理规划目录本篇主要描述了公司内部同事都必须遵守的一些开发规矩,如统一开发空间,既使用统一的开发工具来保证代码最后的格式的统一,开发中对文件和代码长度的控制...【详细内容】
2021-05-18  1024课堂    Tags:Go语言   点击:(232)  评论:(0)  加入收藏
闭包概述 闭包不是Go语言独有的概念,在很多编程语言中都有闭包 闭包就是解决局部变量不能被外部访问的一种解决方案 是把函数当作返回值的一种应用 代码演示总体思想:在函数...【详细内容】
2021-05-14  HelloGo  今日头条  Tags:Go语言   点击:(223)  评论:(0)  加入收藏
一时想不开,想了解一下Go语言,于是安装了并体验了一下。下载1. 进入golang.google.cn 点击Download Go 2.选择对应的操作系统,点击后开始下载。 安装1. windows下执行傻瓜式安...【详细内容】
2021-05-12  程序员fearlazy  fearlazy  Tags:Go语言   点击:(236)  评论:(0)  加入收藏
1.简介channel是Go语言的一大特性,基于channel有很多值得探讨的问题,如 channel为什么是并发安全的? 同步通道和异步通道有啥区别? 通道为何会阻塞协程? 使用通道导致阻塞的协程...【详细内容】
2021-05-10  程序员麻辣烫  今日头条  Tags:Go通道   点击:(272)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条