grpc & opentrace ( jaeger實現 )

1) RPC

Remote Procedure Callphp

1) 概覽

image.png

2) 優點

簡單、通用、安全、效率

2) GRPC

1) 簡介

gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計

ps: 多語言支持git

  • C++
  • C#
  • Dart
  • Go
  • Java
  • Node.js
  • Objective-C
  • PHP
  • Python
  • Ruby

2) 概覽

image.png

3) Protocol Buffers

Protocol Buffers是一種與語言無關,平臺無關的可擴展機制,用於序列化結構化數據。使用Protocol Buffers能夠一次定義結構化的數據,而後能夠使用特殊生成的源代碼輕鬆地在各類數據流中使用各類語言編寫和讀取結構化數據

示例github

example.protodocker

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;
}

3) gongjiayun-notification

工家雲消息系統安全

grpc框架

...

4) opentrace

1) 官網

image.png

2) 問題

解耦成大量微服務時,之前很容易實現的重點任務變得困難了。
過程當中須要面臨一系列問題:用戶體驗優化、後臺錯誤緣由分析,分佈式系統內各組件的調用狀況等

3) why open trace?

OpenTracing經過提供平臺無關、廠商無關的API,使得開發人員可以方便的添加(或更換)追蹤系統的實現。
# 多語言支持
Go, JavaScript, Java, Python, Ruby, PHP, Objective-C, C++, C#

4) 概念

1) trace

trace表明了一個事務或者流程在(分佈式)系統中的執行過程

2) span

span表明trace中被命名並計時的連續性的執行片斷

image.png

5) jaeger

1) 官網

image.png

2) 簡介

Jaeger是Uber的分佈式跟蹤系統。

image.png

3) 安裝

1) 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
2) 官網下載二進制文件

...分佈式

3) github下載發行版本

...微服務

6) 工家雲的實踐

image.png

核心性能

# http middleware
open_trace, action_log
  
# rpc interceptor
client:  jaeger_trace 
server:     jaeger_trace

runmode -> debug, test, release優化

相關文章
相關標籤/搜索