对比点 | RPC | REST |
耦合性 | 强耦合 | 松散耦合 |
消息协议 | 二进制thrift、protobuf、AVRO | 文本XML,json |
通信协议 | TCP | HTTP/HTTP2 |
性能 | 高 | 低于RPC |
接口契约IDL | thrift、protobuf IDL | swagger |
客户端 | 强类型客户端、一般自动生成多语言 | 一般HTTP客户端可访问,可自动生成强类型客户端,多语言 |
案例 | Dubbo,motan,Tars,grpc,thrift | Spring MVC/Boot,Jax-rs,dropwizard |
开发者友好 | 客户端比较方便,但二进制消息不可读 | 文本消息开发者可度,浏览器就可访问 |
对外开放 | 对外一般需要转换成REST/文本协议 | 直接可以对外开放 |
文章参考:杨波老师的微服务架构核心20讲