期货交易自动化论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 19|回复: 0

c/c++写的核心系统有实现交易动态调用的吗? - 第2页 - 金融行业 - ITPUB论坛-专业的IT技术社区

[复制链接] |主动推送

285万

主题

285万

帖子

855万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8553710
发表于 2022-9-11 08:19:35 | 显示全部楼层 |阅读模式
真是学习了。。。。。。
一直以为核心全是用交易中间件。只是不同的中间件技术,没想到还可以这样干。
fool_cn 发表于 2011-10-12 20:53

真是学习了。。。。。。
一直以为核心全是用交易中间件。只是不同的中间件技术,没想到还可以这样干。
没必要过于迷信那些中间件。中间件本身也是用开发语言写的程序,一般都是通用目的而写,不见得比你自己专门写的简洁优化。另外,软件运行的中间层次越多,效率越是会打点折扣。
家住海淀 发表于 2011-10-12 16:04

实现的思路上或许要改一下了
不要再基于原来那种基于过程的方式,而是基于服务的模式
看来厂商给老胡灌输了不少SOA之类的概念啊。基于服务的模式。
这就得看,究竟什么是服务?是不是非得web service,或者是某些中间件上发布的,才叫服务?我认为,只要是经过外部请求,分析输入,对外提供处理功能,返回输出,就可以看成服务。这样的话,原来这些OLTP系统的交易,对外部调用者来说,天生就已经是服务了!可是这么一来,厂商怎么赚钱啊。所以得忽悠,让你相信只有他做的才叫服务。顺带抛出ESB,只有ESB的才是服务哦,其他都不算。
那么,到底SOA说的是什么意思呢?名词很新很唬人,其实解释起来,是软件开发很通用的一个原理:结构上,要求划分系统或者模块边界,不同的部分之间不可以耦合,而要通过服务接口来互相访问。套在银行系统上,就是说,信贷系统访问核心的客户信息,不要直接读核心数据库啦,要核心提供交易调用,甚至更绝对一些的,客户信息做成独立的系统,核心,信贷都来调用这个系统的服务吧。这时候,服务是指外界调用的网络服务器程序。那么,在系统的实现上,SOA的原理也同样起作用。比如写交易程序,系统内部要划分模块,访问其他模块的功能要通过其他模块提供的函数接口调用,不能直接访问别的模块的表啦。这时候,服务就是指接口,通常是过程语言的函数,或者是面向对象语言的接口类。所以说,SOA和基于过程,其实并没有冲突,前者是指系统的规范思想,后者是指程序设计方法。
不少新名词,其实都不是新概念。当然业界推出这些,本身是有正面意义的,但是往往被厂商为了达到目的而故意曲解。
比如最近炒得很火的云计算,最根本的意思就是说所有数据都放在后端,这样不论到哪儿,用什么连接系统,数据都可以不受影响而继续使用,也就是完全托管。这东西对银行来说是新概念吗?显然不是。早先的银行系统,甚至现在很多银行还在用的字符终端,就是如假包换的“云计算”。当然,我并不是说云计算完全没有作用,相反我认为系统托管对于某些情况比如村镇银行是相当有意义的,我是无奈厂商的过度包装,时不时冒出点银弹来,就像软件业来了大救星,赶紧跪地接受大师醍醐灌顶。还特别喜欢弄些洋文缩写,似乎洋人有洋枪有洋炮,除了人高马大,船坚炮利以外,大脑可能也会大一点。不过对于厂商来说,这个方法的好处是,在于一般人对于科学的信仰。大部分客户只要听到一个理论上的名词,就会兴起一股崇敬之意。越是信仰科学的人,越不知道怎么样去与科学争辩。所以采取这个方法,通常会遇到比较小的阻力。
问题集中在两个地方:1.动态库的加载(.so/.dll/jar),2.实现方法动态调用(多态调用)
第一个问题:动态库加载,没有那个java系统(效率要求高的系统)会在运行中使用动态ClassLoader,不然这个系统的效率可想而知!
一般的做法是在系统在启动的时候就会完成ClassLoader,这种方式如果是新增服务的时候,是不需要重新启动系统,但是如果是修改服务是需要重新启动系统的。这个原理其实在C/C++中也类似的,java中使用ClassLoader,而C/C++中可以使用ldopen,这这个方面其实没有什么太大差别。
第二个问题:实现方法动态调用,大家都针对java和C++在多态调用方面其实没有什么不一样,问题主要集中在C中如何实现多态调用,其实在C中可以通过配置表+函数指针的方式实现多态调用的功能!
另外我这里想说明一下,java中有的反射和动态生成代码编译执行,这个目前在C/C++可能无法实现(我所知道的,也许可以),这个才是java和C/C++中最大的区别,如果你的系统设计确实用到了java中的以上功能那就要考虑在C/C++如何实现,这个才是问题的关键,而不是动态加载和多态调用!
核心系统使用dlopen的有的,从开发和维护角度来看,带来的好处是巨大的,可以将较底层的调度框架和交易模块完全分离,交易的发布、更新对调度框架不产生任何影响,业务交易的开发人员之需要完成业务逻辑,不需要掌握较底层的技术及中间件相关技能等。带来的负面效果是多消耗一些系统资源,使得效率下降,但在现今硬件的条件下,完全可以接受。
作为兴趣方向没有基础性问题,到了这个阶段,成熟的软件和产品都已经集成化了,再做这方面的研究有点浪费时间了
我更多的关注方法论、性能、目标达成,而不再关心细节了
人的精力是有限的
几种方法都用过,动态库、函数指针、通信交换方式,都能解决服务与控制剥离的需求,把这几种方式揉合好了,就是个交易中间件。其实简单点说:就是接口层和实现层的剥离。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|期货交易自动化论坛

GMT+8, 2025-8-27 07:50 , Processed in 0.083383 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表