1、IQ+CEP 架构参考案例,杨旭东 2010.11,提纲,背景 业务背景 技术背景 架构 业务架构 体系架构 系统架构 CEP技术分享及问题讨论,业务背景,中移动要求用户感知系统更好的支持运营,贴近客户,防止客户流失,系统的原始数据基于设备信令信息,数据量极大 8000w用户局点(广东)90天仅信令数据超过300TB 系统今后会处理用户手机上网数据,预计数据量10PB11月在广州和南京两地对10家厂家进行入围测试 中移动提供规范及测试用例 10家测试厂家均采用Sybase产品 测试用户量大于450w,日数据量90120G/天,技术背景,数据库无法处理信令分析中一些基于连续时间窗口的业务,数据库
2、处理性远远不能满足业务要求 举例 业务要求任何时间段内的查询结果需要6s返回 2kw数据表完成找到符合条件的记录耗时1分钟 条件:满足某一条件的记录10s内出现一条类似记录 如:A拨打B的电话,若持续时间小于5秒,且在10秒内又产生了一条A拨打B的通话记录,则该记录视为满足条件 M4000 2.15GHz 8 core 16 logical CPU数据库没有基于连续时间窗口的查询条件会遗漏部分数据 数据库条件查询某时间段内记录无结果不等于该时间段内无满足业务条件的记录 举例:查询连续1分钟连续拨打同一电话超过10次的电话记录 Sql:10点到11点间1分钟内拨打同一电话的超过10次的记录 实际
3、:9:59:3010:00 拨打电话A 5次,10:00:0010:00:30 拨打电话C A次 Sql查询无结果,实际业务有记录,几个典型的基于连续时间窗口业务,恶意呼叫 连续拨打同一个号码,不接通就挂掉可以视为恶意呼叫的一种 恶意短信 短时间内向同一个号码或不同号码发送几十上百条短信 乒乓切换 在一定时间内在不同蜂窝(接入设备)间切换 疑似单通串话分析 较短时间内同一通话只有短时间接通,并有多种类似情况出现可以视为单通的一种,业务架构,采集层汇聚层共享层 应用层 采集层:各类交换机的信令数据采集 汇聚层:汇聚各个局点来的数据,并对数据包进行过滤分析,如告警、重传、序号检测和差错检测等、 共
4、享层:完成消息的分析,合成,形成CDR话单并入库 CEP,IQ,Oracle等数据平台处于共享层 应用层:业务展现,体系架构,Sybase CEP,Oracle/PG,Sybase IQ,ECDA,Application,系统架构,系统架构(续),架构组件说明 CDR程序 基于JAVA,实现CEP out-of-process input Adapter 读取并合并多台CDR生成服务器话单 Publish 数据到Sybase CEP 将CDR话单程序移到IQ加载路径 Storing程序: 基于C/C+ 采用一定的算法进行IQ数据文件加载 架构缺点 CDR话单落地后才交给CEP处理 CEP 与I
5、Q串行工作,文件落地2次,效率较低 CEP直接入IQ库,单插效率低 Output Adpater采用CEP自带DB output Adapter ODBC接口,系统架构优化,CEP技术细节分享,CEP 性能 In-process Socket Input adapter 1.2w/s 1.6w/s per CPU on M4000 2.4w/s on dell E6400 (E8600 2.4GHz) Out-of-process adapter 处理速度为4k/s时,CPU占用率仅为2% CEP R4 /ESD1在Solaris平台只能使用1CPU bug 部分查询分成多个stream能显著
6、提高性能 (condition 1 and condition 2) or (condition 3 and condition4)拆分成两个流分别处理效率更高 增加索引,可以提高5%10%的处理性能 善用csv input Adapter及debug模式进行调试,CEP问题讨论,CEP结果是否能直接IQ? 自带DB output Adapter,”insert into” 入IQ性能差 输出结果数据量实时性要求高,自己写基于load的out put Adapter CEP能否做预处理的工作? 输入流与输出流数据量差别不大,处理性能? 基于时间段窗口的统计预处理,有无必要? CEP处理时参数的动态修改? 读取外部配置表,性能? 增加配置数据流,当前配置不读,