gRPC- HTTP網關 I

[TOC]前端

gRPC- HTTP網關 I

gRPC是什麼?咱們再來回顧一下web

gRPC是 Google開發的基於HTTP/2標準設計的一個通用的,高性能的RPC框架,有以下3個最明顯的特色:編程

  • 支持主流的編程語言,C++,Java,Python,Go,Ruby等,基於ProtoBuf生成相應的服務端和客戶端代碼。
  • 基於HTTP/2協議,且提供了更強的應用性能 -- 節省帶寬,減小TCP請求鏈接數
  • 基於ProtoBuf定義服務,面向接口對服務進行設計

具體的,這篇文章都有介紹到 -- gRPC的介紹api

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接口形式

具體是這樣的結構

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的實際環境搭建,案例編碼,調試技巧,以及效果輸出

技術是開放的,咱們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。

我是小魔童哪吒,歡迎點贊關注收藏,下次見~

相關文章
相關標籤/搜索