文章

His和esp落盘dhl

His和esp落盘dhl

[TOC]

ESP落盘本地DHL日志

数据流转过程

  • ESP 通过 TKESPService.ini 中的 [Config]-DTCBillList 配置,读取要落盘的 sid 和对应的 billtype

  • ESP 通过 esp 配置接收到目标 sid 信息,将信息落盘到本地。文件路径如下所示:

    image-20250731111928482

  • DHL 采集,流转到 DTC,DTC 将账单落到 Kafka。

  • kafka 再落到 hive。

  • hive 后续流转到数数,数数提供统计方法。

  • 【占位】

业务流程

1. 确定原子事件id

落盘的 sid 是有范围要求的,不同的 sid 会写到不用的本地文件中,对应关系如下表:

sid 文件名 DHL采集(待补充)
10000xxx ESP_DATA_1_20250731_09.log 默认采集
10001xxx ESP_DATA_2_20250731_09.log 默认采集
80000xxx ESP_DATA_3_20250731_09.log 默认采集
其它 ESP_DATA_0_20250731_09.log 不操作

对应代码如下:

image-20250731112545332

2. 新增 esp 配置

需要有 esp 配置来接收对应的原子事件,配置可参考10000316,10000904,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
{
  "desc": "赏金猎人活动目标、幸存成功、猎杀成功数据统计",
  "module": [
    {
      "starttime": "2025-07-30 00:00:00",
      "title": 1,
      "type": "filter_time",
      "next": 0
    }
  ],
  "sid": 10000904
}

3. 修改 esp.ini 配置

TKESPService.ini - [Config] - DTCBillList 中增加对应的 sid 和账单号。

配置示例如下,最新配置需参照线上。

1
2
[Config]
DTCBillList ="10000904:10000904,10000315:10000315,10000316:10000316,10000317:10000317,10000067:10000067,10000278:10000278,80000000:8541,80000001:8531,80000002:8501,80000003:8542,80000004:8543,10000307:8505,10000208:8508"

更新至除了回调之外的所有集群。

HIS落盘本地DHL日志

HisStore 中落盘日志的逻辑

  • 保存历史数据(函数CHisConfig::SaveHistory())时:

    • 只要 hid == 207 :调用函数CCTRClient::HIS2CTR()
    • 其它 hid 的配置,如果 billtype 配置不为 0 ,也会同样调用函数 CCTRClient::HIS2CTR() 落盘日志。
  • 在函数CCTRClient::HIS2CTR()中:对 billtype 为 8411、8413、8412 的数据添加固定的 json 字段(硬编码好的),然后异步落盘日志。

  • 异步落盘日志:

    • ini 中配置 DTCSenderSwitch == 1:发送 DTC。
    • DTCSenderSwitch == 2:落盘本地日志,DHL采集。(当前 HisStore 的 ini 配置都为 2
    • DTCSenderSwitch == 3:发送 DTC 且落盘本地 DHL 日志。
  • 落盘本地 DHL 日志时,不同的 billtype 写入的日志名规则如下:

    image-20250924144417151

  • 本地落盘日志的路径为D:/TKServer/LogData/His,示例:

    image-20251105140508750

  • 【占位】

赛程回顾

  • 比赛或游戏调用协议 TKID_HISRECORDERS2OTHERS_COLLECT_MATCH_DATATKID_HISRECORDERS2OTHERS_COLLECT_MATCH_DATA_EX
  • 协议 case 函数 OnRecordMatchData()OnRecordMatchDataEx() :在这两个函数中根据传入的 json 中的"H" - "K"字段判断是赛程回顾的哪个业务,然后赋值 hid,例如 511、512、211、212 等。最后调用函数 SaveHistory()
  • 向后流转的过程中会落盘 DHL 日志,也会像普通 his 业务一样通过 gss 写入 redis。

赛程回顾的配置在 hisstore.ini 中示例如下:

1
2
3
4
[ids]
majiang=501744,2007003,2006764,504351,...
doudizhu=2007874,504381,502232,502133,504382,...
gerentuanti=2007876,2007870,2007869,2007871,2007872,2007814,...

CVS 中的配置

不同业务的 billtype 是记录在 CVS.define_hisstore 表中的,示例如下:

image-20250924164411824

本文由作者按照 CC BY 4.0 进行授权