What's new in dubbo-go-pixiu 0.4.0

dubbo_go發表於2022-01-04

Dubbo-go-pixiu 是一款高效能 API 閘道器,支援 Dubbo 和 Http 等多種協議。具體介紹文章可以參考《Dubbo 跨語言呼叫神獸:dubbo-go-pixiu》

近期社群釋出了 0.4.0 版本,具體請檢視 v0.4.0。相關改進實在太多,本文只列出相關重大 feature、bugfix 、 效能提升項。

1 動態從 Spring Cloud 和 Dubbo 註冊中心拉取路由和叢集配置資料

Pixiu 原本依賴本地配置檔案讀取路由和 upstream 叢集配置資料,對於真實生產場景十分不方便。因此,Pixiu 需要支援從叢集註冊中心動態獲取路由和叢集配置資料的功能。

如上圖所示,服務A、B、C 進行服務註冊,將自身後設資料儲存在註冊中心。而 Pixiu 則從註冊中心拉取註冊的服務後設資料,構建自己的路由規則和轉發叢集配置。當客戶端傳送請求時,Pixiu 會基於構建的轉發規則,將請求轉發給對應的後端服務。

社群同學分別就目前主流的兩大微服務解決方案 Spring Cloud 和 Dubbo 進行了相關特性開發,相關的 pr 為 https://github.com/apache/dubbo-go-pixiu/pull/255https://github.com/apache/dubbo-go-pixiu/pull/256

目前,該特性只支援從 zk 和 nacos 拉取後設資料,更多服務註冊中心的支援工作正在進行中,歡迎感興趣的同學參與,可以加入釘釘群 31203920。

2 支援 Http 協議 轉換為 gRPC 協議

gRPC 協議已經是事實上的雲原生基礎通訊協議。etcd、istio、dapr 等大量雲原生中介軟體都提供 gRPC 相關的 API 介面供外界使用,dubbogo 3.0 也是基於 gRPC 構建了完全相容 gRPC 的 triple協議。

但是對於外部系統而言,傳統 HTTP 請求仍然是最為簡單和穩定的通訊手段,所以 Pixiu 提供了 Http 協議請求轉換為 gRPC 協議請求的能力,方便將內部服務的 gRPC API 以 Http 的形式進行對外暴露。具體模式如下圖所示,Pixiu 負責將客戶端的 Http 請求進行解碼,然後編碼為 gRPC 請求,並轉發給後端服務。

目前 Pixiu 是基於本地配置的 proto 檔案進行相關協議的編解碼工作的,具體pr 為 https://github.com/apache/dubbo-go-pixiu/pull/244。下一階段將通過 gRPC 的反射能力,來動態獲取 proto 配置資訊,減少閘道器處的配置工作。

3 支援 jaeger 規範的鏈路傳播協議

可觀測性是大型軟體系統的重要質量指標之一,而分散式鏈路追蹤是其中的重中之重。

Pixiu 基於 opentelemetry 規範構建了分散式鏈路追蹤體系,並支援將資料上傳到 jaeger 上進行記錄和展示。Pixiu 還會將 Span 相關資訊向 upstream 服務傳遞,由此開發者可以看到每一個經過 Pixiu 進行轉發的網路請求的完整處理鏈路,方便使用者進行鏈路追蹤和排查線上問題。

OpenTelemetry 合併了 OpenTracing 和 OpenCensus 專案,提供了一組 API 和庫來標準化遙測資料的採集和傳輸,使用該規範可用方便的在不同分散式鏈路追蹤資料儲存端進行切換。目前 Pixiu 支援將資料上傳到 jaeger 上,後續可以進行擴充套件,支援不同種類的 TracerProvider。

使用 Jaeger 進行追蹤的效果圖如下所示。

具體的 pr 是 https://github.com/apache/dubbo-go-pixiu/pull/236

4 支援 cors 策略

Pixiu 支援跨域資源共享策略,具體的 pr 是 https://github.com/apache/dubbo-go-pixiu/pull/249

5 支援 HTTPS 安全加密

Pixiu 支援 HTTPS 安全加密,具體的 pr 是 https://github.com/apache/dubbo-go-pixiu/pull/213

6 新增了更多的案例專案

Pixiu 專案的 samples 資料夾下新增了更多案例專案,包括並不限於:

spring cloud 和 Dubbo 叢集的服務發現案例,路徑是 samples/springcloud 和 samples/dubbogo/simple/registry;

分散式鏈路追蹤案例,路徑是samples/dubbo/simple/jaeger;

http to grpc 案例,路徑是 samples/http/grpc/。

7 docker 示例

目前 Pixiu 社群開發了一個 docker 映象,方便你進行測試,當前支援dubbo服務的zookeeper和nacos註冊中心,配置指定環境變數的註冊中心(你自己的dubbo服務註冊中心地址)地址即可使用:

docker pull phial3/dubbo-go-pixiu:0.0.1
docker run --name you-pixiu-name -e DUBBO_REGISTRY_ADDRESS=zookeeper://10.170.224.25:2181 phial3/dubbo-go-pixiu:0.0.1
docker run --name you-pixiu-name -e DUBBO_REGISTRY_ADDRESS=nacos://10.170.224.25:8848 phial3/dubbo-go-pixiu:0.0.1

如果你有任何疑問,歡迎加入 dubbogo社群群【釘釘搜尋群號 23331795 或者 釘釘掃碼如下群二維碼】

作者:張天,山東人,2018 年從南京大學畢業。目前就職於南京本地一家創業公司。

相關文章