gRPC学习之五:gRPC-Gateway实战(1),java基础教程完整版pdf

[golang@centos7 src]$ tree helloworld/

helloworld/

├── gateway

│ └── helloworld.gw.go

├── helloworld.pb.go

├── helloworld.pb.gw.go

├── helloworld.proto

├── helloworld.swagger.json

└── server

└── server.go

  • 准备工作完成,接下来正式开始开发;

前提条件

  • 本文的所有操作都没有用到root账号,而是前文创建的golang账号;

  • 请参照以下两篇文章将GO环境和gRPC环境搭建好:

  1. 在CentOS7部署和设置GO

  2. GO的gRPC开发环境准备

极速搭建gRPC-Gateway环境

  • 所谓的搭建gRPC-Gateway环境,其实是完成以下三件事:

在这里插入图片描述

  1. 在搭建环境时参考了一些网上的文章,结果遇到了各种问题一直没有成功(我当然不会认为文章有问题,必须认识到是自己能力不足的原因所致);

  2. 经过反复折腾后终于成功后,我把所有操作做成一个shell脚本,执行以下命令即可完成上图中的所有操作:

curl -o install-grpc-gateway.sh \

https://raw.githubusercontent.com/zq2599/blog_demos/master/files/install-grpc-gateway.sh \

&& chmod a+x ./install-grpc-gateway.sh \

&& ./install-grpc-gateway.sh

  1. 进入$GOPATH/bin目录,可见新增两个文件protoc-gen-grpc-gateway和protoc-gen-swagger:

[golang@centos7 ~]$ cd $GOPATH/bin

[golang@centos7 bin]$ ls -al

总用量 26708

drwxrwxr-x. 2 golang golang 98 12月 19 08:59 .

drwxrwxr-x. 5 golang golang 39 12月 19 08:21 …

-rwxr-x—. 1 golang golang 5253272 12月 19 08:20 protoc

-rwxrwxr-x. 1 golang golang 8461147 12月 19 08:21 protoc-gen-go

-rwxrwxr-x. 1 golang golang 6717463 12月 19 08:59 protoc-gen-grpc-gateway

-rwxrwxr-x. 1 golang golang 6908535 12月 19 08:59 protoc-gen-swagger

  • 现在环境准备好了,开始开发;

编写proto文件

  • 在$GOPATH/src目录下,新建文件夹helloworld,里面新建文件helloworld.proto,内容如下,有几处要注意的地方稍后会说:

// 协议类型

syntax = “proto3”;

// 包名

package helloworld;

import “google/api/annotations.proto”;

// 定义的服务名

service Greeter {

// 具体的远程服务方法

rpc SayHello (HelloRequest) returns (HelloReply) {

option (google.api.http) = {

post: “/helloworld”

body: “*”

};

}

}

// SayHello方法的入参,只有一个字符串字段

message HelloRequest {

string name = 1;

}

// SayHello方法的返回值,只有一个字符串字段

message HelloReply {

string message = 1;

}

  • 上述proto文件有以下几处要注意的地方:
  1. 整个文件其实就是以 《初试GO版gRPC开发》一文中的helloworld.proto为基础,增加了两处内容;

  2. 增加的第一处,是用import关键词导入google/api/annotations.proto;

  3. 增加的第二处,是SayHello方法的声明处,增加了option配置,作用是配置SayHello方法对外暴露的RESTful接口的信息;

  4. 在使用protoc-gen-grpc-gateway的时候,上述两处配置会被识别到并生成对应的代码;

根据proto文件生成gRPC、gRPC-Gateway源码

  1. proto文件编写完成,接下来是生成gRPC、gRPC-Gateway的源码;

  2. 生成gRPC源码的命令咱们前面的文章中已经用过,如下:

protoc -I. \

-I$GOPATH/src \

-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \

–go_out=plugins=grpc:. \

helloworld.proto

  1. 执行完成后会在当前目录生成helloworld.pb.go文件;

  2. 执行生成gRPC-Gateway源码的命令:

protoc -I. \

-I$GOPATH/src \

-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \

–grpc-gateway_out=logtostderr=true:. \

helloworld.proto

  1. 执行完成后会在当前目录生成helloworld.pb.gw.go文件;

  2. 执行生成swagger文件的命令:

protoc -I. \

-I$GOPATH/src \

-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \

–swagger_out=logtostderr=true:. \

helloworld.proto

  1. 执行完成后会在当前目录生成helloworld.swagger.json文件;

  2. 至此,helloworld目录下一共有这些内容:

[golang@centos7 src]$ tree helloworld/

helloworld/

├── helloworld.pb.go

├── helloworld.pb.gw.go

├── helloworld.proto

└── helloworld.swagger.json

0 directories, 4 files

  1. 接下来开始编码,把运行整个服务所需的代码补全;

  2. 由于篇幅限制,本文暂不提及swagger相关的开发和验证,因此生成的helloworld.swagger.json文件本篇用不上,留待下一篇文章使用;

编写服务端代码server.go并启动

  1. 接下来编写服务端代码server.go,这个和《初试GO版gRPC开发》中的server.go内容一样;

  2. 在$GOPATH/src/helloworld目录下新建文件夹server,在此文件夹下新建server.go,内容如下,已经添加详细注释:

package main

import (

“context”

“log”

“net”

“google.golang.org/grpc”

pb “helloworld”

)

const (

port = “:50051”

)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。

为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的

并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

算法刷题(PDF)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

mg-ar5H4eAV-1712637470361)]

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

[外链图片转存中…(img-mPfcyMAg-1712637470362)]

算法刷题(PDF)

[外链图片转存中…(img-talfu5yL-1712637470362)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-4XZOiTKF-1712637470362)]

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值