通用RPC简易框架(1): 整体结构

目的:调用远程业务逻辑方法,并对返回的结果进行处理。规范化了调用流程,可扩展支持多种协议:HTTP, JMS, RMI, FTP等,实现负载均衡,异步调用。默认给出HTTP实现。

 

概念:

Agent 我们将这套实现称为agent

Server:远程应用服务, RPC服务的提供者。

Client:客户端,RPC服务的调用者

Agent serveragentserver端的部分

Agent client: agentclient端的部分

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 listenerFTP receiver, RMI service, 有待以后有需要的时候再实现。

 

 

原理:

l         初始化agent group,启动agent clientagent server

l         业务客户端构建agent请求并调用agent client

l         Agent client序列化业务请求

l         Executorload balancer中得到当前供调用的agent,通过HttpRequestbody发送业务请求

l         Load balancer轮询下一个agent

l         Agent server收到请求,调用agent service

l         Agent service将请求反序列化,并装配成业务逻辑命令参数的形式,可供业务逻辑调用命令执行,同时初始化agent上下文

l         业务逻辑调用者调用服务器端本地业务逻辑执行并返回结果

l         Response装配器将agent context上下文和返回结果装配成agent response

l         Response编码器序列化response,并由servlet通过HttpResponsebody发送应答

l         Executor收到应答后,从HttpResponsebody里取出agent response的内容

l         Response解码器将其解码反序列化成agnet response

l         Agent client调用result handler进行返回结果的处理

 

Client端同步调用顺序图

 

Client端异步调用顺序图

 

 

Server端顺序图

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值