两者比较
特性 | HTTP | RPC | 更优 |
协议 | 基于HTTP协议 | 可以基于TCP协议,也可以基于HTTP协议 | RPC |
易用性 | 可以基于RESTful风格 | 本地函数调用方式 | HTTP |
传输效率 | 如果基于HTTP1.1的协议,请求中会包含很多无用的内容 | 使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2.0协议,也可以很好地减少报文体积,提高传输效率 | RPC |
性能消耗 | 大部分是通过json实现的,字节大小和序列化耗时都比thrift要更消耗性能 | 可以基于thrift实现高效的二进制传输 | RPC |
负载均衡 | 需要配置Nginx,HAProxy实现 | 基本都自带了负载均衡策略 | RPC |
服务治理 | 需要事先通知,修改Nginx/HAProxy配置 | 能做到自动通知,不影响上游 | RPC |
实现难度 | 简单 | 复杂 | HTTP |
灵活性 | 不关心实现细节,跨平台,跨语言 | 相对来说麻烦一些 | HTTP |
思考
- 就像是在写循环代码的时候使用【递归】和【迭代】
- 递归写起来更方便,但效率较低,存在爆栈风险。
- 迭代写起来更麻烦,效率一般来说会高一些,内存也更安全。
发表回复