↓ 跳过正文
  1. Posts/

2000年前后:交易主站、席位、中间件、交易所到底是什么关系?

2000年前后:交易主站、席位、中间件、交易所到底是什么关系?
#

如果把1990年代中国证券IT的发展简单概括成一句话:

证券市场正在从“营业部电脑化”,变成“证券公司网络化”。

而到了2000年前后,真正复杂的问题已经变成:

一笔订单究竟从哪里进入证券公司,又经过哪些服务器、哪些交易通道、哪些席位,最后怎样进入上交所或深交所?

要理解 KCBP、KCXP、AS、AR、HARE 这一代证券软件,首先必须把四个经常被混淆的概念拆开:

交易主站、交易席位、中间件、交易所。


一、先给结论:四个东西根本不是一回事
#

最简单的结构可以画成:

投资者
   ↓
证券营业部
   ↓
证券公司中央交易系统
   ↓
交易中间件
   ↓
交易网关 / 席位通道
   ↓
交易所

这里至少存在五个不同层次:

① 投资者 / 营业部
② 证券公司核心交易系统
③ 交易中间件
④ 交易席位 / 交易通道
⑤ 交易所

很多历史资料把这些概念混在一起,所以今天重新看90年代末、2000年代初的证券系统,很容易出现:

“席位就是服务器?”

或者:

“交易主站就是交易所?”

或者:

“KCBP就是交易主站?”

这些理解都不够准确。


二、先从一笔最简单的订单开始
#

假设投资者想买:

600000
1000股
10.00元

投资者并不会直接把这个订单发给上交所。

最粗略的链条是:

投资者
 ↓
营业部
 ↓
证券公司
 ↓
交易席位
 ↓
上交所

但是这个图太简单了。

真正的IT系统可能更接近:

投资者
 ↓
营业部终端
 ↓
营业部接入系统
 ↓
集中交易系统
 ↓
交易主站
 ↓
中间件
 ↓
交易网关
 ↓
席位
 ↓
上交所

成交后反过来:

上交所
 ↓
席位
 ↓
交易网关
 ↓
中间件
 ↓
交易主站
 ↓
集中交易系统
 ↓
营业部
 ↓
投资者

这才是我们需要理解的“数据流”。


三、什么是营业部?
#

先从最靠近投资者的一端开始。

1990年代早期,营业部本身就是一个相对完整的计算机系统:

客户
 ↓
营业部柜台
 ↓
营业部服务器
 ↓
营业部数据库

营业部负责:

  • 客户资料;
  • 资金账户;
  • 委托;
  • 成交;
  • 打印;
  • 查询;
  • 部分风险控制;
  • 部分清算和结算业务。

因此:

早期营业部本身就是一个小型证券交易中心。


四、集中交易以后,营业部发生了什么变化?
#

随着集中交易建设,营业部逐渐失去了一部分“计算中心”的角色。

变成:

客户
 ↓
营业部
 ↓
网络
 ↓
中央系统

于是营业部越来越像:

证券公司的前端节点。

它主要负责:

输入
 ↓
传输
 ↓
显示

而不是自己完成全部交易逻辑。


五、什么是中央交易系统?
#

假设一家证券公司有:

营业部001
营业部002
营业部003
...
营业部100

以前:

001 → 本地系统
002 → 本地系统
003 → 本地系统

集中以后:

001 ─┐
002 ─┤
003 ─┤
...  ├──→ 中央交易系统
100 ─┘

中央交易系统开始统一处理:

客户
账户
资金
证券
委托
成交
风险
状态

所以:

集中交易首先意味着“数据和交易处理能力集中”。


六、那么什么叫“交易主站”?
#

“主站”这个词非常容易让现代程序员误解。

它不是简单意义上的:

Main Server。

在证券行业历史语境里,“主站”更多是在描述:

整个交易网络中的中心交易节点。

它通常位于证券公司中心机房,承担大量核心交易处理。

可以粗略理解为:

                  中央交易主站
                       │
       ┌───────────────┼───────────────┐
       ↓               ↓               ↓
    营业部001        营业部002       营业部003

同时:

中央交易主站
      ↓
交易通道
      ↓
交易所

所以它处在:

营业部网络与交易所网络之间。


七、交易主站不是交易所
#

这是第一条必须记住的原则:

证券公司交易主站 ≠ 上交所

交易主站属于:

证券公司

而交易所属于:

市场基础设施

两者之间通过交易通道连接。

因此:

证券公司
   ↓
交易主站
   ↓
交易通道
   ↓
上交所

或者:

证券公司
   ↓
交易主站
   ↓
交易通道
   ↓
深交所

八、那么“交易席位”是什么?
#

交易席位又是另一个概念。

可以先用一个非常粗略的现代类比:

席位更像证券公司获得的交易资格与交易接入身份。

它不应该简单理解为:

一台服务器

也不能简单理解为:

一条网线

更不能简单理解为:

一个营业部

它更接近:

证券公司
   ↓
交易资格
   ↓
交易席位
   ↓
交易所

九、为什么历史上的“席位”特别容易被误解?
#

因为早期席位真的具有非常强的物理属性。

交易大厅里:

┌────┬────┬────┬────┐
│席位│席位│席位│席位│
└────┴────┴────┴────┘

交易员坐在那里。

电话在旁边。

终端在旁边。

订单从营业部传过来。

交易员再把订单输入交易系统。

所以当年:

席位既是制度概念,也是物理交易位置。


十、后来席位逐渐“电子化”
#

随着交易系统发展:

物理席位
   ↓
电子交易席位
   ↓
逻辑交易通道

席位越来越不像一个“座位”。

它更像:

交易资格
+
身份
+
市场接入
+
交易通道

因此到了集中交易时代,可以看到:

多个营业部
      ↓
一个中央交易系统
      ↓
一个或多个交易席位
      ↓
交易所

十一、一个席位可以服务很多营业部
#

这是理解集中交易最关键的一点。

例如:

营业部A ─┐
营业部B ─┤
营业部C ─┤
营业部D ─┼──→ 中央交易系统
营业部E ─┘          ↓
                  席位
                    ↓
                  上交所

因此:

营业部不是席位。

而是:

大量营业部的订单可以经过中央系统汇聚到交易席位。

这就是证券公司网络的“聚合”。


十二、于是出现了一个非常重要的 Many-to-Few 模型
#

客户端这一侧:

很多营业部
+
大量投资者
+
大量委托

交易所这一侧:

少量席位
+
少量标准化交易接口

中间:

                ┌→ 席位1 → 上交所
很多营业部 → 中央系统 ─→ 席位2 → 深交所
                └→ 其他通道

也就是:

Many
 ↓
Centralized Processing
 ↓
Few

这就是证券集中交易网络最典型的拓扑。


十三、中间件为什么出现?
#

现在问题来了。

如果中央交易系统直接负责:

上交所
深交所
银行
登记
清算

那么它内部会越来越复杂。

例如:

核心系统
 ├── 上交所接口
 ├── 深交所接口
 ├── 银行接口
 ├── 登记接口
 └── 清算接口

这样就产生大量耦合。

于是开始出现:

核心系统
    ↓
中间件
    ↓
各种外部系统

十四、中间件到底在干什么?
#

可以把中间件理解成:

证券公司内部语言与外部交易系统语言之间的翻译、路由和可靠传输层。

例如核心系统产生:

内部订单:

{
    customer: 10001,
    stock: 600000,
    qty: 1000,
    price: 10.00
}

中间件负责把它变成:

上交所需要的交易消息

如果是深圳市场:

核心系统
 ↓
中间件
 ↓
深圳交易协议

如果是上海市场:

核心系统
 ↓
中间件
 ↓
上海交易协议

所以:

核心业务系统不需要自己懂所有外部协议。


十五、中间件至少承担四种工作
#

可以把它概括成:

① Message
② Routing
③ Protocol
④ Reliability

即:

1. Message——消息
#

处理:

委托
成交
撤单
确认
拒绝

2. Routing——路由
#

判断:

上海?
深圳?
银行?
登记?

3. Protocol——协议
#

负责:

内部消息
 ↓
外部协议

4. Reliability——可靠性
#

处理:

断线
重发
重复
丢失
顺序
恢复

这四个部分组合起来,才是证券交易中间件真正有价值的地方。


十六、为什么“消息”是证券系统的核心?
#

假设:

订单100001

发送出去。

接下来可能出现:

已发送
 ↓
已收到
 ↓
已接受
 ↓
部分成交
 ↓
全部成交

或者:

已发送
 ↓
被拒绝

或者:

已报
 ↓
撤单
 ↓
撤单成功

所以一笔交易并不是一个事件。

而是一整个:

状态机。


十七、一笔订单在系统里是什么?
#

从业务角度:

买1000股

从IT角度:

Order ID
Customer ID
Account ID
Market
Security ID
Price
Quantity
Timestamp
Session
Sequence
Status

然后不断产生新的事件:

Order
 ↓
Ack
 ↓
Execution
 ↓
Cancel
 ↓
Cancel Ack

因此证券交易系统实际上是:

一个高可靠金融消息处理系统。


十八、这也是为什么“交易中间件”与普通企业消息系统不同
#

普通企业系统可能允许:

消息晚一点到。

证券交易通常不能接受:

订单状态不知道。

例如:

投资者认为:

我已经撤单。

但是交易所实际上:

已经成交。

那么问题就非常严重。

所以交易系统必须准确知道:

委托状态
成交状态
撤单状态

十九、最危险的情况:网络断了
#

假设:

订单100001

已经发送。

突然:

网络断开。

证券公司不知道:

交易所收到了吗?

如果直接重新发送:

订单100001

可能导致:

重复订单

所以系统必须支持:

Sequence
+
Message ID
+
Acknowledgement
+
Recovery
+
Deduplication

这些机制。


二十、所以交易中间件本质上开始承担“可靠消息总线”的角色
#

可以画成:

                 中间件
                    │
        ┌───────────┼───────────┐
        ↓           ↓           ↓
      委托        成交         撤单
        │           │           │
        └───────────┼───────────┘
                    ↓
                交易通道
                    ↓
                  交易所

它不只是:

Socket → Socket

而是:

业务消息
 ↓
路由
 ↓
协议转换
 ↓
可靠传输
 ↓
状态维护
 ↓
恢复

二十一、于是“交易主站”和“中间件”的关系出现了
#

这是第二个特别容易混淆的地方。

不能简单写成:

交易主站 = 中间件

更合理的理解是:

交易主站
└── 交易处理环境 / 中央节点

中间件
└── 其中负责消息通信、路由、协议适配等的一类基础软件

所以:

主站是系统架构中的中心节点概念,而中间件是软件层概念。

两者不是同一个维度。


二十二、一个交易主站里可能包含很多组件
#

例如抽象成:

┌────────────────────────────┐
│        交易主站             │
│                            │
│  ┌──────────────────────┐  │
│  │ 客户/账户处理          │  │
│  ├──────────────────────┤  │
│  │ 委托处理               │  │
│  ├──────────────────────┤  │
│  │ 风险控制               │  │
│  ├──────────────────────┤  │
│  │ 交易消息               │  │
│  ├──────────────────────┤  │
│  │ 中间件 / 通信层         │  │
│  └──────────────────────┘  │
└────────────────────────────┘

因此不能看到某个产品运行在“主站”上,就认为:

这个产品本身就是整个主站。


二十三、KCBP/KCXP应该放在哪里?
#

现在终于可以把前面的问题放进去。

可以用一个历史架构概念来理解:

营业部
   ↓
集中交易系统
   ↓
KCBP / KCXP 类中间层
   ↓
交易通道
   ↓
交易席位
   ↓
交易所

它们所解决的问题,是:

集中交易以后,证券公司如何把内部交易业务可靠地连接到外部市场。

因此研究KCBP/KCXP的时候,不能只把它们看成“某个功能模块”。

它们背后反映的是整个证券行业的架构变化。


二十四、为什么金证和恒生都会做类似东西?
#

因为两家公司面对的是同一个历史现实:

营业部越来越多
+
交易量越来越大
+
集中交易开始普及
+
上交所/深交所接口复杂
+
银行系统需要连接
+
登记清算需要连接

所以无论金证还是恒生,都必须解决:

连接
+
消息
+
路由
+
协议
+
可靠性

因此出现:

金证
KCBP / KCXP

恒生
AS / AR

这样的产品体系并不奇怪。

真正值得研究的是:

为什么两家公司对相同问题给出了不同的软件边界。


二十五、这时候再看“席位”,它就非常清楚了
#

整个链条:

客户
 ↓
营业部
 ↓
中央交易系统
 ↓
中间件
 ↓
席位
 ↓
交易所

其中:

营业部
#

负责:

客户入口

中央交易系统
#

负责:

证券业务处理

中间件
#

负责:

消息、路由、协议、可靠性

席位
#

代表:

进入交易所的交易资格 / 通道身份

交易所
#

负责:

市场集中交易与撮合

这样五者的边界就非常清楚了。


二十六、再看一笔成交回报
#

假设:

订单100001

在上交所成交。

交易所产生:

Execution

然后:

上交所
 ↓
席位
 ↓
交易通道
 ↓
中间件
 ↓
中央交易系统
 ↓
客户账户

最终投资者看到:

成交1000股
价格10.00

但后台实际上发生了:

交易所成交
 ↓
消息产生
 ↓
消息传输
 ↓
消息解析
 ↓
路由
 ↓
账户更新
 ↓
持仓更新
 ↓
营业部回报

二十七、如果成交回报丢了怎么办?
#

这又回到了中间件的核心价值。

例如交易所已经成交:

1000股

但是:

交易所 → 证券公司

的网络中断。

那么证券公司必须能够:

发现缺失
 ↓
重新建立会话
 ↓
获取缺失消息
 ↓
按序恢复
 ↓
更新状态

因此:

交易系统真正害怕的不是“网络断线”,而是“断线以后不知道发生了什么”。


二十八、这也是为什么交易系统非常强调“对账”
#

最终每天都要回答:

交易所说成交了多少?

和:

证券公司系统认为成交了多少?

是否一致。

例如:

证券公司:
成交100,000笔

交易所:
成交100,000笔

正常。

如果:

证券公司:
100,000

交易所:
99,999

就必须查。

所以:

交易
 ↓
清算
 ↓
对账

成为整个证券系统的闭环。


二十九、这其实就是金融系统最重要的“闭环”
#

普通互联网应用可能是:

Request
 ↓
Response

证券交易则是:

Order
 ↓
Exchange
 ↓
Execution
 ↓
Clearing
 ↓
Settlement
 ↓
Position
 ↓
Reconciliation

所以证券IT比普通业务系统更加严格。


三十、为什么证券公司最终必须建设双机甚至多机?
#

因为:

集中交易

意味着:

一个中心节点

一旦中心节点失败:

所有营业部
 ↓
无法交易

所以开始需要:

主机
 ↓
备机

进一步:

主站A
   ↕
主站B

再进一步:

生产中心
 ↓
灾备中心

以及:

数据库备份
+
交易日志
+
消息日志
+
状态恢复

三十一、集中交易实际上带来了“集中风险”
#

这是集中交易的悖论:

集中化解决了管理问题,却放大了中心故障风险。

以前:

营业部A挂了

可能只是:

A不能交易

现在:

中央主站挂了

可能:

100个营业部全部不能交易

所以证券IT开始特别强调:

高可用
+
冗余
+
灾备
+
恢复

三十二、这也是2000年代证券IT为什么越来越像“大型分布式系统”
#

虽然当时还没有今天流行的:

Microservices
Kafka
Kubernetes
Cloud
API Gateway

但是架构问题已经非常类似:

大量客户端
 ↓
中心服务
 ↓
消息中间件
 ↓
多个外部系统

并且需要:

高并发
+
低延迟
+
高可靠
+
顺序保证
+
故障恢复
+
数据一致

所以证券IT其实很早就进入了:

大型金融分布式系统时代。


三十三、为什么“低延迟”越来越重要?
#

早期柜台交易:

分钟
甚至更长

后来:

秒

再后来:

毫秒

当市场竞争加剧以后:

订单 → 交易所

的速度越来越重要。

因此:

营业部
 ↓
中央主站
 ↓
中间件
 ↓
交易网关
 ↓
交易所

每一层都不能做太多无意义的事情。

于是证券中间件逐渐从:

“能通信”

演变成:

“高性能地通信”

三十四、这就是“交易系统中间件”和普通企业中间件的区别
#

普通企业消息系统:

可靠

已经很好。

证券交易系统要求:

可靠
+
有序
+
可恢复
+
可追踪
+
低延迟
+
可对账

所以证券中间件从诞生之日起,就具有非常强的行业属性。


三十五、整个2000年前后的系统可以画成这样
#

                         投资者
                            │
                            ▼
                    ┌──────────────┐
                    │   证券营业部  │
                    └──────┬───────┘
                           │
                           ▼
                ┌────────────────────┐
                │   集中交易系统      │
                │                    │
                │ 客户 / 账户 / 委托  │
                │ 风险 / 持仓 / 状态  │
                └─────────┬──────────┘
                          │
                          ▼
                ┌────────────────────┐
                │    交易主站         │
                │                    │
                │  中央交易处理中心   │
                └─────────┬──────────┘
                          │
                          ▼
                ┌────────────────────┐
                │ KCBP / KCXP 类层    │
                │                    │
                │ 消息 / 路由 / 转换   │
                │ 会话 / 恢复 / 对账   │
                └─────────┬──────────┘
                          │
                 ┌────────┴────────┐
                 ▼                 ▼
              上海席位           深圳席位
                 │                 │
                 ▼                 ▼
               上交所             深交所

注意:

这是一张概念架构图,不是对某一家证券公司某一年实际部署拓扑的断言。

不同厂商、不同证券公司、不同年份的实际系统边界可能存在差异。


三十六、把整个历史再压缩成一句话
#

1986年:

柜台就是交易中心

1990年前后:

交易所成为市场中心

1990年代中期:

营业部开始联网

1990年代后期:

证券公司建立中央交易系统

2000年前后:

中央交易系统
 ↓
交易主站
 ↓
中间件
 ↓
席位
 ↓
交易所

于是证券交易正式进入:

**“网络化


这样才能真正回答一个问题:

> **2000年前后,中国证券公司的“交易软件”到底是怎么跑起来的?**

相关文章