↓ 跳过正文
  1. Posts/

1997—2001:证券公司为什么必须集中交易——从营业部本地系统到 KCBP/KCXP

1997—2001:证券公司为什么必须集中交易
#

从营业部本地电脑,到交易主站,再到 KCBP/KCXP
#

1990年代初,把一台电脑放进证券营业部,已经是一场技术革命。

但到了1990年代后期,问题已经不再是:

“怎么让一个营业部实现电脑化?”

而变成了:

“怎么把几百家营业部、数百万投资者、多个交易所、多个交易席位、银行、清算和登记系统连接成一个统一的交易网络?”

这正是中国证券IT从“营业部软件”走向“集中交易系统”和“交易中间件”的关键历史阶段。


一、最早的证券电脑系统,其实是“营业部自己的系统”
#

在1990年代初,证券公司最自然的技术架构,就是:

营业部 A
   ↓
本地证券交易服务器
   ↓
本地数据库

另外一家营业部:

营业部 B
   ↓
本地证券交易服务器
   ↓
本地数据库

再一家:

营业部 C
   ↓
本地证券交易服务器
   ↓
本地数据库

也就是说:

营业部 A → 自己的数据
营业部 B → 自己的数据
营业部 C → 自己的数据

这其实很好理解。

当时:

  • 营业部数量有限;
  • 投资者数量还没有后来那么巨大;
  • 计算机网络成本高;
  • 广域网技术不成熟;
  • 数据量相对较小;
  • 各营业部在业务上具有较强的独立性。

所以:

“一个营业部一套系统”是当时非常自然的技术选择。


二、但是证券市场开始疯狂增长
#

问题很快出现了。

投资者数量不断增加。

股票品种增加。

交易量增加。

证券营业部增加。

证券公司开始从一个城市的几个营业部,发展成:

几十家营业部
        ↓
上百家营业部
        ↓
跨地区营业部网络

于是证券公司开始面临一个非常现代的问题:

“这些营业部到底是不是一个公司?”

从业务角度来说:

是一家公司。

但从IT系统来看:

却像几十个甚至几百个独立系统。

三、最先爆发的是“客户数据分散”问题
#

假设张三在:

上海营业部 001

开了一个证券账户。

后来他去了另外一个营业部:

营业部 023

希望继续交易。

如果系统仍然是:

营业部 001
    ↓
本地数据库

那么营业部023首先会遇到问题:

张三是谁?

他的资金是多少?

他持有什么股票?

有没有未完成委托?

有没有冻结资金?

有没有冻结证券?

因为这些数据都存在:

营业部001的本地数据库

而不是整个证券公司的统一数据库。

因此架构开始发生变化。

从:

客户
 ↓
营业部

逐渐转向:

客户
 ↓
证券公司中央系统
 ↓
多个营业部

四、“集中交易”到底是什么意思?
#

很多人看到“集中交易”四个字,会理解成:

把所有投资者搬到证券公司总部交易。

当然不是。

这里的“集中”,主要指:

把原本分散在各营业部的交易处理能力,集中到证券公司的中央交易系统。

原来的架构:

营业部 A
 ↓
本地交易系统
 ↓
交易所

营业部 B
 ↓
本地交易系统
 ↓
交易所

营业部 C
 ↓
本地交易系统
 ↓
交易所

逐渐变成:

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

这就是集中交易最基本的思想。


五、营业部从“交易中心”变成“交易入口”
#

这是一个非常重要的变化。

早期:

营业部
 ├── 客户
 ├── 账户
 ├── 数据库
 ├── 委托处理
 ├── 风险控制
 └── 交易

后来:

营业部
 ├── 客户服务
 ├── 委托输入
 ├── 回报显示
 └── 打印凭证
          ↓
       中央系统

也就是说:

营业部越来越像一个客户端,而不再是完整的交易处理中心。

这是证券IT架构第一次真正意义上的“大集中”。


六、集中交易之后,证券公司内部出现了一条新的数据链
#

一个投资者下单:

投资者
   ↓
营业部
   ↓
中央交易系统
   ↓
交易主站
   ↓
交易席位
   ↓
交易所

成交以后再反向回来:

交易所
   ↓
交易席位
   ↓
交易主站
   ↓
中央交易系统
   ↓
营业部
   ↓
投资者

所以到了1990年代后期,一个证券公司的核心问题已经不是:

“怎么保存股票客户资料?”

而是:

“怎么让大量交易消息可靠地穿过整个系统?”


七、为什么“交易席位”仍然存在?
#

这里必须把“营业部”和“交易席位”分开。

投资者并不是直接进入交易所交易。

基本结构仍然是:

投资者
   ↓
证券公司
   ↓
交易席位
   ↓
交易所

交易席位是证券公司进入交易所交易体系的重要市场接口。

早期“席位”还有很强的物理含义。

证券公司的交易员可能坐在交易大厅里的指定位置,通过电话或者终端接收营业部委托。

所以当时经常可以看到:

营业部
   ↓
电话
   ↓
交易员
   ↓
交易席位
   ↓
交易所

八、这时候证券公司实际上同时存在两个世界
#

到了1990年代后期,一家大型证券公司的系统可以被理解成两个世界。

第一世界:客户世界
#

投资者
   ↓
营业部
   ↓
客户账户
   ↓
资金账户
   ↓
证券账户
   ↓
委托

第二世界:交易所世界
#

委托
   ↓
交易主站
   ↓
交易网关
   ↓
交易席位
   ↓
交易所
   ↓
成交回报

真正复杂的地方就在中间:

客户世界
     ↓
     ???
     ↓
交易所世界

这个“???”就是证券中间件开始发挥作用的地方。


九、证券中间件究竟是什么?
#

简单说:

中间件就是把不同系统连接起来,同时把底层通信和协议差异隐藏起来的软件层。

例如:

证券公司核心系统
        ↓
     中间件
        ↓
    交易所接口

证券公司的核心业务系统不需要直接处理所有交易所底层协议。

而是:

证券业务系统
      ↓
统一内部交易消息
      ↓
中间件
      ↓
交易所专用消息

这就是证券中间件的基本思想。


十、为什么不能直接用一个网络连接解决?
#

因为:

“网络连接成功”不等于“交易成功”。

例如TCP连接成功,只能说明:

两台机器可以通信。

但证券交易真正关心的是:

委托有没有发出去?

交易所有没有收到?

交易所有没有接受?

委托有没有被拒绝?

有没有成交?

成交了多少?

成交价格是多少?

这个回报是不是重复的?

网络断线后应该怎么办?

所以证券中间件不能只是一个“网络转发器”。

它必须理解:

订单
成交
撤单
回报
确认
拒绝
状态

十一、一笔订单其实远远不只是“买1000股”
#

例如投资者说:

买600000
1000股
10.00元

对于证券系统而言,还必须知道:

客户编号
资金账户
证券账户
营业部
委托编号
市场
证券代码
价格
数量
委托类型
时间
交易席位

所以系统内部可能形成类似:

客户
 ↓
账户
 ↓
委托
 ↓
路由
 ↓
席位
 ↓
交易所

中间件需要负责:

验证
+
路由
+
转换
+
发送
+
接收
+
状态管理

十二、这就是KCBP/KCXP这一类系统出现的历史背景
#

到了这个阶段,再看:

KCBP
KCXP

就不能简单理解成:

“两个老式证券软件。”

更准确地说,它们应该放在:

集中交易
       ↓
交易主站
       ↓
交易消息
       ↓
消息路由
       ↓
交易所连接

这个历史架构里理解。

它们解决的是一种基础设施问题:

如何让证券公司的核心交易系统,与交易所、席位以及其他外部系统可靠地交换交易消息。

具体不同版本和不同证券公司的部署方式可能不同,因此不能把所有历史部署都简单画成完全相同的结构。

但是它们所处的技术问题是高度一致的。


十三、KCBP/KCXP放进整个证券系统是什么位置?
#

可以用一个简化模型理解:

                 投资者
                    ↓
                 营业部
                    ↓
             中央证券业务系统
                    ↓
              KCBP / KCXP
                    ↓
        ┌───────────┼───────────┐
        ↓           ↓           ↓
      上海市场     深圳市场      银行
        ↓           ↓           ↓
      上交所       深交所       银行系统

这里最重要的不是具体产品名称。

而是:

中央证券业务系统
        ↓
交易中间层
        ↓
多个外部系统

这种架构思想。


十四、为什么不能让核心交易系统直接连接所有外部系统?
#

假设证券公司有:

100个营业部

又需要连接:

上海市场
深圳市场
银行
登记
清算

如果每个业务系统都自己实现这些接口,就会变成:

业务系统A → 上交所
业务系统A → 深交所
业务系统A → 银行

业务系统B → 上交所
业务系统B → 深交所
业务系统B → 银行

业务系统C → 上交所
业务系统C → 深交所
业务系统C → 银行

系统之间形成大量耦合。

所以更合理的方式是:

              证券业务系统
              /     |     \
             /      |      \
            ↓       ↓       ↓
       ┌────────────────────────┐
       │    交易中间件层         │
       └───────────┬────────────┘
                   │
          ┌────────┼────────┐
          ↓        ↓        ↓
        上交所    深交所     银行

这就是中间件存在的核心理由之一。


十五、中间件首先解决的是“协议耦合”
#

没有中间件:

证券核心系统
      │
      ├── 上交所协议
      ├── 深交所协议
      ├── 银行协议
      ├── 登记协议
      └── 清算协议

有中间件:

证券核心系统
      ↓
统一内部消息
      ↓
交易中间件
      ↓
 ┌────┼────┬────┐
 ↓    ↓    ↓    ↓
上交所 深交所 银行 登记

核心系统因此不需要知道所有外部系统的底层细节。

这其实已经非常接近现代:

API Gateway
Message Broker
Protocol Adapter
Integration Bus

这些概念。


十六、第二个核心问题:消息路由
#

例如投资者下单:

买入上海股票

系统需要判断:

应该送到哪里?

如果是:

上海市场

可能:

→ 上海交易通道
→ 上海交易席位
→ 上交所

如果是:

深圳市场

则:

→ 深圳交易通道
→ 深圳交易席位
→ 深交所

所以中间件必须具有:

市场识别
+
路由规则
+
席位选择
+
交易通道选择

十七、所以“交易主站”实际上非常重要
#

“交易主站”不能简单理解成:

一台性能很强的服务器。

它实际上是一个交易处理中心。

简化来看:

营业部
   ↓
交易主站
   ├── 客户账户处理
   ├── 委托处理
   ├── 风险控制
   ├── 交易处理
   ├── 消息路由
   └── 交易所连接

因此:

营业部

逐渐变成:

交易主站的前端入口

而:

交易主站

则成为:

证券公司交易网络的中心节点

十八、这就是“多营业部 → 一个主站”的变化
#

以前:

营业部A → 交易所
营业部B → 交易所
营业部C → 交易所
营业部D → 交易所

后来:

营业部A ─┐
营业部B ─┤
营业部C ─┼──→ 交易主站
营业部D ─┤       ↓
营业部E ─┘     交易席位
                 ↓
               交易所

整个网络拓扑发生了巨大变化。


十九、为什么这被称为“集中交易”
#

因为原来:

交易能力分散在营业部

现在:

交易能力集中在中央系统

营业部主要负责:

接待客户
↓
录入委托
↓
显示回报
↓
打印凭证

中央系统负责:

账户
↓
委托
↓
风险
↓
路由
↓
交易
↓
成交状态

所以:

集中交易的本质,是把“交易处理权”从营业部集中到证券公司的中央交易基础设施。


二十、但是集中化带来了一个新的巨大问题:可靠性
#

如果只有一个营业部挂掉:

营业部A故障

可能只是:

A营业部不能交易

但如果中央系统挂掉:

中央交易主站故障

可能变成:

A营业部 ─┐
B营业部 ─┤
C营业部 ─┼── 全部无法交易
D营业部 ─┤
E营业部 ─┘

所以集中化带来了新的要求:

高可用
+
备份
+
热备
+
灾备
+
故障恢复
+
消息恢复

证券IT开始真正进入“关键金融基础设施”的时代。


二十一、交易中间件也必须考虑断线恢复
#

假设:

委托10001

发送出去。

突然:

网络断了。

证券公司不知道:

交易所到底收没收到?

如果直接重发:

委托10001

就可能产生重复委托。

因此系统必须知道:

这个消息是谁?

于是出现了:

消息编号
委托编号
序列号
确认号
会话状态
成交状态

这些东西。


二十二、证券交易天然需要“消息状态机”
#

一笔委托可能经历:

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

也可能:

新建
 ↓
发送
 ↓
拒绝

或者:

已报
 ↓
撤单
 ↓
撤单成功

所以证券中间件实际上维护的是:

交易消息的生命周期。


二十三、这已经非常像今天的分布式系统
#

虽然1990年代的技术远远没有今天先进,但是它们面对的问题其实非常现代:

网络故障
消息丢失
消息重复
消息乱序
部分失败
状态恢复
幂等
消息重放
一致性
对账

今天微服务架构讨论:

Exactly Once
At Least Once
Idempotency
Replay
Event Ordering

在证券交易领域其实早就有对应的问题。

只是当年的实现方式可能是:

C/C++
+
Unix
+
数据库
+
专用网络
+
自定义通信协议

而不是今天的:

Kafka
REST
gRPC
Microservices
Cloud

二十四、为什么必须有“序列号”
#

假设交易系统发送:

1001
1002
1003
1004
1005

交易对端收到:

1001
1002
1004
1005

那么系统马上知道:

1003丢了。

于是可以进行:

消息恢复

这就是金融交易系统为什么特别重视:

Sequence

的原因。


二十五、为什么“收到消息”和“交易成功”完全不是一回事
#

例如:

网络发送成功

只说明:

消息到达了下一层。

并不代表:

交易所接受了委托。

因此系统必须区分:

通信成功

和:

业务成功

例如:

TCP连接成功
        ≠
交易所接受委托
        ≠
订单成交

这三个状态完全不同。


二十六、这就是为什么交易中间件不能只是“消息转发器”
#

真正的证券交易中间件通常需要关心:

消息格式
消息顺序
消息状态
路由
会话
确认
异常
恢复
重发
去重
成交回报
撤单
对账

所以它实际上已经是一套:

金融交易消息基础设施。


二十七、中央化以后,风险控制也开始中央化
#

假设投资者有:

现金:100,000

已经存在:

未成交委托:30,000

现在又想下:

80,000

中央系统可以计算:

30,000 + 80,000 > 100,000

然后直接拒绝。

这就是:

集中风险控制

的意义。

如果每个营业部都有自己的本地系统,就更难知道:

这个客户在其他营业部有没有其他委托?

而集中系统能够看到统一状态。


二十八、集中交易同时解决了“单一事实来源”
#

假设:

营业部A:
客户现金 = 100,000

但:

营业部B:
客户现金 = 80,000

到底哪个是真的?

集中系统可以建立:

中央账户状态
       ↓
100,000

所有营业部都只是:

中央状态的访问入口

而不是自己维护一套独立事实。

这就是所谓:

Single Source of Truth

虽然当时未必使用这个现代术语,但架构思想已经非常接近。


二十九、证券账户也从“营业部对象”变成“中央数据对象”
#

早期:

客户
 ↓
营业部
 ↓
本地账户

集中交易以后:

客户
 ↓
中央客户资料
 ↓
证券账户
 ↓
中央持仓

于是:

营业部A ─┐
营业部B ─┼──→ 同一个中央账户
营业部C ─┘

成为可能。

这对于跨营业部交易、统一风险控制、统一清算都非常重要。


三十、这时候“营业部”实际上被软件重新定义了
#

1980年代:

营业部
=
柜台
+
柜员
+
股票
+
账簿
+
现金
+
人工登记

1990年代初:

营业部
=
柜台
+
电脑
+
本地数据库
+
交易软件

1990年代末:

营业部
=
客户入口
+
终端
+
网络
+
中央交易系统

到了后来的互联网证券时代:

营业部
=
一个访问渠道

再往后:

营业部
+
PC
+
手机
+
互联网
+
API

共同访问中央交易基础设施。

这是一个非常大的历史变化。


三十一、“席位”也经历了类似的软件化
#

最早:

交易席位
=
交易大厅里的一个物理位置

后来:

交易席位
=
交易资格
+
交易通道
+
交易身份

再后来:

席位
=
一个逻辑交易通道

所以可以看到:

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

这是金融市场从“物理世界”向“软件世界”迁移的另一个典型案例。


三十二、股票本身也经历了同样的变化
#

前面的文章我们讲过:

纸质股票
    ↓
证券账户
    ↓
电子持仓

现在把它和交易席位放在一起:

股票凭证
    ↓
电子账户

物理席位
    ↓
电子交易通道

营业部柜台
    ↓
网络客户端

这三个变化其实是同时发生的。

整个证券市场正在把:

“物理对象”转换成“数据库中的逻辑对象”。


三十三、这也是证券中间件真正兴起的历史原因
#

当证券市场变成:

电子账户
+
电子订单
+
电子成交
+
电子清算
+
电子登记

以后,市场真正流动的东西已经不是纸。

而是:

Message

即:

消息。

一笔交易在IT系统里,本质上就是一连串消息:

委托消息
 ↓
确认消息
 ↓
成交消息
 ↓
清算消息
 ↓
结算消息
 ↓
持仓更新消息

因此:

谁能可靠地处理这些消息,谁就掌握了证券交易系统的核心基础设施。


三十四、这就是KCBP/KCXP历史位置的重要性
#

所以研究:

KCBP
KCXP

不能只研究:

它有哪些菜单?
它有哪些功能?
它运行在哪台服务器?

更应该研究:

它位于哪一层?

它连接谁?

它接收什么消息?

它向哪里路由?

它如何处理交易状态?

它如何适配交易所?

它如何处理故障?

它如何支持集中交易?

这样才能真正理解它们为什么重要。


三十五、1990年代末的证券系统已经形成明显的分层结构
#

可以抽象成:

┌─────────────────────────────┐
│ 投资者 / 营业部应用          │
├─────────────────────────────┤
│ 证券业务系统                 │
│ 客户 / 账户 / 委托 / 风险     │
├─────────────────────────────┤
│ 交易中间件                   │
│ KCBP / KCXP 类基础设施        │
├─────────────────────────────┤
│ 通信 / 协议适配              │
├─────────────────────────────┤
│ 交易网关 / 交易席位          │
├─────────────────────────────┤
│ 交易所                       │
└─────────────────────────────┘

这已经非常接近现代企业IT中的:

Frontend
 ↓
Business Layer
 ↓
Middleware
 ↓
Gateway
 ↓
External System

只是证券行业把这种架构发展得非常早。


三十六、把一笔交易完整走一遍
#

假设投资者想:

买入600000
1000股
10元

数据可能经历:

投资者
 ↓
营业部柜台 / 客户终端
 ↓
中央证券业务系统
 ↓
账户检查
 ↓
风险检查
 ↓
交易中间件
 ↓
市场路由
 ↓
席位路由
 ↓
交易网关
 ↓
交易席位
 ↓
上交所

如果成交:

上交所
 ↓
交易席位
 ↓
交易网关
 ↓
交易中间件
 ↓
中央证券业务系统
 ↓
营业部
 ↓
投资者

这就是完整的交易闭环。


三十七、但成交并不是终点
#

成交以后还有:

成交
 ↓
清算
 ↓
交收
 ↓
登记
 ↓
资金更新
 ↓
证券持仓更新

因此完整链条实际上是:

客户
 ↓
委托
 ↓
交易
 ↓
成交
 ↓
清算
 ↓
结算
 ↓
登记
 ↓
账户更新

这也是为什么:

证券公司交易系统绝不只是一个“下单软件”。


三十八、证券IT真正的核心其实是“状态”
#

投资者看到的是:

买入成功

但后台看到的是:

客户状态
账户状态
资金状态
委托状态
成交状态
证券状态
清算状态
结算状态
登记状态

这些状态必须最终保持一致。

所以证券系统最重要的事情之一就是:

让整个交易生命周期中的状态保持正确。


三十九、这也解释了为什么必须进行“对账”
#

例如证券公司系统认为:

成交笔数 = 10,000

但交易所或清算系统认为:

成交笔数 = 9,999

那么:

有一笔交易出了问题。

于是每天都需要:

交易对账
资金对账
证券对账
清算对账
持仓对账

这就是证券系统里非常重要的:

Reconciliation——对账。


四十、“集中交易”并不是一步完成的
#

历史上不能简单理解成:

1995
↓
全部集中

实际上是一个逐步过程:

营业部本地系统
        ↓
营业部联网
        ↓
中心数据库
        ↓
集中账户
        ↓
集中委托
        ↓
集中交易
        ↓
统一风险
        ↓
统一清算
        ↓
统一灾备

很多证券公司在不同年份、不同地区、不同业务线上采用的架构并不完全一样。

因此研究历史系统时,必须区分:

产品架构

和:

某家证券公司的实际部署架构

两者不能完全等同。


四十一、为什么1997—2001年如此关键?
#

因为这是中国证券IT从:

营业部时代

真正走向:

证券公司网络时代

的阶段。

前一个时代:

营业部是中心

后一个时代:

中央交易系统是中心

前一个时代:

本地数据库

后一个时代:

中央数据

前一个时代:

电话 + 人工

后一个时代:

消息 + 中间件

四十二、可以把这段历史压缩成五次“软件化”
#

整个中国证券IT的发展,可以理解成:

第一次:股票软件化
#

纸质股票
 ↓
证券账户

第二次:客户软件化
#

营业部客户
 ↓
中央客户数据

第三次:交易软件化
#

人工委托
 ↓
电子委托

第四次:席位软件化
#

物理席位
 ↓
电子交易通道

第五次:市场连接软件化
#

电话
 ↓
交易消息
 ↓
中间件
 ↓
交易网关

这五个过程共同形成了现代证券交易系统的基础。


四十三、最终的网络形态
#

到2000年前后,可以用这样一张图理解整个体系:

                         投资者
                            │
                            ▼
                     ┌────────────┐
                     │   营业部   │
                     └─────┬──────┘
                           │
                           ▼
                ┌────────────────────┐
                │   中央证券业务系统  │
                │                    │
                │ 客户 / 账户 / 委托  │
                │ 风险 / 持仓 / 状态  │
                └─────────┬──────────┘
                          │
                          ▼
                ┌────────────────────┐
                │   交易主站 / 中间件 │
                │                    │
                │ 消息 / 路由 / 转换  │
                │ 会话 / 恢复 / 对账  │
                └─────────┬──────────┘
                          │
              ┌───────────┼───────────┐
              ▼           ▼           ▼
          上海交易通道  深圳交易通道   银行通道
              │           │           │
              ▼           ▼           ▼
            上交所       深交所       银行

这就是理解1990年代末证券IT最重要的一张“脑图”。


四十四、“双速网络”开始形成
#

这里还有一个特别有意思的现象。

证券公司的客户侧:

几百个营业部
+
大量投资者
+
大量委托

属于:

多入口、高并发、强聚合。

而交易所侧:

少量交易席位
+
严格交易协议
+
高度规范化交易接口

属于:

少通道、强控制、高可靠。

于是中间件实际上承担的是:

很多
 ↓
中央交易层
 ↓
少数交易通道

即:

Many-to-Few

的网络聚合。

这正是后来所谓证券“双速网络”的重要技术基础。


四十五、KCBP/KCXP为什么会成为一个时代的产物
#

现在再看:

KCBP
KCXP

它们并不是凭空出现的。

它们背后的历史链条是:

1980年代
纸质股票
 ↓
营业部柜台

1990年代初
电脑化营业部
 ↓
本地交易系统

1990年代中期
营业部联网
 ↓
中央数据库

1990年代后期
集中交易
 ↓
交易主站

集中交易
 ↓
交易席位

交易主站
 ↓
交易中间件

交易中间件
 ↓
交易所 / 银行 / 登记 / 清算

因此:

KCBP/KCXP实际上是中国证券市场从“营业部电脑化”进入“证券公司网络化”以后,非常典型的一代基础设施软件。


四十六、这也是为什么金证与恒生后来会出现“中间件双子星”
#

到了这个阶段,一个非常有意思的问题自然出现:

如果金证和恒生面对的是同一个市场:

营业部
 ↓
集中交易
 ↓
交易主站
 ↓
交易席位
 ↓
交易所

那么:

为什么金证形成了KCBP/KCXP这样的体系,而恒生又形成了AS/AR这样的体系?

它们实际上面对的是高度相似的时代问题:

集中交易
+
多营业部
+
多市场
+
交易席位
+
异构接口
+
高可靠消息
+
清算登记

但两家的系统设计、模块边界、消息模型和产品演化路径并不完全一样。

这就进入了下一层历史。


相关文章