第一周:ISON整体结构及源码分析(李哲希&曾士轩) - TDB-program/TDB-program GitHub Wiki
ISON整体框架:
系统登录 登录配置
网络配置
level2交易面板
level2方向键及颜色设置
前端(TWD) 大单设置
配置功能 交易记录快捷键设置
密码设置
获取行情
level2界面 下单
交易记录 撤单
改单
交易功能 当前仓位
个人信息
仓位 各股票盈亏
预约券剩余数量
可融券剩余数量
篮子交易
辅助功能 短线精灵
买一卖一(该功能待完善后添加)
后台:
addActors(actors:Object)
Stage getDatabase(id:String)
getMemdb(id:String)
onEvent(event:Event)
onStart()
onStop()
request(connector_id:String, reciever:String, msg:String)
request(connector_id:String, reciever:String, msg:String,
Actor callback:Function)
publish(pub_id:String, topic:String, msg:String)
类·接口(ISON-BASE) subscribe(sub_id:String, topic:String)
unSubscribe(sub_id:String[, topic:String])
unSubscribe(sub_id:Array, topics:Array)
addTimer(delay_ms:Int32[, times:Int32])
endTimer(timer_id:Int32)
msg:String
type:String
Event topic:String
reply(msg:String)
forward(connector_id:String, reciever:String[, msg:String])
replyTo(hops:Object, reciever:String[, msg:String])
query(stmt:String)
createStatement()
Database prepare(stmt:String)
commit()
rollback()
Execute(stmt:String)
ExecuteQuery(stmt:String)
Statement getRpc()
getResultSet()
more()
rowsCount()
ResultSet next()
fetchRow()
get(key:String)
set(key:String, value:String)
check(key:String)
add(key:String, value:String)
replace(key:String, value:String)
append(key:String, value:String)
seize(key:String)
remove(key:String)
clear()
count()
Memdb inc(key:String, value:Integer[, orig:Interger])
incDouble(key:String, value:Number[, orig:Number])
cas(key:String, ovalue:String, nvalue:String)
setBulk(values:Object[, atomic:Boolean])
getBulk(keys:Array[, atomic:Boolean])
removeBulk(keys:Array[, atomic:Boolean])
matchPrefix(prefix:String[, max:Integer])
getByPrefix(prefix:String[, max:Integer])
setString(value:String)
setInt(value:Integer)
setDouble(value:Number)
PreparedStatement Execute()
ExecuteQuery(stmt:String)
getRpc()
getResultSet()
more()
info(msg:String)
info(v:Int, msg:String)
Log error(msg:String)
warning(msg:String)
Version @1
Init @2
Status @3
Connect @4
接口(ISON-TGWAPI) Disconnect @5 同步接口
Send @6 异步接口
Exit @7 同步接口
tgwSleep @8
tgwLogin @9
tgwSub @10
tgwTime@11
Seqno
Head
GetMarketData(行情请求) DataType
BeginDate
BeginTime
EndDate
EndTime
ErrNo
ErrInfo
IsLast
Data:[Code,Count,HQ:[{}]]
接口(SDS) Seqno
Head
Market
ErrNo
GetCodeTable(请求股票代码表) ErrInfo
IsLast
Codes
SelectRFASC
SelectRFDES
SlectOpenFloatASC
SlectOpenFloatDES
SlectHighFloatASC
请求股票排序指标 SlectHighFloatDES
SlectLowFloatASC
SlectLowFloatDES
SlectRangeASC
SlectRangeDES
体系结构 一、ISON-BASE 1.层次结构: ISON-BASE体系大致分为4层,从上往下依次是 业务逻辑层,以JavaScript业务脚本的形式存在 脚本引擎层,为业务逻辑层提供执行环境 IB-Engine中间层,为业务逻辑层提供所有的功能和系统资源 IB-Kernel底层,支撑整个系统的运行
2.逻辑结构
每个IB实例是一个独立的程序,支持在Linux及Windows上运行。 在IB内部,都是以工作单元(Stage)的方式存在,每个Stage是一个独立的线程,每个Stage上有多个Actor执行任务,每个Actor都是由事件驱动的. 每个Stage有一个Listener端点和若干个Connector端点。Listener用于接收客户端的请求,并根据请求的Actor名把请求分派到内部的Stage上。每个Stage可以通过Connector连接到其他Stage上,Actor可以通过Connector请求其他Stage上的Actor。 每个Stage有若干个Publisher和Subscriber端点,Actor可以通过Publisher发布消息,也可以通过Subscriber订阅其他Stage的消息。 Stage按功能可分为业务Stage和系统Stage。系统Stage主要向业务Stage提供系统服务,如数据库访问、内存数据库访问、日志记录等系统功能。 IB系统启动的时候读取YAML格式的配置文件,根据配置文件创建Stage和Actor,并建立数据库连接和网络连接等。
3.分布式结构 IB除了支持单机模式之外,还能使用开源的分布式协调服务程序ZooKeeper来实现分布式部署和高可用性部署。IB的高可用性支持Active-Active, Active-Standby模式。 单机模式: IB作为独立的进程运行,所有的配置文件和业务程序包都在本地。 集群模式: 集群中多个IB作为一个整体协同工作,配置文件和业务程序包通过配置管理服务器发布,配置管理器把配置文件上传到ZooKeeper,IB启动以后从ZooKeeper读取配置文件获取业务程序包的信息,并从配置服务器下载业务程序包。配置文件的修改从配置管理服务器发起,然后由ZooKeeper通知IB更新配置。 Active-Active模式: 多个IB同时服务客户端的请求 Active-Standby模式: 同时只能有一个IB服务客户端的请求,其他IB待机。如果当前正在服务的IB突然宕机,则其中一个待机IB自动激活来服务客户端的请求。
4.拓扑结构
每个Stage都绑定一个Listener,用于接受客户端或者其他Actor的请求调用 每个Stage可以有若干个Connector用于连接其他Stage调用其他Actor 每个Stage可以有若干Publisher用于Actor对外发布消息 每个Stage可以有若干个Subscriber用于订阅其他Actor发布的消息 Stage可以直接对外提供服务,如ClientA可以直接访问StageA。 Stage也可以运行在代理之后,这样可以实现Stage的横向扩展,如同时运行多个处理相同业务的Stage,Shared Queue代理会自动把客户端请求按照公平队列方式分发到多个Stage上处理。如ClientC或ClientD直接把请求发送到Shared Queue代理,然后StageB和StageB’其中之一得到请求,处理完以后再回复给客户端。 同样也可以通过Forwarder代理来实现客户端通过一个队列订阅多个Stage发布的消息。 如ClientA,ClientB,ClientC可以通过订阅一个Forward代理来实现订阅StageA和StageB发布的消息。
二、ISON-TGWAPI 1.逻辑结构
如上图所示: 交易前端通过TGWAPI.DLL,访问TGW服务器。 TGW协议采用的是ISONPACK协议,具体说明参见:ISON-OMS的相关文档。
功能模块总结:
登录模块:实现系统登录。