Micro入门

10 篇文章 0 订阅

一、Micro介绍

Micro是一个专注于简化分布式系统开发的微服务生态系统。它通过将微服务架构抽象成一组工具,隐藏了分布式系统的复杂性,为开发人员提供了更简洁的方式构建分布式应用。我们可以在Go环境下使用Micro来搭建分布式应用系统。

实际上,micro是一个插件化的微服务架构的框架,它默认就支持protobuf、grpc、consul等技术。micro能够帮我们完成服务注册的操作,减去用户自己手动发布服务的麻烦。

二、Micro下载和安装

$ go get -u -v github.com/go-log/log
$ go get -u -v github.com/gorilla/handlers
$ go get -u -v github.com/gorilla/mux
$ go get -u -v github.com/gorilla/websocket
$ go get -u -v github.com/mitchellh/hashstructure
$ go get -u -v github.com/nlopes/slack
$ go get -u -v github.com/pborman/uuid
$ go get -u -v github.com/pkg/errors
$ go get -u -v github.com/serenize/snaker
$ go get -u -v github.com/hashicorp/consul
$ go get -u -v github.com/miekg/dns
$ go get -u -v github.com/micro/micro

执行go get -u -v github.com/hashicorp/consul命令可能会出错。如果出错了,可以先到github上下载它的压缩包,然后再解压缩到$GOPATH/src/github.com/hashicorp目录下即可。

下载完成后,编译micro。

$ cd $GOPATH/src/github.com/micro/micro
$ go build -o micro main.go

把编译后的执行文件复制到/bin/目录下。

sudo cp micro /bin/

然后再把下面两个插件安装上即可。

# 安装protoc-gen-go和protoc-gen-micro插件
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
$ go get -u github.com/micro/protoc-gen-micro

# 编译后生成protoc-gen-go可执行文件
$ go build

# 将生成protoc-gen-go可执行文件拷贝到/bin目录下
$ sudo cp protoc-gen-go /bin/

三、Micro的基本演示

第一步:创建两个服务。

$ micro new --type "srv" microtest/micro/rpc/srv
$ micro new --type "web" microtest/micro/rpc/web

创建成功后,会在$GOPATH/src/microtest/micro/rpc目录下新建两个文件夹,如下图所示:
在这里插入图片描述
第二步:编译srv下的proto文件。

$ cd $GOPATH/src/microtest/micro/rpc/srv
$ protoc --proto_path=. --go_out=. --micro_out=. proto/example/example.proto

编译成功后如下图所示:
在这里插入图片描述
第三步:打开web下的main.go文件,设置web端的端口号。在这里插入图片描述
如果没有设置端口号,那么启动web端的时候,系统会自动分配一个端口号,所以建议手动指派端口号。

第四步:把准备好的html覆盖web下的html文件夹。
链接:https://pan.baidu.com/s/1GBMbe-O3j_E_cUPQxRukSQ
提取码:punt

第五步:修改srv下的main.go,导入srv下proto存储目录下的所有proto文件。
在这里插入图片描述
同样地,修改srv/handler目录下的example.go文件,导入srv下proto存储目录下的所有proto文件。
在这里插入图片描述
第六步:修改web/handler目录下的handler.go文件,修改内容如下:
在这里插入图片描述
第七步:修改完成后,启动服务。

# 启动consul
$ cd $GOPATH/src/microtest
$ consul agent -dev -client 0.0.0.0

# 启动服务
$ cd $GOPATH/src/microtest/rpc/srv
$ go run main.go

# 启动web
$ cd $GOPATH/src/microtest/rpc/web
$ go run main.go

启动完成后,在浏览器上输入http://192.168.31.20:8080,界面如下图所示:
在这里插入图片描述
我们也可以通过地址http://192.168.31.20:8500查看所有服务。

四、调用服务过程分析

4.1 web服务

首先web服务接收到用户请求后,会调用handler/handler.go中的ExampleCall函数。
在这里插入图片描述
接着,在ExampleCall函数中创建服务对象exampleClient。创建该对象的时候指定了要调用远程服务的名字。
在这里插入图片描述
获取参数name,然后再通过调用exampleClient对象的Call函数执行远程调用,并把name参数发送过去。Call函数返回远程服务的结果。
在这里插入图片描述
如果调用成功,那么就把结果封装到一个map对象中,并把它进行加密后输出到页面上。
在这里插入图片描述

4.2 srv服务

执行main.go的时候,注册了一个服务,并指定服务名为“go.micro.srv.srv”。
在这里插入图片描述
初始化服务,然后注册处理器Example。当服务被调用时候,会自动执行该处理器的Call函数。
在这里插入图片描述
在Call函数中,通过example.Response对象把内容返回给服务的调用者,从而完成整个服务调用。
在这里插入图片描述

五、升级GRPC

micro默认使用rpc进行服务之间的通信。所以,如果要使用grpc进行通信,那么需求对micro进行改造。

5.1 环境准备

首先,从$GOPATH/src/microtest/micro文件夹复制另外一个文件夹,并且命名为grpc。

$ cd $GOPATH/src/microtest/micro
$ cp -r rpc grpc

接下来对srv和web模块进行改造。

5.2 改造srv模块

5.2.1 修改main.go文件

第一步:导入go-grpc;
在这里插入图片描述
第二步:使用grpc创建服务。
在这里插入图片描述

5.2.2 修改example.go文件

在这里插入图片描述

5.3 改造web模块

5.3.1 修改main.go文件

在这里插入图片描述

5.3.2 修改handler/handler.go文件

第一步:导入go-grpc;
在这里插入图片描述
第二步:创建grpc服务;
在这里插入图片描述
第三步:在调用服务方法的时候传入grpc服务的client对象;
在这里插入图片描述

5.4 测试

第一步:重新编译srv下的proto文件;

$ cd $GOPATH/src/microtest/micro/rpc/srv
$ protoc --proto_path=. --go_out=. --micro_out=. proto/example/example.proto

第二步:启动srv和web。

# 启动srv
$ cd $GOPATH/src/microtest/micro/rpc/srv
$ go run main.go

# 启动web
$ cd $GOPATH/src/microtest/micro/rpc/web
$ go run main.go

第三步:测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值