🚗 轻舟出行 · 聚合打车平台

乘客省 10% · 司机多赚近 20% · 平台只收 1% 佣金

05 · 技术架构设计

1. 总体架构

┌─────────────────────────────────────────────────────────────────────┐
│                          客户端层                                    │
│   乘客 App / 小程序    司机 App / 小程序    运力方开放平台   管理端     │
└──────────────────────────────┬──────────────────────────────────────┘
                               │ HTTPS / WebSocket / QUIC
┌──────────────────────────────▼──────────────────────────────────────┐
│                       接入层:API 网关                              │
│   鉴权(JWT) · 限流(令牌桶) · 灰度路由 · 参数校验 · 风控前置 · 日志     │
└──────────────────────────────┬──────────────────────────────────────┘
┌──────────────────────────────▼──────────────────────────────────────┐
│                         业务服务层(微服务)                          │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐       │
│  │ 用户服务 │ │ 运力服务 │ │ 订单服务 │ │ 调度服务 │ │ 计价服务 │       │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘       │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐       │
│  │ 结算清分 │ │ 支付服务 │ │ LBS服务 │ │ 消息服务 │ │ 营销服务 │       │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘       │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────────────┐       │
│  │ 风控服务 │ │ 客服工单 │ │ 数据服务 │ │   开放平台(qz-open)   │       │
│  └─────────┘ └─────────┘ └─────────┘ └─────────────────────┘       │
│  ┌─────────┐ ┌─────────┐ ┌───────────────────────────────┐        │
│  │智能体调度│ │ 人工核查 │ │       决策日志(可审计/可回放)     │        │
│  └─────────┘ └─────────┘ └───────────────────────────────┘        │
└──────┬───────────────┬───────────────┬───────────────┬──────────────┘
       │               │               │               │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────────────┐
│  数据层      │ │  缓存/消息   │ │  搜索/日志   │ │  外部依赖            │
│ MySQL(分库) │ │ Redis       │ │ ES          │ │ 高德/腾讯地图        │
│ 轨迹库      │ │ Kafka       │ │ OSS         │ │ 微信/支付宝支付       │
│ (Mongo/TSDB)│ │ MQ(削峰)    │ │ ClickHouse  │ │ 短信/推送/OCR        │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────────────┘

2. 技术选型

层次 选型 理由
客户端 小程序(微信/支付宝)+ Flutter App 一套代码双端,MVP 快
后端 Go(核心链路)/ Java Spring Cloud(业务中台) Go 高并发低延迟,Java 生态成熟
数据库 MySQL 8.0(分库分表)+ TiDB(可选) 订单/用户强一致
缓存 Redis Cluster 热 key、分布式锁、会话
消息 Kafka + RocketMQ 事件驱动、订单状态解耦、削峰
轨迹 MongoDB / TDengine 高吞吐时序写入
搜索/日志 Elasticsearch + Filebeat 订单检索、日志检索
分析 ClickHouse 亿级订单聚合报表
部署 K8s(多可用区)+ Service Mesh(Istio) 弹性伸缩、灰度、可观测
地图 高德/腾讯企业版 API 定位、路径、ETA、围栏;不自建
支付 微信支付/支付宝(聚合收单 + 清分) 合规清分,不碰资金池
推送/IM 极光/个推 + 自建轻量 IM 订单通知、乘客司机沟通

3. 核心服务职责

服务 职责
用户服务 乘客/司机账号、实名、紧急联系人、隐私授权(PIPL)
运力服务 运力方档案、司机车辆档案、双证状态、服务分
订单服务 订单状态机、生命周期、取消/改单、费用快照
调度服务 订单广播、报价聚合、比价排序、指派/抢单、热力图
计价服务 市场价基准 + 让利 10% 计算(实付)+ 1% 佣金计算(实付口径)+ 比价数据 + 优惠券试算(详见 14 文档)
结算清分服务 T+1 对账、清分指令、差异处理、发票
支付服务 收单、免密、退款、退款冲正、企业月结
LBS 服务 定位纠偏、POI 吸附、围栏、ETA、路径优化
消息服务 订单事件通知、司机接单推送、行程 IM
营销服务 券、会员、活动、邀请裂变、A/B
风控服务 反作弊规则引擎、设备指纹、黑名单、处置
智能体调度服务 AI 感知/决策/谈判/解释多智能体,派单方案生成与置信度分级(HITL,详见 13 文档)
人工核查服务 核查队列、核查工作台、双人核查、改派、人工修正反馈回流
决策日志 全量决策留痕(输入快照/候选/决策/置信度/结果/人工修正),审计与训练用
客服工单 工单、先行赔付、追偿
开放平台 运力方 API 网关、签名验签、沙箱、对账单
数据服务 埋点、实时/离线数仓、BI

4. 核心链路设计

4.1 叫车链路(聚合比价)

乘客下单
 └─ 订单服务创建订单(状态=待分配) → 发事件到 Kafka
    └─ 调度服务消费事件
       ├─ 按城市/围栏筛选运力方集合
       ├─ 并行广播(带超时5s) → 运力方 qz-open 接口
       │    └─ 各家报价(价格/接驾时长/可用车)
       ├─ 报价聚合 → 比价排序(价格0.4+时长0.3+服务0.2+品牌0.1)
       ├─ 缓存报价快照(Redis, TTL 30s) → 推送乘客端展示
       └─ 乘客选定 → 派单指令 → 运力方接单回调
            └─ 订单状态: 已接单 → 接驾中 → 上车 → 行程中 → 完成

4.2 支付与清分链路

行程完成 → 订单服务计算费用快照(车费[司机到手] + 1%佣金)
 └─ 发支付请求(微信/支付宝 预下单, 金额=乘客实付)
 └─ 支付成功回调 → 清分服务
     ├─ 指令1: 车费(99%) → 运力方结算户(由收单机构清分)
     ├─ 指令2: 佣金(1%) → 平台结算户
     └─ 写入清分明细 → T+1 对账任务

合规要点:平台不沉淀资金,清分由持牌收单机构执行("四方分离":乘客—支付机构—运力方/平台),避免支付牌照风险。

4.3 消息推送链路

订单状态变更 → 订单服务发领域事件(Kafka)
  → 消息服务组装模板 → 多渠道触达(推送/短信/IM)
  → 送达/已读回执 → 监控到达率

5. 调度与比价引擎(核心算法)

5.1 候选运力筛选

5.2 报价聚合与排序

score = w1 * price_norm + w2 * eta_norm + w3 * service_norm + w4 * brand_norm
价格分: 按"乘客预估实付"归一化(最低价=1.0)
ETA 分: 按"预估接驾时长"归一化(最短=1.0)
服务分: 运力方/司机服务质量分归一化
品牌分: 合作深度/补贴贡献(平台可控)

5.3 指派单(出租车/自营运力)

目标函数: min(接驾时间×α + 空驶里程×β − 顺路度×γ − 服务分加成)
约束: 司机在线、接单率>阈值、无拒载记录、服务分>70
实现: 时空索引(GeoHash+时间桶) 近邻搜索 → Top-K 评分 → 单司机推送(10s) → 失败转抢单池

5.4 ETA 预估

5.5 AI 智能体派单与人工核查(HITL)

6. 数据模型(核心表)

user                    用户表: id, phone, realname_status, member_level, referrer_id, created_at
driver                  司机表: id, user_id, carrier_id, name, license_no, service_score, status
vehicle                 车辆表: id, carrier_id, plate_no, type(经济/舒适/商务), transport_cert_status
carrier                 运力方表: id, name, license_no, status, fee_tier, cities(json), service_grade
order                   订单表: id, order_no, rider_id, carrier_id, driver_id, vehicle_id,
                         start_geo, end_geo, start_addr, end_addr, car_type,
                         status(0..9状态机), price_type, price_snapshot(json),
                         info_fee, discount_amount, paid_amount, timestamps
order_quote             报价表: id, order_id, carrier_id, price, eta_min, quote_at, is_chosen
gps_track               轨迹表: id, order_id, driver_id, lat, lng, speed, ts(时序, 分表/TSDB)
settlement              清分表: id, order_id, rider_id, carrier_id, amount, info_fee,
                         split_status, pay_flow_no, settle_date
pay_flow                支付流水: id, order_id, channel, amount, status, refund_no
coupon                  券表: id, user_id, type, amount, status, expire_at, use_order_id
membership              会员表: id, user_id, plan, expire_at, auto_renew
service_feedback        评价表: id, order_id, from_role, score, tags, content
blacklist               黑名单: id, target_type(user/driver/device), reason, level
decision_log            决策日志: id, order_id, model_version, scenario, input_snapshot(json,脱敏),
                         candidates(json), decision, confidence, risk_level, grade(A/B/C/D),
                         executed_by, corrected_by(json), result, ts
review_task             核查任务: id, order_id, grade, risk_score, amount, reviewer_id,
                         action(通过/修改/改派/升级/转客服), review_result, reviewed_at, sla_deadline
audit_log               审计日志: id, operator_id, module, action, before, after, ip, ts

7. 高并发与容灾

场景 方案
早高峰下单洪峰 Kafka 削峰 + 订单服务水平扩容 + 限流(网关令牌桶按用户/设备/城市分级)
热 key(热门商圈) Redis 热点探测 + 本地缓存(Caffeine)+ 读写分离
报价广播超时 异步化 + 超时熔断(Resilience4j),降级为单运力方直连
支付回调丢失 主动轮询对账(每 5 分钟拉取支付机构账单)
数据库故障 主从 + 跨可用区灾备;读库降级为缓存
全链路故障 核心链路(下单/支付)与辅助链路(营销/报表)物理隔离

8. 安全与隐私(技术侧)

9. 监控与运维