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

通用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
分享到:
评论

相关推荐

    PHP敏捷开发CodeIgniter框架

    该框架提供了丰富的标准库及简易的接口与逻辑结构,有助于开发者减少代码编写量,专注于项目的创新部分。 #### 二、CodeIgniter框架核心概念 1. **框架(Framework)**:框架是一种预先设计好的软件架构,用于支撑...

    Dubbo视频教程--高级篇--第24节--简易版支付系统介绍

    Dubbo是一款高性能、轻量级的Java RPC框架,由阿里巴巴开源。它提供了高可用的服务治理能力,在分布式系统中尤为常见,用于实现服务之间的远程通信。在本教程的背景中,Dubbo被应用于第三方支付系统的分布式架构中,...

    基于Dubbo的分布式系统架构-简易版支付系统源码

    1. **数据库--edu_simple_pay.rar**:这是系统的数据库文件,可能包含了支付系统所需的表结构和初始化数据。在分布式系统中,数据库通常作为共享存储,负责保存交易记录、用户信息等关键数据。 2. **pay-facade-fee...

    grpc_cpp_example.zip

    gRPC是一个高性能、开源和通用的RPC框架,它基于HTTP/2协议,并提供了多种语言的SDK,包括C++。这个示例主要展示了如何在C++中构建gRPC的客户端和服务端,适合初学者参考学习。 首先,我们来看`GRPC_Service`目录,...

    使用grpc+gin+gorm+oss等构建的简易版抖音后端

    首先,gRPC是一个高性能、开源的通用RPC框架,基于Google的Protocol Buffers(protobuf)定义服务,支持多种语言。在本项目中,gRPC被用作后端服务间的通信协议,提供高效、低延迟的数据交换。通过protobuf定义接口...

    java开源包1

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

    libevent中文参考手册

    - **evrpc**:一个简单的远程过程调用(RPC)框架,便于开发者构建分布式应用。 #### 二、库及其安装 ##### 2.1 核心库 - **libevent_core**:包含所有核心功能,如事件处理、缓冲管理等基础组件。 - **libevent_...

    Spark大数据内核天机解密- to 丁立清.pdf

    - **定义**: Apache Mesos是一种通用的集群管理系统,能够有效地调度CPU、内存等硬件资源。 - **特性**: 支持多框架混合部署,如Hadoop MapReduce和其他服务型应用。 - **适用场景**: 大型企业级数据中心,需要高效...

    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、透明的调用远端服务器提供的功能...

Global site tag (gtag.js) - Google Analytics