Redeem 83e14e1be4 修改 há 1 dia atrás
..
ddl 83e14e1be4 修改 há 1 dia atrás
01-tarantool-schema.md 83e14e1be4 修改 há 1 dia atrás
02-rtdb-connection-pool.md 83e14e1be4 修改 há 1 dia atrás
03-write-path.md 83e14e1be4 修改 há 1 dia atrás
04-oracle-sync-job.md 83e14e1be4 修改 há 1 dia atrás
README.md 83e14e1be4 修改 há 1 dia atrás

README.md

METER_WORK_MONITOR Tarantool 内存加速方案

背景

METER_WORK_MONITOR 为计量监控热点表。POST /doUpdateWfPOST /doUpdateWfBySpotNoupdateLastTime)写入频率高,直接打 Oracle 易形成锁竞争与连接压力。

目标

  1. 在 Tarantool(memtx)建立与 Oracle 同结构的内存表 METER_WORK_MONITOR
  2. 基于 icore-rtdb 自建多 Client 连接池,支撑高并发写入。
  3. 上述两个接口只写 Tarantool,立即返回。
  4. 定时 Job 将脏数据回写 Oracle。

架构

秤点/前端 → MeterWorkMonitorController
         → MeterWorkMonitorServiceImpl
         → MeterWorkMonitorRtdbRepository
         → RtdbClientPool → Tarantool METER_WORK_MONITOR

MeterWorkMonitorSyncScheduler → SyncService
  → 读 Tarantool dirty 行 → batchUpdateSelective → Oracle
  → 清 dirty

文档索引

文档 说明
01-tarantool-schema.md Space 字段、类型、冷启动
02-rtdb-connection-pool.md 连接池设计与配置
03-write-path.md 写入路径与失败策略
04-oracle-sync-job.md 回写 Job
ddl/meter_work_monitor.lua Tarantool 建表脚本

一致性与降级

  • 一致性:写路径最终一致;Oracle 落后于 Tarantool 最多一个 Job 周期(默认 1 分钟)。
  • 降级rtdb.monitor.fallback-oracle=true 时,Tarantool 写失败回退原 Oracle updateByPrimaryKeySelective
  • 范围外PUT /{id}MeterWorkCarActualFirst* 等其它 Oracle 直写路径不变;TestClient2 / DbConstants.client 暂保留。

配置开关(摘要)

rtdb.host=172.22.42.3
rtdb.port=2101
rtdb.username=guest
rtdb.password=
rtdb.pool.size=8
rtdb.pool.borrow-timeout-ms=3000
rtdb.monitor.enabled=true
rtdb.monitor.fallback-oracle=false
rtdb.monitor.bootstrap-enabled=false
meter.monitor.sync.enabled=false
meter.monitor.sync.cron=0 */1 * * * ?