<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      快速構建一個Golang下通用的GRPC服務,拒絕996

      前言

      先啰嗦幾句,首先,此文章不介紹如何利用Golang實現一個GRPC的相關細節,本文為大家介紹一個框架,直接快速生成一個 GRPC 服務,你可以不用了解 GRPC 的實現細節,和 HTTP 服務一樣直接請求即可。

      該方法可以滿足大部分的 GRPC 調用需求,但無法滿足所有的需求,如你需要實現個性化的調用方式還是得慢慢研究熟悉 GRPC 的使用方法。

      通過此框架可以讓你快速實現 GRPC 服務,盡快提供一個可用的產品交付,然后慢慢熟悉了解GRPC,拒絕 996.。。

       

      為什么會來分享這個方法?這源于最近對工作中使用GRPC的一些思考。

      問題的產生:

      GRPC的優勢不用多說,大家也能從網絡上找到各種解釋,開始使用 GRPC 需要編寫 proto 文件,通過 protoc 工具生成 pb文件并開始編寫代碼... 整套流程下來對剛入手的同學非常不友好,剛開始大家都會有幾個疑問,啥是 proto 文件,啥是 pb 文件等等,等到研究完一圈,終于弄出一個 Hello World,領導就開始催這么簡單的功能怎么開沒提測,于是 996 就這樣開始了...

       

      當前的問題:

      等大家都開始用GRPC來作為服務間相互調用的常用方式后,新的問題隨之而來,大量的 proto文件散落各地,通過強有力的行政手段,讓大家規范 proto 文件存放位置也難免會出現紕漏,另外一個大問題就是其他團隊對接GRPC也經常會非常頭疼,標準流程 同步proto文件--本地實現接口--實現調用聯調,和 HTTP 接口相比,確實要繁瑣很多。

       

      方案介紹:

      參考 HTTP 服務,在實際使用中 HTTP 服務通常 GET,POST,PUT 等方法使用的頻率會比多,并且大家的服務都會按照這些方法去開發接口因此相互調用就沒有太多差異,GRPC 如果類似實現幾個請求方法,這樣大家都是用這個方法就能解決復雜 proto 的問題了,接口調用通常都是 輸入與輸出,將輸入與輸出都變成 json 結構,這樣就能用一個通用的 GRPC 方法實現類似HTTP服務的調用方式了。

       

      開始操作:

      框架介紹:目前使用的是 Orange框架,此框架目前master版本支持了 GRPC 服務,通過此框架生成的應用,既有 HTTP 服務,也有 GRPC 服務。

       

      創建一個服務端非常簡單,按照文檔,在自己的 $GOPATH/src 目錄下創建一個應用目錄,然后編寫 main.go,幾行代碼即可:

      package main
      
      import "gitee.com/zhucheer/orange/app"
      
      func main(){
         router := &Route{}
         app.AppStart(router)
      }
      
      type Route struct {
      }
      
      func (s *Route) ServeMux() {
      
         // 路由注冊,注冊一個GET請求,返回 Hello world!
         app.NewRouter("").GET("/", func(ctx *app.Context) error {
            return ctx.ToString("Hello world!")
         })
         
         // 路由注冊,注冊一個GRPC請求,返回一串信息
         app.NewRouter("").GRPC("/grpc", func(ctx *app.Context) error {
            return ctx.ToString("Hello world, this is grpc response")
         })
      
      
      }
      
      func (s *Route) Register() {
      }

       

       

      目前只master版本支持GRPC, 按如下代碼啟動項目

      ## 開啟go mod
      $ go mod init
      
      ## 先更新框架到master
      $ go get gitee.com/zhucheer/orange@master
      
      ## 啟動服務配置 GRPC 端口
      go run main.go --grpc=8989

       

      走到這一步,不出意外就能啟動服務,服務包含一個 HTTP 服務端口8088 ,和一個 GRPC 服務端口 8989

       

       

      客戶端請求:

      服務端啟動后就可以進行測試了,先驗證HTTP服務,打開瀏覽器,直接輸入 http://127.0.0.1:8088 就能看到瀏覽器輸入了一個我們代碼中編寫的 Hello World!

      GRPC調用通用也非常簡單,隨便找個目錄創建一個main.go 輸入幾行代碼:

      package main
      
      import (
          "fmt"
          "gitee.com/zhucheer/orange/grpc"
      )
      
      func main(){
          // 填上 GRPC 服務地址端口,RunGRPC 參數添加服務端路由綁定的地址
          resp, err := grpc.NewClient().SetSrvAddr("127.0.0.1:8989").RunGRPC("/grpc")
          fmt.Println("grpc response:",resp.String(), err)
      
      }

       

      go run main.go 運行起來就能成功調用剛才的 GRPC 服務端方法了,是不是非常簡單,快來試試吧。

       

      posted @ 2021-08-15 23:12  qīqíqǐqì  閱讀(314)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲熟妇丰满多毛xxxx| 日本高清无卡码一区二区| 电白县| 国产成人亚洲老熟女精品| 国产成人综合色就色综合| 国产一区二区三区在线观看免费| 黄色一级片一区二区三区| 亚洲日本VA中文字幕在线| 强奷漂亮人妻系列老师| 一区二区三区午夜无码视频| 91老肥熟女九色老女人| 久久99热成人精品国产| 亚洲国产韩国欧美在线| 久久国产成人av蜜臀| 成人av天堂网在线观看| 国产成人精品18| 乱人伦人妻精品一区二区| 国产精品亚洲二区在线播放| 欧美性群另类交| 国产精品视频全国免费观看| 人妻激情一区二区三区四区| 国产福利免费在线观看| 日本精品aⅴ一区二区三区| 亚洲成人av综合一区| 免费视频国产在线观看| 日本丰满人妻xxxxxhd| 国产喷水1区2区3区咪咪爱AV| 国产重口老太和小伙| 中文字幕国产精品日韩| 九九热久久只有精品2| 日韩av一区二区三区精品| 欧洲一区二区中文字幕| 欧美熟妇性XXXX欧美熟人多毛| 一本一道av中文字幕无码| 精品自拍偷拍一区二区三区| 精品久久久久久无码中文野结衣 | 97超级碰碰碰久久久久app| 国产粉嫩学生高清专区麻豆| 日韩精品一卡二卡在线观看| 国产96在线 | 亚洲| 国产农村乱人伦精品视频|