之前总做互联网web开发,今天了解到前端也能写idl,因吹斯听。

IDL,PROTO,THRIFT三种 IDL 对比

┌─────────────────────────────────────────────────────────────────────────┐
│                          三种序列化协议对比                               │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐                       │
│  │  OMG IDL    │  │  Thrift IDL │  │  .proto     │                       │
│  │  (.idl)     │  │  (.thrift)  │  │  (.proto)   │                       │
│  ├─────────────┤  ├─────────────┤  ├─────────────┤                       │
│  │  CDR        │  │  Binary     │  │  Protobuf   │                       │
│  │  序列化      │  │  协议       │  │  序列化      │                       │
│  ├─────────────┤  ├─────────────┤  ├─────────────┤                       │
│  │  Pub/Sub    │  │  RPC        │  │  RPC        │                       │
│  │  模式       │  │  模式       │  │  模式       │                       │
│  └─────────────┘  └─────────────┘  └─────────────┘                       │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

详细对比表

特性OMG IDL (DDS)Thrift IDLProtobuf (.proto)
定义文件.idl.thrift.proto
标准组织OMGApacheGoogle
序列化CDRThrift 二进制协议Protocol Buffers
通信模式发布/订阅 (Pub/Sub)请求/响应 (RPC)请求/响应 + 流 (gRPC)
默认传输UDP / TCPTCPHTTP/2 (gRPC) / TCP
拓扑结构多对多 (广播)一对一 (点对点)一对一 (点对点)
服务发现内置 (无需配置)需要注册中心需要注册中心
适用场景机器人、汽车总线跨语言微服务高性能微服务

Thrift IDL 示例

// 类似于 .proto 的 Thrift 版本
namespace cpp robot.example

struct FaultRaiseMsg {
    1: required string fault_id,       // 字段 ID + 类型 + 名称
    2: required string device_pos,
    3: required i64 occur_time
}

service FaultService {
    void raise_fault(1: FaultRaiseMsg msg),  // RPC 方法定义
    void clear_fault(1: string fault_id)
}

一句话总结

IDL 定义序列化传输层模式
DDS.idl (OMG 标准)CDRUDP/TCPPub/Sub
Thrift.thriftThrift 二进制TCPRPC
Protobuf.protoProtobufHTTP/2RPC (gRPC)

DDS 是"广播对讲机",Thrift/gRPC 是"电话通话"。


牙小木木
1.5k 声望84 粉丝

iamtb.cn


引用和评论

0 条评论