1.Rpc简介
RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议。它允许像调用本地服务一样调用远程服务。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。常见的Rpc框架如下:

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行的Java应用提供网络和web连接。
这个RPC框架使用的一些技术所解决的问题:
服务发布与订阅:客户端data-job-executor通过JettyRpc向服务端data-job-admin注册。
通信:使用Jetty作为通信框架。
Spring:使用Spring配置服务,加载Bean,扫描注解。
动态代理:客户端使用代理模式透明化服务调用。
消息编解码:使用hessian序列化和反序列化消息。
RemoteHttpJobBean中的runExecutor()方法中,ExecutorBiz executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, address).getObject(),远程客户端代理对象NetComClientProxy的getObject()方法中,jettyClient.send(request)先通过HessianSerializer将请求序列化,向服务端发送调度请求,响应对象进行反序列化再返回给客户端;服务端JettyServerHandler的类中handle()方法拿到客户端的序列化后的请求,先进行反序列化,然后通过服务端远程代理工厂NetComServerFactory.invokeService(rpcRequest, null)实现执行器中的JOB远程调度;
本文介绍了RPC的概念及其多种实现方式,重点解析了JettyRpc框架。JettyRpc是一个基于Java的RPC框架,利用Jetty作为通信框架,结合Spring进行服务配置和Bean管理。此外,它采用动态代理实现透明化的服务调用,并利用Hessian进行消息的序列化和反序列化,解决了服务发布与订阅以及通信问题。

2万+

被折叠的 条评论
为什么被折叠?



