<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          RK Boot企業(yè)級 Go 語言微服務(wù)框架

          聯(lián)合創(chuàng)作 · 2023-09-28 04:52

          RK Boot 是企業(yè)級 Go 語言微服務(wù)框架。靈感來源于 Spring Boot 項目。

          與傳統(tǒng)的微服務(wù)框架不同,rk-boot 致力于【整合現(xiàn)有流行框架】以及【整合企業(yè)級別組件】的目的。使用者可以通過 rk-boot,通過簡短的 YAML 文件,在1分鐘之內(nèi),快速搭建【符合企業(yè)級別】要求的 Go 微服務(wù)。用戶可以根據(jù)需要,選擇底層 RPC 通信框架,例如 GingRPC。

          為什么需要 rk-boot?

          • 通過 rk-boot,構(gòu)建企業(yè)級別的 Go 微服務(wù)項目。

          • 通過 rk-boot,自動添加企業(yè)級別日志,監(jiān)控,調(diào)用鏈,權(quán)限到微服務(wù)中。

          • 通過 rk-boot,快速切換核心依賴,例如 RPC 框架,日志框架。

          • 通過 rk-boot,節(jié)省開源框架的復(fù)雜學(xué)習(xí)過程,直接以 YAML 文件的形式,導(dǎo)入功能,無需寫代碼。

          • 自定義 Entry,用戶可以基于 rk-boot 拓展自己的微服務(wù),實現(xiàn)無代碼啟動服務(wù)的目的。

          安裝

          go get -u github.com/rookie-ninja/rk-boot

          快速開始

          用 YAML 文件,啟動 Gin 微服務(wù)

          ---
          gin:
            - name: greeter
              port: 8080
              sw:
                enabled: true     # Enable swagger UI
              commonService:
                enabled: true     # Enable common service
              tv:
                enabled:  true    # Enable RK TV
          package main
          
          import (
          	"context"
          	"github.com/rookie-ninja/rk-boot"
          )
          
          func main() {
          	// Create a new boot instance.
          	boot := rkboot.NewBoot()
          
          	// Bootstrap
          	boot.Bootstrap(context.Background())
          
          	// Wait for shutdown sig
          	boot.WaitForShutdownSig(context.Background())
          }
          $ go run main.go
          $ curl -X GET localhost:8080/rk/v1/healthy
          {"healthy":true}

          用 YAML 文件,啟動 gRPC 微服務(wù)

          ---
          grpc:
            - name: greeter       # Name of grpc entry
              port: 8080          # Port of grpc entry
              enableReflection: true
              commonService:
                enabled: true     # Enable common service
              tv:
                enabled: true     # Enable RK TV
              sw:
                enabled: true     # Enable Swagger UI
          package main
          
          import (
          	"context"
          	"github.com/rookie-ninja/rk-boot"
          )
          
          // Application entrance.
          func main() {
          	// Create a new boot instance.
          	boot := rkboot.NewBoot()
          
          	// Bootstrap
          	boot.Bootstrap(context.Background())
          
          	// Wait for shutdown sig
          	boot.WaitForShutdownSig(context.Background())
          }
          $ go run main.go
          $ curl -X GET localhost:8080/rk/v1/healthy
          {"healthy":true}

          訪問 RK TV:http://localhost:8080/rk/v1/tv

          Gin 框架中間件(middleware)

          在任何 RPC 框架中,中間件/攔截器是不可或缺的一部分,比如日志攔截器(對于每一個 RPC 請求寫日志),權(quán)限攔截器(對以每一個 RPC 請求驗證權(quán)限)等等。rk-boot 中定義了一系列常用的【企業(yè)級別】攔截器,請訪問 rk-gin,或者 rk-boot 基礎(chǔ)指南獲取更多信息。

          • 日志攔截器
          • Prometheus Metrics 攔截器
          • 權(quán)限攔截器
          • 調(diào)用鏈攔截器
          • Panic 攔截器
          • 原數(shù)據(jù)攔截器

          例子:日志攔截器

          無需編寫代碼!

          修改 YAML 文件,并啟動 Go 服務(wù)即可。

          gin:
            - name: greeter                             # Required
              port: 8080                                # Required
              commonService:                            # Optional
                enabled: true                           # Optional, default: false
              interceptors:                             # Optional
                loggingZap:
                  enabled: true                         # Enable logging middleware
          $ go run main.go
          // 發(fā)送請求
          $ curl -X GET localhost:8080/rk/v1/healthy
          {"healthy":true}
          # 打印日志如下:
          ------------------------------------------------------------------------
          endTime=2021-07-05T23:42:35.588164+08:00
          startTime=2021-07-05T23:42:35.588095+08:00
          elapsedNano=69414
          timezone=CST
          ids={"eventId":"9b874eea-b16b-4c46-b0f5-d2b7cff6844e"}
          app={"appName":"rk-demo","appVersion":"master-f414049","entryName":"greeter","entryType":"GinEntry"}
          env={"arch":"amd64","az":"*","domain":"*","hostname":"lark.local","localIP":"10.8.0.2","os":"darwin","realm":"*","region":"*"}
          payloads={"apiMethod":"GET","apiPath":"/rk/v1/healthy","apiProtocol":"HTTP/1.1","apiQuery":"","userAgent":"curl/7.64.1"}
          error={}
          counters={}
          pairs={}
          timing={}
          remoteAddr=localhost:56274
          operation=/rk/v1/healthy
          resCode=200
          eventStatus=Ended
          EOE

          其他攔截器

          請訪問 rk-gin,或者 rk-boot 基礎(chǔ)指南獲取更多信息

          gRPC 框架攔截器(interceptor)

          在任何 RPC 框架中,中間件/攔截器是不可或缺的一部分,比如日志攔截器(對于每一個 RPC 請求寫日志),權(quán)限攔截器(對以每一個 RPC 請求驗證權(quán)限)等等。rk-boot 中定義了一系列常用的【企業(yè)級別】攔截器,請訪問 rk-grpc,或者 rk-boot 基礎(chǔ)指南獲取更多信息。

          • 日志攔截器
          • Prometheus Metrics 攔截器
          • 權(quán)限攔截器
          • 調(diào)用鏈攔截器
          • Panic 攔截器
          • 原數(shù)據(jù)攔截器

           例子:日志攔截器

          無需編寫代碼!

          修改 YAML 文件,并啟動 Go 服務(wù)即可。

          ---
          grpc:
            - name: greeter                   # Name of grpc entry
              port: 8080                      # Port of grpc entry
              commonService:
                enabled: true                 # Enable common service for testing
              interceptors:
                loggingZap:
                  enabled: true
          $ go run main.go
          // 發(fā)送請求
          $ curl -X GET localhost:8080/rk/v1/healthy
          {"healthy":true}
          # 打印日志如下:
          # logs would be printed as bellow.
          ------------------------------------------------------------------------
          endTime=2021-07-09T23:44:09.81483+08:00
          startTime=2021-07-09T23:44:09.814784+08:00
          elapsedNano=46065
          timezone=CST
          ids={"eventId":"67d64dab-f3ea-4b77-93d0-6782caf4cfee"}
          app={"appName":"rk-demo","appVersion":"master-f414049","entryName":"greeter","entryType":"GrpcEntry"}
          env={"arch":"amd64","az":"*","domain":"*","hostname":"lark.local","localIP":"10.8.0.2","os":"darwin","realm":"*","region":"*"}
          payloads={"grpcMethod":"Healthy","grpcService":"rk.api.v1.RkCommonService","grpcType":"unaryServer","gwMethod":"","gwPath":"","gwScheme":"","gwUserAgent":""}
          error={}
          counters={}
          pairs={"healthy":"true"}
          timing={}
          remoteAddr=localhost:58205
          operation=/rk.api.v1.RkCommonService/Healthy
          resCode=OK
          eventStatus=Ended
          EOE

          其他攔截器

          請訪問 rk-grpc,或者 rk-boot 基礎(chǔ)指南獲取更多信息

          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  aa一级片 | a免费在线观看 | 国产操骚逼视频 | 日韩视频第1页 | 中国一级免费黄色片 |