gRPC- HTTP网关 I

简介: gRPC- HTTP网关 I

gRPC- HTTP网关 I

gRPC是什么?我们再来回顾一下

gRPC是 Google开发的基于HTTP/2标准设计的一个通用的,高性能的RPC框架,有如下3个最明显的特点:

  • 支持主流的编程语言,C++,Java,Python,Go,Ruby等,基于ProtoBuf生成相应的服务端和客户端代码。
  • 基于HTTP/2协议,且提供了更强的应用性能 – 节省带宽,减少TCP请求连接数
  • 基于ProtoBuf定义服务,面向接口对服务进行设计

具体的,这篇文章都有介绍到 – gRPC的介绍

HTTP网关是什么?

分享gRPC 的HTTP网关之前,先来大致说说 HTTP网关是什么

网关是啥?

网关(Gateway)就是一个网络连接到另一个网络的关口

网关他是一个设备,将两个使用不同传输协议的网络段连接在一起,网关一般用作网络的入口和出口点,因为所有数据必须在路由之前通过或与网关通信。

网关所有网络都有一个边界,限制与直接连接到它的设备的通信。如果网络想要与该边界之外的设备,节点或网络通信,则它们需要网关的功能。网关通常被表征为路由器和调制解调器的组合。

HTTP网关那就不难理解,是基于HTTP请求的网络关口

HTTP网关都有哪些嘞?

  • HTTP/* ,服务器端Web网关

例如,客户端在网络上下载资源,客户端通过http协议访问到web网关,web网关识别到请求之后,转成ftp协议,请求ftp服务器,进行文件的上传和下载

  • HTTP/HTTPS ,服务器端安全网关

安全网关,应该就能想到加密

网关对所有的输入Web请求加密,以提供额外的隐私和安全性保护。哪怕客户端可以用普通的HTTP浏览Web内容,但网关会自动加密用户的对话,保证安全性

  • HTTPS/HTTP客户端安全加速器网关

在HTTP请求前加上HTTPS进行拦截,保障流量的安全

将HTTPS/HTTP网关作为安全加速器,这些HTTPS/HTTP网关一般是在放Web服务器之前,通常作为不可见的拦截网关或反向代理使用。它们接收安全的HTTPS处理过的流量,对安全流量进行解密,并向Web服务器发送普通的HTTP请求

也就是说正常情况下,若流量能到web,说明流量是安全的

  • 其他资源网关

例如访问某些应用程序的内部数据,这是通过网络连接客户端和服务器的网关。

即网关就在 应用程序对应的服务器上,与客户端通过HTTP / HTTPS进行通信,并与自身服务器端的应用程序相连

gRPC-Gateway

Golang开发程序的时候,一般gRPC对内,用于微服务之间的内部通信,HTTP接口暴露出来,提供给前端,或者是客户端。

我们的微服务中既要有内部通信的gRPC,又要写对外暴露的HTTP接口,似乎无形中增加了不少工作量,维护两个版本的服务,这种做法是不是很low。那么有没有一种办法可以将2种方式结合,或者说是简化呢?

当然是有的,gRPC为我们提供了一个很方便的gRPC-Gateway插件

gRPC-Gateway是什么?

protoc的一个优秀的插件

gRPC-Gateway提供了基于proto文件中的服务接口定义生成HTTP的反向代理的能力。对于同一个标准的gRPC服务定义,除了基本的gRPC客户端以外还能生成相应的HTTP JSON的接口实现代码

它可以通过google提供的标准接口google/api/annotations.proto,我们能够对原有Protobuf服务,描述成其相应的HTTP接口形式

具体是这样的结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ixl1gZaF-1622641660097)(C:\Users\Administrator\Desktop\image-20210602145356569.png)]

gRPC-Gateway有啥优势呢?

是啊,我们写微服务,对内用gRPC,对外用HTTP, 一个服务里面写2套接口,累是累了点,可是 gRPC-Gateway仅仅就是写gRPC服务同时也可以用于HTTP接口吗?

当然不是

使用 gRPC-Gateway的优势如下

  • 可以保持Restful的简单性

gRPC-Gateway工具,让我们可以很快速的基于proto接口定义,在使用RPC的同时对外提供Restful

使用gRPC的原有Protobuf服务一样可以感受到Restful的简单性,犹如直接写的HTTP接口,简单易用

  • 同时还可以充分提升应用内部的性能以及可靠性

这是RPC框架的本身优势,RPC专为分布式应用的高性能和高生产率设计而设计的

使用gRPC提供HTTP接口有啥注意事项?

  • gRPC提供的HTTP接口是基于HTTP 2.0
  • 别太爽就行

总结

  • 回顾gRPC基本要点
  • HTTP网关的介绍
  • 引出gRPC-gateway,以及其基本结构

好了,本次就到这里,下一次分享gRPC-gateway的实际环境搭建,案例编码,调试技巧,以及效果输出

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是小魔童哪吒,欢迎点赞关注收藏,下次见~

相关文章
|
2月前
|
Cloud Native 算法 区块链
站在巨人的肩膀上:gRPC通过HTTP/2构建云原生时代的通信标准
gRPC是云原生时代高效通信标准,基于HTTP/2实现,支持四种服务方法。通过.proto文件定义接口,生成多语言Stub,实现跨语言调用。其请求响应结构清晰,结合Headers、Data帧与Trailers,保障高性能与可扩展性,广泛应用于微服务架构中。
184 0
|
5月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
320 14
|
7月前
|
XML 网络协议 程序员
Apipost接口调试全解:从HTTP到gRPC,程序员必备的“协议生存指南
Apipost是一款强大的接口调试工具,支持多种主流API协议。它涵盖HTTP/HTTPS、WebSocket、Socket.IO、gRPC、GraphQL、TCP及ISO8583金融报文等冷门协议。通过Body多样化、全局参数配置、性能分析等功能优化HTTP调试;提供WebSocket多消息存档与事件监听;gRPC支持服务反射和流式调试;GraphQL可自动生成Schema;TCP报文模板专业精准;SSE配置简单。此外,Apipost还具备环境变量、脚本加持和文档生成功能,是提升开发效率的全能工具。
|
7月前
|
JSON JavaScript 前端开发
gRPC技术中的gRPC到HTTP的转换
从上述内容,我们可以看到,gRPC到HTTP的转换并没有改变gRPC强大的性能和可扩展性。它只是让这些强大的功能能更好地适应不同的环境和需求,兼容了更广泛的网络设施。所以,技术总是在变化,并且始终在寻找更好的平衡点,以满足不断变化的业务需求。我们也应该持续学习,掌握这些新的变化,以便更好地解决实际问题。
244 11
|
前端开发 C# 开发者
WPF开发者必读:MVVM模式实战,轻松构建可维护的应用程序,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离关注点,提高了代码的可维护性和可扩展性。本文详细介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定与逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种模式,开发者可以更高效地构建桌面应用程序。希望本文能帮助你在WPF开发中更好地应用MVVM模式。
833 1
|
负载均衡 中间件 Go
五分钟给你的 gRPC 服务加上 HTTP 接口
五分钟给你的 gRPC 服务加上 HTTP 接口
|
网络协议 编译器 Go
揭秘!TCP、RPC、gRPC、HTTP大PK,谁才是网络通信界的超级巨星?一篇文章带你秒懂!
【8月更文挑战第25天】本文以教程形式深入对比了TCP、RPC、gRPC与HTTP这四种关键通信协议,并通过Go语言中的示例代码展示了各自的实现方法。TCP作为一种可靠的传输层协议,确保了数据的完整性和顺序性;RPC与gRPC作为远程过程调用框架,特别适合于分布式系统的函数调用与数据交换,其中gRPC在性能和跨语言支持方面表现出色;HTTP则是广泛应用于Web浏览器与服务器通信的应用层协议。选择合适的协议需根据具体需求综合考量。
1140 0
|
Web App开发 新零售 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.尽可能地了解需求,系统层面适用开闭原则 2.模块化,低耦合,能快速响应变化,也可以避免一个子系统的问题波及整个大系统 3.
864 0
|
Web App开发 前端开发 Android开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
使用MAT分析内存泄露 对于大型服务端应用程序来说,有些内存泄露问题很难在测试阶段发现,此时就需要分析JVM Heap Dump文件来找出问题。
925 0
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
系统的升级涉及各个架构组件,细节很多。常年累月的修修补补使老系统积累了很多问题。 系统升级则意味着需要repair之前埋下的雷,那为何还要升级,可以考虑以下几个方面 成熟老系统常见问题: 1. 缺乏文档(这应该是大小公司都存在的问题。
704 0