数字交易系统使用远程方法调用(RMI)应用场景实现

数字交易系统使用远程方法调用(RMI)应用场景实现

 

一、应用场景介绍

  1. 在交易系统微服务创建委托订单时,需调用账务系统微服务冻结金额等相关业务。
  2. 订单成交时,需调用账务系统微服务转账等相关业务。

……

应用场景举例一二,还有很多场景,场景不是本文的重点,不多介绍。主要介绍根据需求场景如何通过技术实现 。

二、远程方法调用(RMI)介绍

RMI通过Spring HTTP Invoker来实现,Spring HTTP invoker 是 spring 框架中的一个远程调用模型,执行基于 HTTP 的远程调用(意味着可以通过防火墙),并使用 java 的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的对象。

Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和返回值是比较复杂的,通过httpInvoker有巨大的优势。

三、远程方法调用实现

远程访问流程

数字交易系统使用远程方法调用(RMI)应用场景实现

 

Spring HttpInvoker具体实现

业务场景:在交易系统服务创建委托订单时,需调用账务系统服务冻结金额等相关业务。

1) 服务端定义账务服务接口

数字交易系统使用远程方法调用(RMI)应用场景实现

 

2) 服务端创建账务服务接口的具体实现类

数字交易系统使用远程方法调用(RMI)应用场景实现

 

3) 公开服务

数字交易系统使用远程方法调用(RMI)应用场景实现

 

4) 客户端定义账务服务端接口

数字交易系统使用远程方法调用(RMI)应用场景实现

 

客服端和Server端声明的DTO要一样,包名和字段名都要一样才行,这个接口将会被看做是客户端和服务端通信的“契约”。接口定义的类与DTO相关的类可以作为公用服务API工程,客户端与服务端分别引用这个共用的API工程。

5) 客户端配置账务服务参数

数字交易系统使用远程方法调用(RMI)应用场景实现

 

6) 客户端访问账务服务接口

  1. 在交易类中添加服务对象属性
  2. 调用远程服务

数字交易系统使用远程方法调用(RMI)应用场景实现

 

数字交易系统使用远程方法调用(RMI)应用场景实现

 

到此使用Spring HTTP invoker 实现RMI过程完成,每种技术都有它的缺点。在选择一种技术时,应该仔细考虑每种技术适用应用场景即可。

当使用RMI时,不可能通过HTTP协议访问对象,除非你用HTTP包裹RMI流。RMI是一种重量级协议,因为它支持整个对象的序列化,适合网络上传输复杂数据结构。然而,基于Spring HTTP invoker 的RMI:它是一种Java-to-Java的远程访问解决方案。

 

不定期更新技术点的文章。请关注头条号 “软件开发漫谈” 

https://www.toutiao.com/c/user/4273605754/#mid=4487942026