Go + cousul 治理微服务(proto编写)【一】

proto

编写 proto 我认为比较显著的优点有:

1、性能好/效率高

时间开销: XML格式化(序列化)的开销还好;但是XML解析(反序列化)的开销就不敢恭维了。 但是protobuf在这个方面就进行了优化。可以使序列化和反序列化的时间开销都减短。、

2、支持多种编程语言

可以生成 java ,go,py ,php 之类的代码,啥时候你不想用Go写RPC服务了,你可以用这个proto文件生成Java的接口,无缝对接。

这个系列我用订单做个微服务helloword

这个proto就像我们变成中的实现接口(interface)

开始编码

创建一个 order-micro 的项目

在proto 目录下创建一个 order.proto 文件

syntax = "proto3";
option go_package = "./;OrderService";
package OrderService;
service OrderService {
    rpc CreateOrder (Request) returns(Response){}
}
message Request {
    string goodsId = 1;
    string buyNum = 2;
}
message Response{
    int32  code = 1;
    string msg =2;
    int64 orderID =3;
}

第一行中 syntax = "proto3"; 定义proto的版本,这边版本为3 ,protoc 就像是一个编程语言,也有自己的语法,每个版本可能有一些不同。

option go_package = "./;OrderService"; 

为生成的代码文件的目录,以及生成的包名,包名定义为 OrderService,在当前目录下生成。

下面的 service 就像是一个类,rpc 的方法 CreateOrder 请求和返回的参数有啥

goodsId = 1 ,不是赋值 goodsId 就是为1 ,这个就像是一个标识符,你多谢几个参数,就累加就行了。

利用proto生成golang代码

现在比较多了用docker 生成proto 文件,其实是可以的哈,比如这个库

znly/protoc

执行

 docker run --rm -u $(id -u) -v${PWD}:${PWD} -w${PWD} znly/protoc  -I$(pwd) ${PWD}/*.proto --go_out=${PWD} --micro_out=.

本人,执行会有点小小的问题,所以我就不用docker演示 了,但这个是可以的哈,可以看文档

我本地是windows 就下载windows版

执行:

protoc ./order.proto --go_out=./ --micro_out=./

可以 看到目录中已经出现了两个Go文件了

在这里插入图片描述

为了同学们可以更直观的体验,我把源码传到github ,大家可以看commit 查看教程相应的代码

git init
git add .
git commit -m "proto编写与生成"

如果本系列课程能给你带来帮助,可以点一下关注,后面带来更多分享

源码

https://github.com/liaoshengping/Go-Consul-Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廖圣平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值