前言
这段时间一直在学习Netty
相关知识,因为涉及知识点比较多,也走了不少弯路。目前网上关于Netty学习资料琳琅满目,不知如何下手,其实大家都是一样的,学习方法和技巧都是总结出来的,我们在没有找到很好的方法之前不如按部就班先从基础开始,一般从总分总的渐进方式,既观森林,又见草木。
Netty
是一款提供异步的、事件驱动的网络应用程序框架和工具,是基于NIO
客户端、服务器端的编程框架。所以这里我们先以NIO
和依赖相关的基础铺垫来进行剖析讲解,从而作为Netty
学习之旅的一个开端。
RPC概述
RPC(Remote Procedure Call)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果,而代码中不需要做额外的编程,就像在本地调用一样。
现在互联网应用的量级越来越大,单台计算机的能力有限,需要借助可扩展的计算机集群来完成,分布式的应用可以借助RPC来完成机器之间的调用。
RPC框架原理
在RPC框架中主要有三个角色:Provider、Consumer和Registry。如下图所示:
节点角色说明:
-
Server: 暴露服务的服务提供方。
-
Client: 调用远程服务的服务消费方。
-
Registry: 服务注册与发现的注册中心。
RPC调用流程
RPC基本流程图:
一次完整的RPC调用流程(同步调用,异步另说)如下:
1)服务消费方(client)调用以本地调用方式调用服务;
2)client stub接收到调用后负责将方法、参数