跳到正文
Kale的数字花园
目录 文章
/12 分钟/7 阅读/0 评论

ESync 平台对接项目总结归纳

ESync(creekson esync)是一套**跨境电商 ERP 平台对接微服务集群**,负责将全球 15+ 主流电商/物流平台的订单、商品、库存、财务等数据,同步至 ERP 内部系统。 所有服务的定时任务都不是通过 cron 触发的,

一、项目概览

1.1 项目定位

ESync(creekson esync)是一套跨境电商 ERP 平台对接微服务集群,负责将全球 15+ 主流电商/物流平台的订单、商品、库存、财务等数据,同步至 ERP 内部系统。

  • 代码根目录: D:\workspace\esync
  • 所属业务域: ERP 核心数据入口(平台 → esync → creeks-fulfillment / creeks-inventory / creeks-order-center / creeks-finance 等)

1.2 服务全景

# 服务名 对接平台 模块结构 特殊说明
1 esync-amazon Amazon(SP-API + MWS) 3 模块 (client + common + server) 最复杂:3 种数据源、100+ 定时任务、6 线程池
2 esync-ebay eBay(SOAP + REST + Webhook) 4 模块 (base + common + service + service-client) 独立 Python Token 模块、SMTP 告警
3 esync-wish Wish(v1 + v3 双管线) 3 模块 (base + core + service) 双版本 API 并行迁移模式
4 esync-shopee Shopee 虾皮 标准 client + server —
5 esync-shopify Shopify(client + server) + Go 网关 client + server codo-shopify-gateway 为独立 Go 反代
6 esync-shein SHEIN client + server 48 小时 API 窗口、PurchaseOrder 流程
7 esync-aliexpress AliExpress 速卖通 client + server 使用 codo-taobao-sdk
8 esync-tiktokshop TikTok Shop 独立 client + server 仓库 支持 i18n、FBT 库存
9 esync-temu Temu 单模块(src 在根目录)+ 独立 client Spring Cloud Sleuth 分布式追踪
10 esync-walmart Walmart 沃尔玛 多模块 —
11 esync-mercadolidre MercadoLibre 美客多 多模块 拉美市场
12 esync-joom Joom core + server —
13 esync-joybuy JoyBuy 多模块 —
14 esync-cdiscount Cdiscount 多模块 法国平台
15 esync-winit 万邑通(物流) 单模块 MyBatis + MySQL(非 MongoDB)
16 codo-shopify-gateway Shopify 网关代理 单文件 Go(182 行) 基于 X-Shop header 反代

1.3 统一技术栈

技术 选型 说明
语言 Java 8(JDK 8) Go 仅用于 Shopify 网关
框架 Spring Boot(codo-java-bom:1.2.2/1.2.4) 统一 BOM 管理
数据库 MongoDB(主) 每服务独立库,如 esync_amazon、esync_temu
缓存/锁 Redis + Redisson 3.13.3 分布式锁 + 限流
消息队列 Apache Kafka(spring-kafka) 纯生产者模式
HTTP 客户端 OkHttp + Feign 跨服务调用
文档 Springfox Swagger 2 + swagger-bootstrap-ui /swagger-ui.html
构建 Maven + fmt-maven-plugin 代码格式化检查
容器 Docker(CentOS 7 + Oracle JDK 8) 统一基础镜像
CI Jenkins(ci profile) 构建跳过测试和格式化

二、架构设计

2.1 整体数据流

外部平台 API (SP-API / SOAP / REST)
       │
       │ 定时/手动触发 (HTTP Scheduler)
       ▼
  ┌─────────────────┐
  │  Fetch Task     │ ← Redisson 分布式锁(防止并发执行)
  │  (分页拉取)      │ ← 时间窗口切分(防止超时)
  │  @Async @Retry  │ ← 自动重试 + 补偿任务
  └────────┬────────┘
           │
           ▼
  ┌─────────────────┐
  │  Converter      │  平台模型 → ERP 标准模型
  │  (数据转换)      │  AmazonOrderConverter / PlatformOrderViewConverter
  └────────┬────────┘
           │
           ▼
  ┌─────────────────┐
  │  MongoDB        │  持久化 + sended 标记(幂等控制)
  │  (持久化)        │  支持重试查询(sended=false)
  └────────┬────────┘
           │
           ▼
  ┌─────────────────┐
  │  MessageProducer│  Kafka 推送到下游 ERP 服务
  │  (Kafka 推送)    │  平台专属 topic + order_center_collect(订单池)
  └────────┬────────┘
           │
           ▼
  下游 ERP 服务:
  ├── creeks-order-center(订单池 / ES 查询)
  ├── creeks-fulfillment(订单履约 / 业务处理)
  ├── creeks-inventory(库存管理)
  ├── creeks-sales(商品管理)
  ├── creeks-finance(财务结算)
  └── creekson-mall(商城)

2.2 模块结构(三种模式)

模式 A: 同仓库多模块(经典)           模式 B: Client 独立仓库           模式 C: 纯单模块
esync-xxx/                            esync-xxx/                       esync-xxx/
├── client/                           ├── pom.xml                      ├── src/
│   └── pom.xml                       ├── server/                      ├── pom.xml
├── server/                           └── pom.xml                      └── Dockerfile
│   └── pom.xml                       esync-xxx-client/
└── pom.xml                           └── pom.xml

适用: shopee/aliexpress/joom           适用: temu/tiktokshop             适用: temu/winit/temu-client

2.3 分层架构(标准模板)

controller/      ← 薄层,仅接收请求并转发到 service/repository
   │
service/         ← 核心业务逻辑(拉取、转换、重试)
   │
repository/      ← MongoDB 操作(MongoTemplate 直接操作,非 Spring Data)
   │
mq/              ← Kafka 消息发送(纯生产者)
   │
job/task/        ← 实际同步任务实现(分页拉取 + 持久化 + 推送)
   │
scheduler/       ← HTTP 触发器(非 @Scheduled cron,由外部编排调用)
   │
converter/       ← 平台模型 ↔ ERP 模型转换
   │
config/          ← Kafka / Redis / Feign / Swagger / 异常处理
   │
aop/             ← 日志切面 (LoggingAspect)
   │
enums/           ← 平台专属枚举常量

三、核心实现思路

3.1 同步调度:HTTP 触发器模式

所有服务的定时任务都不是通过 @Scheduled cron 触发的,而是暴露为 REST 端点,由外部调度器(如 XXL-JOB、K8s CronJob)调用:

@RestController
@RequestMapping("/remote/sync/order")
public class SyncOrderScheduler {
    @GetMapping("/start")
    public void startSyncOrders() {
        // 触发分布式锁 → 异步执行任务
    }
}

优势: 支持外部编排、动态调度、运行时开关控制(如 ebay 的 esync-ebay-task-switch 配置)。

3.2 分布式锁(防并发执行)

RLock lock = lockService.getLock("temu:order:sync");
if (lock.isLocked()) return;
lockService.lockAndExecute("temu:order:sync", 0, -1, TimeUnit.SECONDS, this::executeSync);
  • Key 命名: {platform}:{entity}:sync
  • 实现: Redisson 分布式锁
  • 目的: 多实例部署时保证同一任务不被重复执行

3.3 时间窗口切分(防 API 超时)

各平台 API 对时间跨度有不同限制,需切分为小窗口:

平台 窗口大小 原因
Temu 按月 数据量大
TikTok Shop 10 天 API 限制
SHEIN 48 小时 平台硬性限制
eBay (订单) 30 分钟 SOAP API 响应慢
eBay (商品) 12 小时 GetSellerList 分页
Wish v3 1 小时 防超时
Amazon 按报告类型 SP-API 报告生命周期

3.4 双目标 Kafka 推送

订单数据同时发送到两个 Kafka topic:

// 1. 平台专属 topic(供履约服务消费)
kafkaHelper.send(TOPIC_ORDER, orderJson);

// 2. 订单池统一 topic(供订单中心消费)
kafkaHelper.send(ORDER_CENTER_COLLECT_TOPIC, platformOrderViewJson);

下游消费关系:

esync-{platform} → {platform}_order (topic) → creeks-fulfillment
esync-{platform} → order_center_collect (topic) → creeks-order-center
esync-{platform} → {platform}_item (topic) → creeks-inventory
esync-{platform} → {platform}_product (topic) → creeks-sales
esync-{platform} → {platform}_finance (topic) → creeks-finance

3.5 幂等持久化

MongoDB 中使用 sended 字段标记消息是否已发送:

// 持久化
document.put("sended", false);
mongoTemplate.save(document);

// 重试逻辑:查询未发送记录,重新发送
Query query = Query.query(Criteria.where("sended").is(false));
List<Document> unsent = mongoTemplate.find(query, Document.class);
for (Document doc : unsent) {
    kafkaHelper.send(TOPIC, toJson(doc));
    mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(doc.getId())),
        Update.update("sended", true), Document.class);
}

3.6 重试与补偿机制

层级 机制 实现
API 调用层 @Retryable(maxAttempts=3, backoff=@Backoff(delay=2000L)) Spring Retry
消息发送层 查询 sended=false 记录重发 MongoDB 游标分页
数据补偿层 补偿任务重新扫描最近 N 天数据 独立补偿 Scheduler
手动重试层 /remote/.../retry HTTP 端点 MessageFailController
DLT 兜底层 Kafka Dead Letter Topic Amazon 的 finance/inventory 等

3.7 限流策略

服务 限流方式 详情
Amazon (MWS) Token Bucket 内存限流 CallThrottling 信号量 + CallCountRecovery 后台线程
Amazon (Captain) Redis 分布式限流 RedisCallThrottling 500次/min
Amazon (SellFox) Redisson 原子计数器 @RateLimit 注解
eBay Thread.sleep API 调用间隔 1 秒
Wish v3 Thread.sleep(2000) 商品详情请求间隔
通用 单线程线程池 esyncCaptainExecutor: core=1, max=1

3.8 多数据源适配(Amazon 特有)

Amazon 服务支持 5 种数据源,每种有独立的同步链路:

1. SP-API 直连(官方 Selling Partner API)
2. MWS 直连(旧版 Merchant Web Service)
3. Creekshub(内部数据中台代理)
4. SellFox(第三方数据聚合器)
5. Captain(第三方数据聚合器)

采用模板方法模式:CreekshubBaseSyncTask<T> 为抽象基类,各子类实现 doSync() / doQuery()。

3.9 报告生命周期模式(Amazon 大数据量)

对于商品/库存等大数据量,不走 list API,而是走 Amazon 报告生成流程:

1. requestReport() → 提交报告生成请求
2. pollReportStatus() → 轮询状态(高频/低频两种策略)
3. downloadReport() → 流式下载(逐行回调,内存 O(1))
4. parseRow() → 按 OrderId 分组构建对象
5. batchPersist() → 批量写入 MongoDB
6. sendKafka() → 推送下游

3.10 Token 管理与认证

平台 认证方式 Token 管理
Amazon SP-API LWA (Login with Amazon) 网关代理签名
eBay OAuth2 OAuth2 Authorization Code Python 脚本批量导入 + QQ SMTP 过期告警
Wish OAuth2 Refresh Token 检测错误中的 "token" 关键词自动刷新
TikTok Shop Access Token Mall 服务统一管理
Temu API Key Mall 服务获取
SHEIN App Key + Sign 签名工具类

四、各服务技术亮点

4.1 esync-amazon(最复杂)

  • 100+ 定时任务,按数据源和数据类型精细拆分
  • 6 个专用线程池(CPU 密集型、报告轮询、限流单线程等)
  • 三种授权源并行同步(ECPP / Creekshub / SellFox / Captain)
  • 策略模式处理 13 种财务事件(发货、退款、调整、Chargeback、广告费等)
  • 流式 CSV 解析(避免全量加载到内存)
  • SyncTimeMonitorTask(每日巡检 + 飞书告警,数据质量哨兵)
  • V1/V2 双版本订单共存(支持灰度迁移)

4.2 esync-ebay

  • SOAP + REST 双 SDK(ebaycalls v1225 + codo-ebay-sdk-rest)
  • Webhook 推送管线(HTTP 接收 XML → Kafka → JAXB 并行解析)
  • 反射清除 JAXB any 字段(setAnyToZero() 解决 MongoDB 循环引用)
  • Python Token 种子脚本(AES-256-ECB 加密 + MongoDB 直写)
  • Spring Mail SMTP 告警(Token 过期邮件通知)
  • 硬编码 XML 修复(生产环境问题快速修复 fixOrder)
  • 运行时开关(esync-ebay-task-switch 配置)

4.3 esync-wish

  • v1 → v3 双管线并行迁移(渐进式升级,互不影响)
  • 滑动窗口分页(左游标移动到上一页最大 updated_at)
  • OAuth2 Token 自动刷新(异常检测 + 实时刷新)
  • 独立 API Client 层(esync-wish-core 模块可复用)

4.4 esync-shein

  • 48 小时 API 窗口(平台硬性限制)
  • PurchaseOrder 流程(采购订单 + 交货订单 + 自动接单)
  • Client 模块自包含 AutoConfiguration(spring.factories 自动装配)

4.5 esync-tiktokshop

  • FBT(Fulfilled by TikTok)库存同步
  • i18n 国际化(esync-tiktokshop_messages)
  • 补偿任务(最近 2 天数据补偿重拉)

4.6 esync-temu

  • Spring Cloud Sleuth 分布式追踪
  • 全托管 / 半托管双模式(SKU 标签差异化处理)
  • Testcontainers 集成测试(MySQL 容器)

4.7 codo-shopify-gateway(Go)

  • 182 行纯反代(无业务逻辑)
  • 基于 X-Shop header 路由到 *.myshopify.com
  • Caddy + nerdctl 部署(轻量、安全隔离)

4.8 esync-winit(物流)

  • MyBatis + MySQL(唯一不用 MongoDB 的 esync 服务)
  • Redisson 分布式锁(物流操作的并发控制)
  • 独立 SDK 模块(creeks-winit-sdk)

五、可复用模式总结

以下模式已在多个服务中验证,可作为标准化模板推广到新平台对接:

模式名称 核心思路 适用场景 最佳实践来源
HTTP Scheduler REST 端点触发 + 分布式锁 所有定时同步任务 Amazon / Temu
Time Window Chunking 大时间窗口切分为小片段 平台 API 有跨度限制 Wish v3 DateTimeRangesCreator
Distributed Lock Redisson 防并发 多实例部署 所有服务统一使用
Dual Topic Push 平台 topic + 订单池 topic 订单/商品同步 Amazon / eBay
Idempotent sended MongoDB sended 标记 + 游标重试 消息幂等 Temu / TikTokShop
Token Auto-Refresh 错误检测 + 自动刷新 OAuth2 平台 Wish v3
Template Method Sync 抽象基类 + 子类实现 多数据源同步 Amazon Creekshub
Strategy Pattern Events 事件处理器分发 财务/结算事件 Amazon Finance
Streaming Parse 逐行回调解析 大文件/报告 Amazon SP-API
Compensation Task 独立补偿任务重扫最近数据 数据兜底 TikTokShop
Kill Switch 配置开关控制任务执行 紧急停止/维护 eBay
Monitor + Alert 巡检任务 + 飞书告警 数据质量保障 Amazon
Webhook → Kafka → Parse 异步解耦平台推送 Webhook 接收 eBay Notification

六、可拓展点

6.1 统一同步框架

当前每个服务都实现了相似的"拉取 → 转换 → 持久化 → 推送"模式,可以抽象为统一的同步框架:

public abstract class PlatformSyncTemplate<P, D> {
    // 1. 获取授权店铺列表
    abstract List<Store> getStores();

    // 2. 拉取数据(分页、时间窗口由框架统一处理)
    abstract List<D> fetchData(Store store, DateRange range);

    // 3. 转换为 ERP 模型
    abstract P convert(D data);

    // 4. 持久化到 MongoDB
    void persist(P model) { ... }

    // 5. 推送到 Kafka
    void push(P model, String topic) { ... }
}

收益: 新平台对接只需实现 3 个抽象方法,共享时间窗口、分页、重试、锁等通用逻辑。

6.2 统一限流器

当前各服务限流方式分散(内存 Token Bucket、Redis 计数器、Thread.sleep),可统一为注解式限流:

@RateLimit(key = "shopify:orders", limit = 100, duration = 60, unit = TimeUnit.SECONDS)
public List<Order> fetchOrders(Store store) { ... }

6.3 Webhook 通用管线

eBay 的 Webhook → Kafka → 并行解析模式可推广到所有支持 Webhook 的平台(Shopify、TikTokShop、SHEIN 等),替代轮询。

6.4 统一监控大盘

当前只有 Amazon 有 SyncTimeMonitorTask,可扩展为全平台统一监控:

  • 各店铺各数据类型最后同步时间
  • API 调用成功率 / 失败率
  • Kafka 消息堆积情况
  • 飞书/钉钉统一告警

6.5 配置中心化

各服务的 application.yml 中有大量重复配置(Redisson、KafkaTopic、Feign 超时等),可统一收归到配置中心(Nacos / Apollo)。

6.6 新平台对接 SDK

为每个新平台提供一个脚手架工程:

esync-{platform}/
├── client/
│   ├── pom.xml
│   └── src/main/java/.../client/
│       ├── model/          # DTO / 枚举
│       ├── remote/         # Feign Client(平台 API)
│       └── config/         # AutoConfiguration
├── server/
│   ├── pom.xml
│   └── src/main/java/.../server/
│       ├── config/         # 基础设施配置(Redisson / Kafka / MongoDB)
│       ├── task/           # 同步任务(继承基类)
│       ├── converter/      # 平台模型 → ERP 模型
│       ├── mq/             # Kafka 发送
│       ├── repository/     # MongoDB 仓储
│       └── scheduler/      # HTTP 触发器
├── pom.xml
└── Dockerfile

6.7 事件驱动架构升级

当前为纯轮询模式,可逐步引入平台 Webhook + 事件总线:

平台 Webhook → API Gateway → Kafka Events → esync Consumer → ERP

减少 API 调用频率,提升数据实时性。


七、优化点

7.1 高优先级

优化项 问题 建议方案 影响范围
FastJSON 安全漏洞 使用 FastJSON 1.2.70(已知 RCE 漏洞) 升级到 1.2.83+ 或迁移到 Jackson/Gson 全服务
未使用的依赖 Wish 的 POI/iText/Dom4j/Druid 仅声明未使用 清理无用依赖,减小包体积 esync-wish
硬编码敏感信息 MongoDB URI、Redis 密码写在 yml 中 全部走环境变量或 K8s Secret 全服务
README 空文件 8 个服务的 README 为空 统一填充标准化 README 模板 shein/walmart/shopify/temu/mercadolidre/cdiscount/joybuy
无 API 文档更新 Swagger 版本停留在 2.x 迁移到 SpringDoc OpenAPI 3.x 全服务

7.2 中优先级

优化项 问题 建议方案 影响范围
重复的 Config 类 RedissonAutoConfiguration 等在各服务中 byte-for-byte 重复 提取到 creeks-common-services 公共模块 全服务
Java 8 版本 JDK 8 已停止公共更新 规划迁移到 JDK 17/21 LTS 全服务
缺少单元测试 测试覆盖率低(除 Amazon/Temu 外) 引入单元测试模板,目标 80%+ 全服务
手动重试依赖人工 MessageFailController 需人工触发 接入自动重试队列(Kafka 延迟消息) 全服务
无集成测试 除 Temu 外均无 Testcontainers 集成测试 统一引入 Testcontainers MySQL/MongoDB 全服务
日志不规范 缺少结构化日志(traceId / spanId) 统一集成 Sleuth + ELK 全服务

7.3 低优先级

优化项 问题 建议方案 影响范围
Lombok 版本 Lombok 1.18.8 较旧 升级到 1.18.30+ 全服务
Redis DB 混用 全部使用 DB 14 按服务分配独立 DB 索引 全服务
MongoDB 索引缺失 部分集合缺少索引 启动时自动创建索引(已部分实现) 全服务
Go 网关单文件 Shopify 网关 182 行单文件 适当拆分(配置、日志、健康检查) codo-shopify-gateway
Python Token 脚本 eBay Token 导入用 Python 脚本 整合到 Java 服务 API esync-ebay

7.4 架构演进方向

当前状态(轮询主导)                    目标状态(事件驱动)

┌──────────┐    HTTP Scheduler          ┌──────────┐    Webhook
│  平台 API │ ◄──── 定时拉取             │  平台 API │ ────► API Gateway
└────┬─────┘                             └────┬─────┘
     │                                        │
     ▼                                        ▼
┌──────────┐                             ┌──────────┐
│  esync   │                             │  Kafka   │
│  服务    │                             │  Events  │
└────┬─────┘                             └────┬─────┘
     │                                        │
     ▼                                        ▼
┌──────────┐                             ┌──────────┐
│  Kafka   │                             │  esync   │
│  推送    │                             │  Consumer│
└────┬─────┘                             └────┬─────┘
     │                                        │
     ▼                                        ▼
┌──────────┐                             ┌──────────┐
│  ERP     │                             │  ERP     │
│  服务    │                             │  服务    │
└──────────┘                             └──────────┘

延迟: 分钟~小时级                         延迟: 秒级
API 调用: 高频                            API 调用: 低频(仅补偿/兜底)

八、与 ERP 核心系统的集成关系

                        ┌─────────────────────────────────────┐
                        │         外部电商平台 (15+)           │
                        │  Amazon / eBay / Wish / Shopee /... │
                        └──────────────┬──────────────────────┘
                                       │
                    ┌──────────────────┼──────────────────┐
                    ▼                  ▼                  ▼
             ┌──────────┐      ┌──────────┐      ┌──────────┐
             │ esync    │      │ esync    │      │ esync    │
             │ -amazon  │      │ -ebay    │      │ -temu    │
             │ -wish    │      │ -shein   │      │ -tiktok  │
             │ -shopee  │      │ -walmart │      │ ...      │
             └────┬─────┘      └────┬─────┘      └────┬─────┘
                  │                 │                 │
                  └────────────────┼─────────────────┘
                                   │ Kafka
                    ┌──────────────┼──────────────┐
                    ▼              ▼              ▼
              ┌───────────┐ ┌───────────┐ ┌───────────┐
              │ creeks-   │ │ creeks-   │ │ creeks-   │
              │ order-    │ │ fulfill-  │ │ inventory │
              │ center    │ │ ment      │ │           │
              │ (订单池)  │ │ (订单履约) │ │ (库存管理) │
              └───────────┘ └───────────┘ └───────────┘
                    │              │              │
                    ▼              ▼              ▼
              ┌───────────┐ ┌───────────┐ ┌───────────┐
              │ creeks-   │ │ creeks-   │ │ creeks-   │
              │ sales     │ │ finance   │ │ logistics │
              │ (商品管理) │ │ (财务结算) │ │ (物流管理) │
              └───────────┘ └───────────┘ └───────────┘

关键集成点

集成方向 方式 协议
esync → ERP Kafka 生产者 JSON 消息
ERP → esync Feign Client HTTP REST
esync → 平台 API OkHttp / 平台 SDK HTTPS
平台 → esync Webhook(部分平台) HTTPS POST

九、关键数据流详解

9.1 订单同步流(以 Temu 为例)

1. 外部调度调用 → GET /remote/temu/unCn/syncOrder
2. TemuSyncUnCnScheduler 获取分布式锁 temu:order:sync
3. SyncOrderTaskJob 执行:
   a. 从 Mall 服务获取 Temu 授权店铺列表
   b. 按月切分时间窗口(含 5 分钟重叠区防漏数据)
   c. 对每个店铺 + 时间窗口:
      - 调用 Temu API 分页拉取订单列表
      - 对每批订单调用详情 API 获取完整信息
      - 解密收件人地址(平台加密字段)
      - 构建 ERP 订单模型(PlatformOrderView)
      - 存入 MongoDB(sended=false)
      - 发送 Kafka → temu_order_fulfillment(仅卖家发货订单,2025-05-12 后)
      - 发送 Kafka → order_center_collect(所有订单)
      - 更新 MongoDB(sended=true)
4. 释放分布式锁

9.2 商品同步流(以 TikTok Shop 为例)

1. 外部调度调用 → GET /remote/tiktokshop/job/product/start
2. TikTokShopJobScheduler 获取分布式锁 tiktokshop:product:sync
3. SyncProductTask 执行:
   a. 按 10 天窗口分页拉取商品摘要列表
   b. 对每个商品调用详情 API
   c. 构建 ERP 商品模型(GoodsRegisterBo)
   d. 存入 MongoDB
   e. 发送 Kafka → tiktokshop_product
   f. 如果是 FBT 商品,额外发送 Kafka → tiktokshop_stock_register

9.3 财务同步流(以 Amazon 为例)

1. 外部调度调用 → GET /remote/sync/finance/event/sp/startSyncFinanceEvent
2. FetchSpFinanceEventTask 执行:
   a. 遍历所有 Amazon 店铺
   b. 调用 SP-API Settlement Report API
   c. 下载报告 → 流式解析(逐行回调)
   d. 策略模式分发 13 种事件处理器:
      - ShipmentEventHandler(发货)
      - RefundEventHandler(退款)
      - AdjustmentEventHandler(调整)
      - ChargebackEventHandler(拒付)
      - DebtRecoveryEventHandler(债务恢复)
      - RetrochargeEventHandler(追溯收费)
      - ServiceFeeEventHandler(服务费)
      - RemovalShipmentEventHandler(移除发货)
      - RemovalShipmentAdjustmentEventHandler(移除发货调整)
      - ProductAdsPaymentEventHandler(广告费)
      - GuaranteeClaimEventHandler(保障索赔)
      - SellerDealPaymentEventHandler(卖家交易费)
      - CouponPaymentEventHandler(优惠券)
   e. 每种事件发送到独立 Kafka topic
   f. 配置 DLT 兜底(finance_group.DLT)

十、项目总结

10.1 项目规模

  • 18 个子项目(16 个平台对接 + 1 个 Go 网关 + 1 个物流对接)
  • 46 个 Maven 模块(client / server / common / base 等)
  • 17 个 Dockerfile
  • 26 个 deploy 脚本
  • 技术栈: Java 8 + Spring Boot + MongoDB + Kafka + Redis + Feign
  • 对接平台: Amazon / eBay / Wish / Shopee / Shopify / SHEIN / AliExpress / TikTok Shop / Temu / Walmart / MercadoLibre / Joom / JoyBuy / Cdiscount / Winit

10.2 核心设计理念

  1. Pull → Process → Push:统一的拉取-处理-推送流水线
  2. 事件驱动 + 轮询兜底:Kafka 解耦上下游,轮询补偿保障数据完整性
  3. 平台差异化适配:每个服务针对平台 API 特性定制(时间窗口、认证、限流)
  4. 幂等保障:MongoDB sended 标记 + 分布式锁 + 游标重试
  5. 外部编排:HTTP Scheduler 替代 cron,支持动态调度

10.3 项目优势

  • 架构统一,新平台对接有章可循
  • 模块边界清晰,client/server 职责分明
  • 丰富的重试 / 补偿 / 限流机制保障数据不丢不漏
  • MongoDB schema-less 特性适配多平台差异化数据模型
  • 与 ERP 核心系统通过 Kafka 松耦合集成

10.4 改进方向

  • 抽象统一同步框架,减少重复代码
  • 引入 Webhook 事件驱动,降低 API 调用频率
  • 统一监控大盘,覆盖全平台数据质量巡检
  • FastJSON 安全升级 / JDK 8 → 17 迁移
  • 补充测试覆盖率达到 80%+
相关阅读

10 分钟

01-跨境电商平台对接

对应代码: 下所有 服务 + 关键代码: 集团跨境电商业务横跨 **Amazon、eBay、Shopee、Temu、TikTok Shop、Walmart 等 18+ 平台**,每个平台存在以下差异: 1. **API 规范差异**:Ama

面试#电商平台对接6 阅读 · 0 评论

评论需要登录。生产环境使用 GitHub 登录,本地可前往 登录页 使用开发登录。

还没有评论,来抢沙发。