
1) 【一句话结论】上交所交易系统通过Kubernetes管理核心交易组件(如交易撮合引擎、订单处理服务)的弹性扩缩容,结合Serverless处理突发任务(如实时行情推送),通过动态资源调度保障交易高峰的响应速度与系统稳定性,具体通过容器化部署、自动扩缩容机制,结合Serverless按需执行,有效应对交易量激增的性能压力。
2) 【原理/概念讲解】面试官,云原生技术中,Kubernetes(K8s)是容器编排平台,它管理容器集群,通过调度、自动扩缩容等机制,根据业务负载自动调整容器数量,就像大型交易大厅的“智能调度系统”——交易量多时增派“撮合员”(容器),交易量少时减少,确保撮合效率。而Serverless(函数即服务)是一种无服务器计算模型,用户只需提交代码(函数),平台按函数调用次数或执行时间收费,无需管理服务器,适合处理突发、无状态的短任务,比如交易系统中的实时行情推送——订单多时多“推送员”(函数实例),订单少时推送员休息,按实际调用量付费。两者结合,K8s负责复杂、有状态服务的稳定运行(如撮合引擎),Serverless负责突发、轻量级的任务处理(如通知),共同提升交易系统的弹性。
3) 【对比与适用场景】
| 技术类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Kubernetes | 容器编排平台,管理容器集群,实现自动扩缩容、服务发现等 | 支持复杂应用,有状态服务,需维护节点,资源利用率高 | 高频交易处理(如撮合引擎)、订单系统等有状态、需稳定运行的业务 | 需考虑调度延迟,复杂应用部署成本 |
| Serverless | 函数即服务,按需执行代码,无需管理服务器 | 无服务器,按调用次数/秒数付费,无状态,快速启动 | 实时行情推送、短信通知、短任务处理等突发流量 | 冷启动延迟,不适合长时运行任务 |
4) 【示例】
假设交易系统中的核心交易撮合引擎(有状态服务),采用Kubernetes部署,Deployment配置如下(伪代码):
apiVersion: apps/v1
kind: Deployment
metadata:
name: matching-engine
spec:
replicas: 5 # 初始副本数,基于历史交易量(如日均QPS 2000,预留20%扩容)
selector:
matchLabels:
app: matching-engine
template:
metadata:
labels:
app: matching-engine
spec:
containers:
- name: matching-container
image: matching-engine:1.0
resources:
requests:
cpu: "200m" # 基于历史CPU使用率(如70%),请求为实际需求的70%
memory: "256Mi"
limits:
cpu: "1" # 限制为请求的5倍,防止资源耗尽
memory: "512Mi"
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
当交易量超过阈值(如CPU使用率超过80%,或QPS超过日均的150%),K8s自动将replicas从5扩容到10,保证撮合能力。例如,某次交易高峰(如新股申购日),CPU利用率从70%升至90%,K8s在1分钟内将副本数从5扩容到10,延迟从2ms降至1.5ms。
对于突发性的实时行情推送(无状态服务),采用Serverless函数(如阿里云函数计算):
触发器:API网关(交易系统调用行情API时触发函数)。
函数代码(伪代码,Python):
def handle_request(event, context):
# 解析事件,获取用户订阅信息
user_subscriptions = event.get('subscriptions', [])
# 处理每个订阅,推送实时行情
for sub in user_subscriptions:
push_realtime_quote(sub)
return {"status": "success"}
当用户订阅量从1万次/秒激增到10万次/秒(如某次市场波动),函数实例数自动从5个扩容到50个,确保数据实时推送。例如,某次市场波动时,订阅量从1万次/秒升至10万次/秒,函数实例数从5扩容到50,延迟从50ms降至15ms,保障用户获取实时信息。
5) 【面试口播版答案】面试官您好,上交所交易系统利用云原生技术应对交易高峰的弹性扩展,核心是通过Kubernetes管理核心交易组件(如撮合引擎、订单处理)的弹性扩缩容,结合Serverless处理突发任务(如实时行情推送)。具体来说,对于高频交易撮合,我们采用Kubernetes部署,当交易量激增导致CPU利用率超过80%时,系统自动将副本数从5扩容到10,确保撮合延迟从2ms降至1.5ms;对于突发性的实时行情推送,采用Serverless函数,当用户订阅量从1万次/秒激增到10万次/秒时,函数实例数自动增加,从5个扩容到50个,延迟从50ms降至15ms。两者结合,有效应对交易高峰的性能压力,保障系统稳定运行。
6) 【追问清单】
7) 【常见坑/雷区】