Summit System Implementation Overview(V6.0 or higher)

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

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

Summit系统模块

Summit系统运行时模块交互

Summit系统模块

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

Summit系统经过多年的架构优化,在V6.0及之后的版本中,将之前版本采用的CORBA模块替换成Web

Service(aixs2实现)。这是Summit系统向分布式架构演进的体现之一。

进一步划分的话,可以分成以下模块:

序号   分层         模块                                       说明

1        View    Summit FT                          Summit系统客户端

2       Control  ETK Web Service              创建、销毁会话(HTTP会话)

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

4       Control  Naming Web Service         负责Web Service的注册、查找;负责客户端会话与后台etkservice进程

                                                                  之间的注册、查找(会话保持)

5       Control Generate ID Web Service   产生全局唯一ID的Web Service

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

7       Control  etkservice                              用户HTTP请求后台服务进程

8       Model   database                                持久化数据库

9       N/A       STP ServiceSummit              系统事件处理服务

10     N/A       BVS ServiceBlotter View Server   即实时刷新服务

11     N/A       SequencerSummit                系统事件发布服务

12     N/A       SMTService 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,这是一个WebService服务端程序,启动进程后,会通过一个端口服务某个用户会话。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)就是这样一个管理工具。提供了基本的服务启动、停止、新建、删除的功能。

Summit系统模块交互

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

登陆过程

操作过程

事件处理过程

2.1  登陆过程


1 系统启动时,Generate ID需要启动,启动时向Naming Service注册自己

2 用户登陆点击登陆后,Summit FT向ETK服务发起HTTP请求

3 ETK服务启动一个etkservice进程来服务此用户

4 etkservice启动后,向Naming Service注册自己(Session ID<-> 端口号)

5 etkservice读取数据库中的用户信息,验证密码及其他信息(比如是否过期、是否被锁定)

6 etkservice验证完成后,将结果以SOAP报文的形式返回给Middle Service

7 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事件

用户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系统会越来越优秀,性能会逐渐提高、部署更加方便、开发也也更加灵活。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容