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
优化