我设计的高频交易架构是这样:
服务器多核多线程,TPC模式,每个链接一个线程。多台服务器。服务器要处理数据库业务,只能使用简单的多线程模式。
加一个管理器,对多台服务器设置连接池。对每台服务器有限个链接(服务器有限个线程)。对多个服务器进行负载均衡和容错。
管理器采用线程池模式,M:N,M个客户端,N个线程。
一般M上万,N等于核数。
由于N要处理两边的IO(客户端的请求转到服务器,服务器的应答返回客户端),所以要用到异步。
于是有M个协程,N个线程。多线程协程,不知道ASIO框架能解决这个问题否。
这个架构,对单个任务而言,延迟比较大,在百微秒级别。
但是并行度比较好,总的系统吞吐量很大,适合交易事务处理。
总的交易吞吐量,取决于服务器数,总核数,后台数据库引擎的处理能力。
海量客户端-----交易管理器---多个服务器---数据库(RAC)
交易压力由管理器承担,超过服务器处理能力的请求在此排队。
客户端不接触数据库,只发出业务请求,并得到结果。即,数据库不对外,安全。
外部攻击的话,只能攻击管理器,那里没有数据,是保证系统数据安全的。它的抗攻击能力极强。即使被攻塌,重新启动也很快。
如果数据库被攻塌,要想恢复,你试试。
这是一个交易中间件。
客户端和服务器的交易软件,你自己写。
有服务接口。
中间的什么线程协程,你不要管,全透明,就当他不存在。
【 在 gfkid 的大作中提到: 】
: 好奇高频交易都是怎样的软件架构
: 似乎都是单体软件,不能搞网络间的分布式了,走网络就慢了
--
修改:ylh0315 FROM 221.218.61.*
FROM 221.218.61.*