Segment使用Go、gRPC和Envoy作為後端REST API實現
Segment剛剛啟動了Segment Config API(在這裡自己試試) - 一組公共REST API,可以讓您管理Segment配置。在這個Config API的後面是使用Go,GRPC 和Envoy構建的。
在Segment,我們 預設在Go中構建新服務,Go語言很簡單,因此新的團隊成員很快就會加入程式碼庫。工具鏈很快,因此如果開發人員打破了程式碼、或在測試或在與其他系統整合時出現問題時都會立即得到反饋,執行時很快,因此它在大規模上表現出色。
對於最新一輪的API,我們採用了GRPC 服務框架
藉助於API標準的Google API設計指南,uber/prototool格式化、linting .protos以及lyft/protoc-gen-validate定義欄位驗證以及grpc-gateway定義REST對映等生態系統工具,Protocol Buffer服務定義語言可以輕鬆設計型別安全且一致的API 。
透過精心設計的.proto,它可以輕鬆生成Go 伺服器介面和TypeScript 客戶端,在語言之間提供型別安全的RPC。
對於API閘道器和RPC,我們採用了Envoy服務代理
面向網際網路的segmentapis.com端點是一個Envoy 前端代理,可對每個請求進行速率限制和驗證。然後,它將REST/JSON 請求轉碼為上游GRPC 請求。上游GRPC 伺服器執行著為Datadog微服務統計配置的Envoy邊車代理。其結果是API 的安全性、可靠性和一致觀察性透過Envoy配置,而不是程式碼。
我們嘗試過Swagger服務定義,但規範非常龐大,生成的客戶端和伺服器存根有很多不足之處。GRPC和.proto以及Go 實現感覺設計和實現更好,由於GRPC工具和生態系統,您可以從.protos生成Swagger,但實際上不可能採用其他方式。
相關文章
- Envoy 中的 xDS REST 和 gRPC 協議詳解RESTRPC協議
- REST 的替代者:Envoy + gRPC-WebRESTRPCWeb
- Envoy、gRPC和速率限制RPC
- Go 語言實現 gRPC 的釋出訂閱模式,REST 介面和超時控制GoRPC模式REST
- Go-grpc 實現GoRPC
- Go基於gRPC實現客戶端連入服務端GoRPC客戶端服務端
- 如何使用Spring Boot,Spring Data和H2 DB實現REST APISpring BootRESTAPI
- Envoy實現.NET架構的閘道器(三)代理GRPC架構RPC
- go使用grpcGoRPC
- 使用NFS作為Glance儲存後端NFS後端
- Elasticsearch 入門實戰(8)--REST API 使用二(Search API)ElasticsearchRESTAPI
- 使用 Spring Security JWT 令牌簽名實現 REST API 安全性SpringJWTRESTAPI
- Harbor配置Swagger遠端REST APISwaggerRESTAPI
- 【Go】Golang實現gRPC的Proxy的原理GolangRPC
- 基於乾淨架構使用原始SQL和DDD實現.NET Core REST API開源案例架構SQLRESTAPI
- go語言gRPC系列(三) - 使用grpc-gateway同時提供HTTP和gRPC服務GoRPCGatewayHTTP
- 使用OAuth保護REST API並使用簡單的Angular客戶端OAuthRESTAPIAngular客戶端
- 在 ASP .NET Core 中實現冪等 REST APIRESTAPI
- PHP熟手使用Rust作為後端開發語言PHPRust後端
- GitHub-zlabjp/envoy-spire-opa-service-mesh: 使用Envoy作為資料平面以及SPIRE和OPA作為控制平面在Kubernetese上構建Service Mesh的演示案例原始碼Github原始碼
- go語言gRPC系列(二) - 為gRPC新增證書GoRPC
- go語言下快速使用GRPCGoRPC
- go-kit結合gRpc的使用和學習GoRPC
- rest apiRESTAPI
- 使用Node.js和Koa框架實現前後端互動Node.js框架後端
- 【SpringSecurity系列3】基於Spring Webflux整合SpringSecurity實現前後端分離無狀態Rest API的許可權控制SpringGseWebUX後端RESTAPI
- 讓 gRPC 提供 REST 服務RPCREST
- 使用 Laravel Passport 為你的 REST API 增加使用者認證功能LaravelPassportRESTAPI
- Go gRPC 系列三:流式客戶端和服務端GoRPC客戶端服務端
- 深入 Go 的 Map 使用和實現原理Go
- gRPC(八)生態 grpc-gateway 應用:同一個服務端支援Rpc和Restful ApiRPCGateway服務端RESTAPI
- GO後端開發+VUE實列Go後端Vue
- Jenkins 常用 REST API介紹(Java 客戶端)JenkinsRESTAPIJava客戶端
- gRPC-Web:替代REST的gRPC的Javascript庫包RPCWebRESTJavaScript
- 結合DDD和Spring Boot實現基於REST API的併發控制 -DZone JavaSpring BootRESTAPIJava
- grpc-go使用教程之helloworldRPCGo
- 使用swoole作為MQTT客戶端並接收實現即時訊息推送MQQT客戶端
- 使用 chromium 以及 Chrome 外掛 API 實現本地除錯前後端分離專案ChromeAPI除錯後端