塑料盒子 發表於 2020-1-13 18:04:00

Go GRPC 入门(一)

<h1 id="前言">前言</h1>
<p>微服务相关<br>
使用 <code>GRPC</code> 通讯的 <code>Golang</code> 微服务入门<br>
举例写一个微服务,接收网址发送请求获取返回结果返回</p>
<h1 id="正文">正文</h1>
<h2 id="安装工具">安装工具</h2>
<h3 id="安装-protobuf">安装 protobuf</h3>
<p>这是 proto 文件的编译器<br>
点我下载<br>
选择最新的 releases 中的适合你版本的包下载即可<br>
如 windows 选 win64.zip 下载后解压<br>
<img src="https://img2018.cnblogs.com/blog/1268810/202001/1268810-20200113172113955-1120155186.png"><br>
解压后打开包内的 bin 文件夹,里面有 protoc.exe<br>
<img src="https://img2018.cnblogs.com/blog/1268810/202001/1268810-20200113172226879-906547471.png"><br>
将其粘贴到windows的环境变量中的某一个文件夹内以便在 CMD 中随地可访问<br>
比如将其放至 <code>C:\Windows</code> 下<br>
打开 CMD 输入 <code>protoc --version</code><br>
成功打印当前版本即可<br>
<img src="https://img2018.cnblogs.com/blog/1268810/202001/1268810-20200113172511407-876901105.png"></p>
<h3 id="安装相关包">安装相关包</h3>
<p>安装 <code>golang</code> 的proto工具包<br>
<code>go get -u github.com/golang/protobuf/proto</code><br>
安装 <code>goalng</code> 的proto编译支持<br>
<code>go get -u github.com/golang/protobuf/protoc-gen-go</code><br>
安装 <code>GRPC</code> 包<br>
<code>go get -u google.golang.org/grpc</code></p>
<h2 id="创建项目">创建项目</h2>
<p>模拟微服务开发,在某个空文件夹下建立两个文件夹<br>
分别为 <code>client</code> 和 <code>server</code></p>
<h2 id="创建-proto-文件">创建 proto 文件</h2>
<p>proto 文件是微服务交互的基本<br>
proto的语法可见<br>
GoogleDocs<br>
这里简单写一个示例(spider.proto)</p>
<pre><code class="language-proto">syntax = "proto3";// 协议为proto3

package spider;// 包名

// 发送请求
message SendAddress {
    // 发送的参数字段
    // 参数类型 参数名 标识号(不可重复)
    string address = 1;// 要请求的地址
    string method = 2;// 请求方式
}

// 返回响应
message GetResponse {
    // 接收的参数字段
    // 参数类型 参数名 标识号
    int32 httpCode = 1;// http状态码
    string response = 2;// 返回体
}

// 定义服务,可定义多个服务,每个服务可多个接口
service GoSpider {
    // rpc请求 请求的函数 (发送请求参数) returns (返回响应的参数)
    rpc GetAddressResponse (SendAddress) returns (GetResponse);
}
</code></pre>
<h2 id="生成-bpgo-文件">生成 <code>.bp.go</code> 文件</h2>
<p>使用刚才下载的 protoc 工具将 proto 文件编译成 golang 可识别的文件</p>
<pre><code class="language-golang">protoc --go_out=. --go_opt=paths=source_relative \
    --go-grpc_out=. --go-grpc_opt=paths=source_relative \
    ./exp.proto
</code></pre>
<p>运行后会在当前目录下生成 <code>spider.pb.go</code> 文件<br>
该文件是 server 和 client 的通信协议,业务代码不在这里,所以除非必须改,否则勿动</p><br><br>
来源:https://www.cnblogs.com/chnmig/p/12188604.html
頁: [1]
查看完整版本: Go GRPC 入门(一)