require,rpc

后端开发很复杂:涉及框架设计、开发调试、数据库操作、高并发处理、大规模存储、性能优化、容灾方案、RPC调用、进程管理、操作系统调度、网络安全、系统运维、日常维护、甚至是Linux内核、驱动开发..... 。
微服务调用为什么用RPC框架 , http不更简单吗?

require,rpc


简单点 , HTTP是协议 , RPC是概念!实现RPC可以基于HTTP协议(Feign) , TCP协议(Netty) , RMI协议(Soap) , WebService(XML—RPC)框架 。传输过程中 , 也因为序列化方式的不同 , 又有一些框架和协议 , 比如Dubbo中的Dubbo协议 , gRpc—Protobuf序列化协议等等 。
其实 , 都是基于远程调用的概念 , 何为远程调用?重点是 , RPC就是远程调用 , 远程调用就是客户端把调用的接口 , 参数 , 参数类型 , 方法 , 返回值 , 返回值类型等(这些称为方法签名) , 通过如上的协议 , 发送给服务端 , 告知服务端需要调用的接口方法 , 这个过程就是RPC的实现过程!HTTP和RPC是不同层面的两个东西!性能方面 , HTTP本身是基于TCP协议的 , 属于应用层协议 , 所以HTTP协议本身在实现过程中就会占用大量的资源(内存 , 带宽等) , 性能上肯定没有通过TCP直接实现RPC协议快 , 不管HTTP如何优化肯定的是不如TCP的!而TCP则是依靠字节码 , 现在普遍采用的是将客户端调用的接口信息 , 序列化的方式发送给服务端 , 序列化框架又包含很多(Hession , Protobuf , Kryo等等 , 序列化性能最高的是Kryo , 序列化后字节码最小的是Protobuf) , 序列化后的字节码越小 , 占用带宽越少 , 序列化时间越短 , 线程IO等待时间就会越小 。
【require,rpc】Dubbo迈出云原生重要一步应用级服务发现解析(核心)熟悉Dubbo开发者应该都知道,一直以来都是面向RPC方法去定义服务的,并且这也是Dubbo开发友好性、治理功能强的基础 。

    推荐阅读