1) RPC

Remote Procedure Call

1) 概览

2) 劣势

简略、通用、平安、效率

2) GRPC

1) 简介

gRPC 是一个高性能、开源和通用的 RPC 框架,面向挪动和 HTTP/2 设计

ps: 多语言反对

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

2) 概览

3) Protocol Buffers

Protocol Buffers是一种与语言无关,平台无关的可扩大机制,用于序列化结构化数据。应用Protocol Buffers能够一次定义结构化的数据,而后能够应用非凡生成的源代码轻松地在各种数据流中应用各种语言编写和读取结构化数据

示例

example.proto

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) 官网

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中被命名并计时的连续性的执行片段

5) jaeger

1) 官网

2) 简介

Jaeger是Uber的分布式跟踪零碎。

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) 工家云的实际

外围

# http middlewareopen_trace, action_log  # rpc interceptorclient:  jaeger_trace server:     jaeger_trace

runmode -> debug, test, release