通用RPC简易框架2009-12-11 BlogJava 叱咤红人目的:调用远程业务逻辑方法,并对返回的结果进行处理。可扩展支持多种协议:HTTP, JMS, RMI, FTP等,实现负载均衡,异步调用。默认给出HTTP实现。概念:Agent: 我们将这套实现称为agentServer:远程应用服务, RPC服务的提供者。Client:客户端,RPC服务的调用者Agent server:agent在server端的部分Agent client: agent在client端的部分Agent group:具有相同业务逻辑的远程服务器的组合,提供相同的远程业务服务。基本结构:以HTTP方式为例了解一下agent的基本结构Agent client
组件 | 描述 |
Business client | Client端业务逻辑,初始化agent请求,远程调用的发起者 |
Agent client | Agent client端流程 |
Request encoder | Request编码器,将agent request序列化成文本字符串 |
HTTP executor | 发送远程调用请求,接收响应结果 |
Load balancer | 采用轮循方式的负载权衡机制 |
Response decoder | 响应结果的解码器,发序列化 |
Result handler | Agent response结果的处理者 |
Agent server
组件 | 描述 |
Agent servlet | J2EE servlet, http agent server side entry |
Agent service | Agent server 端流程 |
Request decoder | Request解码器,反序列化agent request |
Request handler | 处理agent request |
App command assembler | 将agent请求装配成义务逻辑执行参数并初始化agent上下文 |
Agent context | Agent上下文,包括会话标识符,上次调用时间等,可供扩展使用,比如为了不改变agent server端业务逻辑的接口,提供给agent系统的实现,可以将一些值放在agent context中。 |
App Logic Command | 业务逻辑的调用者 |
Response assembler | 将返回结果和agent上下文装配成agent response |
Response encoder | 将agent response序列化成文本字符串 |

如果采用是其他通信方式agent servlet可能就被换成比如jms listener,FTP receiver, RMI service等, 有待以后有需要的时候再实现。