15年前运营商的核心网还是七号信令(SS7),那时候的信令采集、监控和检测系统还很落后,基本上就是给交换部门一个实时跟踪呼叫的工具,尤其是查询历史信令,很麻烦,需要将某日的原始数据导入进数据库,再进行查询,相当麻烦而且查询速度超慢。当时一个朋友想挖掘呼叫的数据,于是我在本地网已经收敛好的信令上,做了一个信令采集、存储和快速检索系统,性能远超当时的中创信测系统,颇得运营商搞交换的弟兄好评。现在的IMS核心网已经是SIP了,如果重新设计一个类似的系统,可能吗?

信令采集系统需要采集全部的信令消息,其特点是数据很大,除了呼叫相关的信令消息还有注册消息,堪称海量。以10万注册分机的中等规模电力IMS为例,每日呼叫数约40万次,达320万个呼叫消息。注册及相关的消息更大,每天高达近7千万条消息。

最容易想到的是使用通用数据库,普通做企业应用的程序员(一般使用java),经常使用关系型数据库,但随着数据量的急剧增加,插入和检索的性能都很受影响,哪怕购买最强悍的硬件,也很难达到性能上的要求,最后的结果只能是限制时间,比如只能存储一个月的数据或者各种分表,不但可用性极差,存储和查询的性能也很难达到要求。实际上原先就运行了这么一个用Java+MySQL实现的系统:采集和存储使cpu达400%--全部跑满,查询慢如蜗牛,几分钟才出结果。

当然,也可以使用nosql类型的数据库,这个可能会好一点,不能彻底解决问题,而且换取一点性能提升仍然需要高成本的硬件投入,有没有一种更完美的解决方案呢?答案是肯定的。

让我们先来分析信令数据的特点:

1、数据只会增加,一旦生成了不会回过头去修改也不会逐条删除;因此关系型数据库的update、delete是不需要的操作,只要insert。关系型数据库可以排除。

2、sip信令消息都是文本,但不等长,每条消息数百字节到上千字节不等。

3、历史数据检索,一般是限定日期时间段,指定某个关键字进行检索,如主叫号码或被叫号码,呼叫ID、拒接码等。

根据这几个特点,我设定了目标:

1、使用自己设计的文件存储,简单,可扩展,不够加硬盘就可以。仅需一两台普通PC服务器,不需要特别大的硬件投入。

2、检索要很快,要在1秒内返回结果。

3、支持web查询,实时信令监控支持websocket推送。

设计方法简要列举一下:

1、使用C/C++开发,底层开发,保持高效率。

2、对应呼叫数据,从底层到上层可抽象为:原始信令文件,信令记录文件,CDR文件,CDR类似话单,话单一般接通了生成,CDR只要呼叫了就会生成,无论呼叫成功还是失败。CDR数据提供接口,可以导出到关系型数据库进行复杂的检索分析。

3、非呼叫数据,如分机注册数据,只有两个抽象:原始信令文件,信令记录文件

4、索引文件,简单的平坦单一索引,不使用B+数等更复杂的结构。

5、按记录条数来生成数据记录文件和索引,这样可避免单个的文件太大。

6、核心存储模块和查询检索模块分成两个进程,保证各自的稳定性。尤其是核心模块,对实时性要求比较高,需要稳定运行。

7、核心模块的信令采集和存储处理之间采用无锁的环形队列,保证高并发性和实时性。

上述设计在电力的IMS通信网中已经实现,效果相当不错。

大规模sip信令存储、查询和实时跟踪的实现相关推荐

  1. 苏州公交线路查询api-苏州公交状态实时跟踪

    苏州公交线路查询api-苏州公交状态实时跟踪,查询公交详细信息. 接口名称:苏州公交线路查询api 接口平台:api接口 接口地址:http://apis.juhe.cn/szbusline/info ...

  2. 淘客订单查询策略:淘宝客订单要怎么查?如何实时跟踪用户付款退款等订单状态变化?如何实时结算?

    淘客订单查询策略要怎么安排,可以实时跟踪用户付款.退款等订单状态变化? 如何做到实时跟踪用户订单确认收货并与他结算返利或佣金? 首先要知道目前淘宝客的订单接口的特性,它是按照一个指定的起始时间(sta ...

  3. 彩虹查单插件,带快递实时跟踪查询

    介绍: 彩虹6.2以上版本可以使用,自带快递实时跟踪,大气UI查单页面 网盘下载地址: https://zijiewangpan.com/LldDkWUmF8Z 图片:

  4. PostgreSQL 物流轨迹系统数据库需求分析与设计 - 包裹侠实时跟踪与召回

    PostgreSQL 物流轨迹系统数据库需求分析与设计 - 包裹侠实时跟踪与召回 作者 digoal 日期 2017-04-10 标签 PostgreSQL , PostGIS , 快递 , 包裹侠 ...

  5. TANDEM 基于深度多视图立体视觉的实时跟踪和稠密建图

    点云PCL免费知识星球,点云论文速读. 文章:TANDEM: Tracking and Dense Mapping in Real-time using Deep Multi-view Stereo ...

  6. 万亿级日志与行为数据存储查询技术剖析——Hbase系预聚合方案、Dremel系parquet列存储、预聚合系、Lucene系...

    转自:http://www.infoq.com/cn/articles/trillion-log-and-data-storage-query-techniques?utm_source=infoq& ...

  7. 万亿级日志与行为数据存储查询技术剖析

    http://www.sohu.com/a/126082450_355140 目前大数据存储查询方案大概可以分为:Hbase系.Dremel系.预聚合系.Lucene系,本文作者将就自身的使用经验说说 ...

  8. 【v3.6.2】iNeuOS工业互联网操作系统,发布实时存储方式:实时存储、变化存储、定时存储,设备振动状态和电能状态监测驱动...

    目       录 1.      概述... 1 2.      平台演示... 2 3.      存储方式... 2 4.      设备状态和用电状态监控驱动... 3 1.   概述 本次升 ...

  9. 面向ad-hoc查询的实时SQL分析系统

    Impala/Hive现状分析与前景展望 Impala和Hive野史 提到Impala就不得不提Google的Dremel,处理PB级数据规模的基于SQL的交互式.实时数据分析系统.Dremel是Go ...

  10. Flightradar24 让你实时跟踪全世界飞行航班

    24小时飞行雷达官网:Flightradar24 让你实时跟踪全世界飞行航班 如果一个网站能让你实时跟踪全世界的飞行航班,有没有感觉很酷炫? 24小时飞行雷达网(flightradar24)是一个24 ...

最新文章

  1. 安卓学习-界面-ui-ListView
  2. CVPR 2021 | 不需要标注了?看自监督学习框架如何助力自动驾驶
  3. 大数据将改变信息生命周期管理
  4. 005_Redis的Hash数据类型
  5. vue动态获取元素距离页面顶部的高度_VUE如何实时监听元素距离顶部高度
  6. Java - Get a list of all Classes loaded in the JVM[转]
  7. dubbo-go 白话文 | 从零搭建 dubbogo 和 dubbo 的简单用例
  8. LeetCode 6. Z 字形变换(找规律)
  9. 搜索不包含关键词_关键词排名:搜索同一个关键词,每次的排名却不一样?
  10. datetime与timestamp的区别
  11. myeclipse导出war包出错Security alert解决办法
  12. CDRX6启动失败 提示尝试重新启动计算机和应用程序的解决方法
  13. 京东和淘宝近十年搜索热度对比,发现顶尖者的PK规律
  14. 格力集团投资小米,或是对董明珠和格力电器的复仇
  15. 安排,2020新kafka视频教程零基础到精通
  16. 利用python获取身份证号中年龄和性别信息
  17. 微信加拿大服务器,微信新功能,在加拿大也可以任意刷人民币了
  18. 如何批量修改文件夹中不同文件的名字?命令不正确~
  19. linux下搭建基本web服务
  20. 李飞飞:人工智能下一个春天是情绪和情感计算

热门文章

  1. iPhone手机开启定位权限后,仍然无法定位
  2. 移动端车牌识别SDK应用
  3. 移动端车牌识别SDK集成免手工录入
  4. 微信小程序 选项卡的简单实例
  5. Java Post/Get请求 工具类
  6. 知乎:前端IDE 那个流行,那个好;
  7. Ubuntu 部分截图
  8. win 10 使用技巧总结
  9. tpadmin的坑收集 nginx下配置tp5失败
  10. python是一门胶水语言_python为何被称之为胶水语言