hadoop的RPC框架封装思想
我们这里用controller远程访问服务端的一个方法login()为例,来简要说明一下hadoop的RPC框架封装思想
本例可以参考以下文章
Hadoop的第一个rpc实现——hello likilone
1、通过客户端与服务端共有的接口,生成客户端的一个代理对象
2、通过代理对象调用业务逻辑方法,为什么可以调用,因为这个代理对象是通过共有的接口获得的
3、RPC框架调用senMsg()方法,将客户端的请求发送给服务端(这里就相当于我们的socket了)
4、服务端接收到消息 response(),然后生成动态的代理对象
5、然后就可以执行服务端的具体业务逻辑了
6、将得到的结果通过receiveMsg()发送给客户端
7、客户端response()接收到消息
8、最后返回消息
以上红色部分的四条(3、4、6、7),就类似于我们的socket部分
想想我们以前的socket程序是怎么写的
客户端:
1、得到服务端对象,里面定义了他的地址端口等
2、然后通过getOutputStream获得服务的数据输入流,代码如下
BufferedReader input = new BufferedReader(new InputStreamReader(sk.getInputStream()));sk表示服务器对象
3、本地处理,然后向服务端发送数据
服务端:
1、我们的服务端是 一个线程类,他不停的运行接收来自客户端的数据
2、服务端启动:new Thread(st).start();
在hadoop的RPC框架中,我们就比不要去写底层的socket实现了,我们只需要写好客户端,服务端,然后生成代理对象,然后通过代理对象去执行。
至于中间的socket,已经由hadoop的RPC给我们封装好了。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情