`
ldd600
  • 浏览: 101793 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
47bb354f-8b5f-3ea6-a206-c7ead38c741c
Hyperic插件开发不完...
浏览量:11078
社区版块
存档分类
最新评论

通用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端顺序图

 

 

  • 大小: 66.1 KB
  • 大小: 33.2 KB
  • 大小: 38.1 KB
  • 大小: 33.2 KB
  • 大小: 16.5 KB
  • 大小: 9.8 KB
  • 大小: 17.3 KB
  • 大小: 13.7 KB
  • 大小: 18.1 KB
1
0
分享到:
评论

相关推荐

    java开源包1

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包11

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包2

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包3

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包6

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包5

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包10

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包4

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包8

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包7

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包9

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包101

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    Java资源包01

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    JAVA上百实例源码以及开源项目

    1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实世界模型  基于EJB的真实世界...

    JAVA上百实例源码以及开源项目源代码

    1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实世界模型  基于EJB的真实世界...

Global site tag (gtag.js) - Google Analytics