gRPC
gRPC 是 Gortexa 的原生協議。外部連線走同一個 h2c port,由 mux 依 Content-Type: application/grpc 分派給 grpc-go 的 ServeHTTP 處理模式。
服務定義與產生碼
Section titled “服務定義與產生碼”服務定義在 proto。內建的 sample resource:
service ResourceService { rpc CreateResource(CreateResourceRequest) returns (Resource); rpc GetResource(GetResourceRequest) returns (Resource); rpc ListResources(ListResourcesRequest) returns (ListResourcesResponse); rpc UpdateResource(UpdateResourceRequest) returns (Resource); rpc DeleteResource(DeleteResourceRequest) returns (google.protobuf.Empty);}gortexa regen 把 stubs 產到 gen/,logic 實作放在 internal package,兩者不混。
本機測試若要用 grpcurl,先開 reflection(預設關閉):
GORTEXA_SERVER__REFLECTION=true gortexa rungrpcurl -plaintext \ -H 'authorization: Bearer <token>' \ -d '{"id":"x"}' \ localhost:8080 resource.v1.ResourceService/GetResource沒帶 token 會得到 UNAUTHENTICATED:auth 對三個協議一視同仁。
Health
Section titled “Health”三態健康狀態對應到標準 gRPC Health protocol。用 app.Health().Register(...) 註冊真實依賴檢查,/readyz 與 gRPC Health 才會反映 DB、cache、MQ 的實際可達性。每個 check 有 5 秒逾時,慢的依賴不會卡住整個 health 查詢。
Reflection
Section titled “Reflection”gRPC reflection 預設關閉,需要時以 config 或環境變數開啟:
GORTEXA_SERVER__REFLECTION=true生產環境建議保持關閉,理由見部署。