Summit System Implementation Overview(V6.0 or higher)

        本文将对Summit系统的实现进行一个概述性的介绍。Summit系统从架构上来说是很优秀的,我的认为其架构师的想法很是好,固然也设计出来了。但在实现的时候就没那么美好了,Summit系统的实现比较复杂,比较麻烦,感受跟架构师的想法有很大出入。若是你作过Summit项目,再深刻到细节,你就会感受到恶心了,由于Summit实现细节真的很烂。但我是站上如今的技术基础上开了上帝视角看一个存在了30年系统,有点站着说话不腰疼。我的而言,仍是比较佩服Summit架构师的,为它的实现感到可惜。当前,笔者认为Summit系统的架构正在向分布式方向演进,由于它开始大量采用MQ、Web Service这些下降耦合的方式来优化架构了。数据库

        笔者今天要介绍的内容,是Summit系统实现的各个模块,以及模块之间的交互方式。本文站在架构师角度描述各个模块之间的关系,不会涉及具体细节,所以,仍是能够感觉到Summit系统架构的优秀之处:后端

  1. Summit系统模块
  2. Summit系统运行时模块交互

1 Summit系统模块

        Summit系统按照MVC来划分的话,能够分红View层即客户端/表单;Control层包含负责通信的Web Service、负责业务逻辑的动态库/程序;Model层包含数据抽象层及持久化层。session

        Summit系统通过多年的架构优化,在V6.0及以后的版本中,将以前版本采用的CORBA模块替换成Web Service(aixs2实现)。这是Summit系统向分布式架构演进的体现之一。架构

进一步划分的话,能够分红如下模块:分布式

序号工具

分层性能

模块优化

说明设计

13d

View

Summit FT

Summit系统客户端

2

Control

ETK Web Service

建立、销毁会话(HTTP会话)

3

Middle Web Service

负责HTTP会话报文与Web Service Soap报文之间的转换

4

Naming Web Service

负责Web Service的注册、查找;负责客户端会话与后台etkservice进程之间的注册、查找(会话保持)

5

Generate ID Web Service

产生全局惟一ID的Web Service

6

MQ

消息中间件(服务之间的松耦合)

7

etkservice

用户HTTP请求后台服务进程

8

Model

database

持久化数据库

9

N/A

STP Service

Summit系统事件处理服务

10

N/A

BVS Service

Blotter View Server,即实时刷新服务

1

N/A

Sequencer

Summit系统事件发布服务

12

N/A

SMT

Service Management Tool,即STP/BVS服务管理工具

        前文提到,Summit系统先后端通信协议是HTTP。首先,HTTP协议是无状态的,所以Summit系统须要提供一套相似于Web Server的会话服务。这个就是Summit Naming Service的做用。Summit Naming Service提供服务的注册和查询功能,Summit利用此服务来提供会话服务;其次,Summit后端功能都是用C/C++开发的,如何利用后端的C/C++提供HTTP服务呢?Summit采用的是Web Service的方式。Summit后端提供了etkservice,这是一个Web Service服务端程序,启动进程后,会经过一个端口服务某个用户会话。Summit会为每一个客户端链接启动一个etkservice进程来提供服务,利用Middle Web Service将HTTP请求内容转换成SOAP(Web Service)请求并转发给相应的etkservice进程。etkservice进程处理完成后,结果经过SOAP报文能加给Middle Web Service,进而转换成HTTP报文返回给客户端。不只如此,Middle Web Service负责全部前、后端交互的HTTP报文 <-> SOAP报文之间的转换工做。

        Summit系统不只提供了用户操做的基石,同时提供工做流和数据的生命周期管理的功能。这些功能是由STP服务来完成,STP服务即事件处理服务。STP服务会订阅系统事件,每当Sequencer发布系统事件时,订阅了相应事件的STP服务即会工做,完成自动化的处理任务。常见的STP服务如现金流产生服务、支付报文产生服务、额度计算服务、头寸计算服务、合规检查服务等。

        Summit系统将Generate ID独立出来做为一个Web Service也是其架构向分布式演进的体现。Generate ID服务用来生成全局惟一的ID。Summit会为其保存或管理的数据分配一个全局惟一的ID,其内部包括事件生成、分发、存/取,都是以此ID做为标识,这些ID所有由Generate ID来生成。所以,Generate ID会向Naming Service注册本身,而且全部Generate ID服务注册名是同样的,以此来保证只有一个实例提供服务。

        MQ做为消息中间件来处理STP订阅、BVS消息发布和Sequencer的事件发布。当前,Summit通常采用Active MQ实现。当STP服务启动时,会首先在ActiveMQ对应的队列订阅相应的事件;Sequencer服务检索到事件发生时,会向MQ发布事件。MQ将事件广播到对应队列,供相关的STP服务处理。BVS服务启动后,会监听BVS请求队列,当Summit FT中,用户打开Blotter view时,会发送一个BVS请求。BVS服务根据订阅数据筛选条件,将筛选的数据不断推向BVS响应队列。

        最后,Summit系统提供了一个用来管理全部的STP服务及Sequencer服务。STP因为是监听器的角色,所以其是长时间运行的,这就须要提供一个管理工具,来监控各个STP服务的。Service Management Tool(SMT)就是这样一个管理工具。提供了基本的服务启动、中止、新建、删除的功能。

2 Summit系统模块交互

        上文静态地介绍了Summit系统的各个模块,接下来,笔者将会介绍在Summit系统运行时,各个模块之间的交互协议以及方式,对于不一样的操做,调用的模块不一样,交互的方式也不一样,所以,笔者选取了如下几个典型场景,来讲明交互过程:

  1. 登录过程
  2. 操做过程
  3. ü 事件处理过程

2.1 登录过程

   0. 系统启动时,Generate ID须要启动,启动时向Naming Service注册本身
  1. 用户登录点击登录后,Summit FT向ETK服务发起HTTP请求
  2. ETK服务启动一个etkservice进程来服务此用户
  3. etkservice启动后,向Naming Service注册本身(Session ID <-> 端口号)
  4. etkservice读取数据库中的用户信息,验证密码及其余信息(好比是否过时、是否被锁定)
  5. etkservice验证完成后,将结果以SOAP报文的形式返回给Middle Service
  6. Middle Service将SOAP报文转换成HTTP报文并返回给Summit FT

2.2 操做过程

        操做过程是指用户登录成功后,在Summit FT客户端进行相关的操做,好比点击按钮、订阅实时消息操做。此时的交互方式与登录有所差异。


  1. Summit FT发送HTTP请求至Middle Service(带有Session标识)
  2. Middle service向Naming Service发起Web Service查询此请求对应的etkservice端口(使用Session ID),查询成功后,以SOAP报文形式返回
  3. Middle service查询到session对应的etkservice后,向etkservice发起Web Service请求
  4. etkservice响应请求,与数据库交互,若是须要生成新的ID,则会向Generate ID发起Web Service请求生成ID。Generate ID生成ID后,以SOAP形式返回给etkservice。
  5. etkservice处理完成后,将结果以SOAP报文形式返回给Middle Service
  6. Middle Service将SOAP报文转换成HTTP报文并返回给Summit FT

2.3 事件处理过程


        笔者将Summit系统的事件分红2个大类,第一类由Sequencer服务产生,产生后推向MQ队列并由STP服务来处理;第二类由用户产生自Summit FT,好比打开了Blotter View来订阅实时数据,此类事件由BVS服务处理。所以,笔者将分红2个部分来讲明Summit的事件处理过程。注:为使交互图清晰,省略了前文提到的部分步骤及相关服务。

2.3.1 Sequencer事件

Sequencer事件使用黑底白色表示:

  1. STP服务启动时,会向MQ订阅相关事件
  2. Sequencer检索数据库,查询每一个STP服务处理的进度,并检索出未处理事件
  3. Sequencer将未处理事件发布到MQ
  4. MQ收到事件后,将事件推送给相关的订阅者,即STP服务
  5. STP服务处理事件,过程当中颇有可能生成新的数据,所以须要使用Generate ID服务
  6. STP服务处理事件,过程当中颇有可能进行数据库的读取和保存。处理完成后,更新对应STP服务的Sequencer,以防止重复处理事件

2.3.2 用户BVS事件

  1. 用户在Summit FT打开Blotter View,Summit FT发送HTTP请求至Middle Service
  2. Middle Service收到请求后,经过Naming Service(见2.2)找到对应的etkservice,并将HTTP报文转换成SOAP报文发送过去
  3. etkservice向对应的BVS请求队列中发送“实时数据订阅”请求;
  4. BVS服务从请求队列中获取“实时数据订阅”请求,
  5. BVS服务按照请求的筛选条件,从数据库中加载相关数据
  6. BVS服务将检索出的数据推送到返回队列
  7. etkservice从返回队列中获取BVS检索到的数据
  8. etkservice将检索到的数据转换成SOAP报文,返回给Middle Service
  9. Middle Service将SOAP报文转换成HTTP报文,返回给Summit FT

3 结论

        Summit系统架构在不断地演进,从6.0开始大量引入分布式的架构和组件,好比使用MQ去除服务耦合;将服务作成WebService;引入Naming Service等。相信随着架构演进,Summit系统会愈来愈优秀,性能会逐渐提升、部署更加方便、开发也也更加灵活。

相关文章
相关标签/搜索