对于一个金融计算软件来说,除了实现基本的计算功能,还有系统安全、系统运行历史记录、报表等众多模块需要考虑。这里不会详细介绍这些模块,而仅仅关注于核心计算模块的实现以及系统的资源管理。
并行软件选择,在系统架构设计阶段,可以使用Hadoop或SymphonyDE,采用并行计算的方法提高计算速度。
对于如何选择并行计算平台,可以通过分析具体的数据输入和输出来确定。
在第6章中,由于有海量数据存储需要处理,所以采用Hadoop这种基于大数据的分布式计算框架就显得很合适。而通过本章前面的分析,对于金融计算而言,输入数据仅仅是收益与成本的变化幅度以及计算次数,数据量很小,没有对历史数据的分析,此时采用Sym-phony DE这种基于消息传递的并行计算框架就显得很合适。
(1)输入、输出数据定义
首先确定输入、输出数据。输入数据主要有总投资、年销售税金、年折旧费、预期收益率、采样次数、年销售收入预期、年经营成本预期以及波动率,Symphony DE支持通过Java Serialize类封装消息,如代码清单7-3所示。
【代码清单7-3】
输入数据主要有当收入发生变化时投资盈利的概率、当成本发生变化时盈利的概率以及当收入与成本都发生变化时的盈利概率,Symphony DE支持通过Java Serialize类封装消息,如代码清单7-4所示。
【代码清单7-4】(www.xing528.com)
(2)服务端代码
服务端代码需要接受客户端传来的消息,在Symphony DE中可以通过继承onInvoke方法中的getTaskInput()获取,而结果则通过taskCon setTaskOutput返回给客户端。详细如代码清单7-5所示。
【代码清单7-5】
服务器端代码编写好后,可以将服务类以及消息类发布到SymphonyDE运行环境中,具体参考第3章。
(3)客户端代码
假设我们部署的服务名称为TenMillionTrading,则将可以通过connection=SoamFacto-ry.connect(appName,securityCB)获得Symphony DE并行计算的链接,详细如代码清单7-6所示。
【代码清单7-6】
详细代码请读者参考sample7\SymphonyMonteCarla,读者最好动手实际运行一下(可参考第3章中的SymphonyDE的使用)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。