上海电信应急短信产品系统

我要开发同款
proginn09335063072026年09月04日
2阅读

技术信息

语言技术
C++Linux
系统类型
Linux
行业分类
政务

作品详情

行业场景

防灾应急短信
实时接收解析过滤全上海电信手机定位信息
按区域划分,实时生成清单
以供“上级”按区域下发短信,例如台风来临,提前24小时下发浦东沿海区域防灾短信。

功能介绍

项目由2个模块组成,oidd_ex 和 oidd_sediment_c11
16路 oidd_ex : OIDD 链路中的中间 enrichment + 分流服务:接收上游 16路 kafka的4G/位置类信令行数据,根据小区码(CellCode)补全区域 ID(AreaID),再按 AreaID % modulo 分发到下游12路数据沉淀节点。
12路oidd_sediment_c11:接收上游推送的 号码(MDN)+ 小区(CellCode)+ 区域(areaID),按区域在内存去重暂存,再按约 10 分钟 一批落盘,供下游使用。支持按 modulo/remainder 多进程分片。


项目实现

以上2模块都是本人负责。
技术栈
语言/运行时:C++(消息线程模型)
基础框架:自研 basic_service(CApplication / CMsgThread / remote agent)
通信:TCP / rawtcp(无长度头,按次 recv 上送)
配置:XML(config.xml)
数据形态:文本粘包(: 分行、, 分字段)
数据结构:unordered_map / unordered_set + 线程锁
链路:Kafka → Java 消费转发 → oidd_ex 进程 → oidd_sediment_c11进程
部署:多实例并行(16 路 oidd_ex,12路 oidd_sediment_c11)

亮点
管道化:收包线程与 10 个处理线程解耦,轮询分发,吞吐可扩
轻量 enrichment:本地 map 查 CellCode→AreaID,补全域后下发
区域分片:area_ID % modulo 把同区域流量打到固定沉淀节点
映射可热更:文件 mtime 检测 + 外部 update_CCArea 通知
可观测:包/行/发送/丢弃/分流路指标周期输出
按区域分桶 + 窗口去重:同 area 内用 set 压掉短时重复,落盘文件更干净
多进程取模分片:单进程 area 上限约 30,水平扩展简单
写盘与收包解耦:先拷贝再 clear,缩短持锁时间,收包少被堵

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论