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 middleware
open_trace, action_log
# rpc interceptor
client: jaeger_trace
server: jaeger_trace
runmode
-> debug
, test
, release