Remote Procedure Call
php
簡單、通用、安全、效率
gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計
ps: 多語言支持
git
Protocol Buffers是一種與語言無關,平臺無關的可擴展機制,用於序列化結構化數據。使用Protocol Buffers能夠一次定義結構化的數據,而後能夠使用特殊生成的源代碼輕鬆地在各類數據流中使用各類語言編寫和讀取結構化數據
示例github
example.proto
docker
syntax = "proto3"; // 版本聲明,使用Protocol Buffers v3版本 package pb; // 包名 // 定義服務 service Trainee { // 方法 rpc Sing (HelloRequest) returns (HelloReply) {} // 方法 rpc Dance (HelloRequest) returns (HelloReply) {} // 方法 rpc Rap (HelloRequest) returns (HelloReply) {} } // 請求消息 message HelloRequest { string name = 1; } // 響應消息 message HelloReply { string message = 1; }
工家雲消息系統
安全
grpc
框架
...
解耦成大量微服務時,之前很容易實現的重點任務變得困難了。 過程當中須要面臨一系列問題:用戶體驗優化、後臺錯誤緣由分析,分佈式系統內各組件的調用狀況等
OpenTracing經過提供平臺無關、廠商無關的API,使得開發人員可以方便的添加(或更換)追蹤系統的實現。
# 多語言支持 Go, JavaScript, Java, Python, Ruby, PHP, Objective-C, C++, C#
trace表明了一個事務或者流程在(分佈式)系統中的執行過程
span表明trace中被命名並計時的連續性的執行片斷
Jaeger是Uber的分佈式跟蹤系統。
docker
docker run -d --name test-jaeger \ -u root \ --privileged=true \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 14250:14250 \ -p 9411:9411 \ jaegertracing/all-in-one:1.21
...
分佈式
...
微服務
核心
性能
# http middleware open_trace, action_log # rpc interceptor client: jaeger_trace server: jaeger_trace
runmode
-> debug
, test
, release
優化