ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

运营商BOSS系统全解析:核心流程、接口与故障排查指南

运营商BOSS系统全解析:核心流程、接口与故障排查指南 简介这是一份面向电信行业从业者、IT支撑系统规划与运维人员的PPTX资料系统讲解运营商BOSS业务IT支撑系统的整体架构与核心域划分。内容围绕BSS、OSS、MSS、EDA、ITM五大域展开逐一说明CRM、计费结算、网络资源管理、服务开通与保障、企业门户与OA、ODS/EDW数据仓库、IT服务管理及统一监控等关键模块并以中国移动、中国联通、中国电信的BOSS系统架构为例展示融合计费、产品管理、综合结算、服务开通、合作伙伴管理等具体功能对比不同运营商的落地差异与集成方式。资源包共1个文件为PPTX演示文稿包体大小4.59MB适合直接阅读、培训展示或二次整理。目前已有79人学习浏览可作为快速理解电信BOSS系统全貌、梳理IT支撑体系脉络的入门参考。借助这份演示文稿读者能掌握各大域定位、系统间的协同关系以及运营商IT规划思路对实际业务支撑流程的理解与方案设计有直接帮助。1. BOSS是什么运营商的业务命脉为什么一个出账系统能让所有人加班运营商BOSS业务IT支撑系统乍看是一套后台管理软件实际上支撑着运营商每一天的业务运转。营业厅办卡、App缴费、月底出账、欠费停机用户能感知的每一件事背后都是BOSS里的计费、账务、开通、信控在协同完成。它不直接产生收入但每一次故障都会变成实实在在的营收损失和客诉压力。这套系统值得三类人研究刚接手运营商IT项目的集成工程师、负责BOSS日常运维的支撑人员、想从互联网行业转通信后台的后端开发。这篇笔记按一线拆解这类系统最常见的路径从模块划分、核心流程、接口数据、排错到健康度验证把BOSS讲透。如果你只是要把BOSS做成一份介绍材料真正值得写进去的也正是这些能落到地上的东西。2. 从BSS到OSS再到MSS先把BOSS的边界画清楚看BOSS架构图的第一反应是被缩写淹没。我建议先别管那些子系统按管理对象切三大块BSS管业务与资金OSS管网络与资源MSS管企业内部支撑。边界立起来后面看任何子系统都能快速归位。2.1 BSS管业务、OSS管网络、MSS管内部为什么要这么切BSS的职责是围绕用户和钱展开。客户资料、产品目录、订单、计费、账务、缴费、结算都算BSS。一个用户办宽带CRM录资料、订单引擎出订单、计费算钱、账务出账单这是BSS的典型动作。BSS的核心价值是准确差一分钱都会被投诉。OSS的职责是让服务在网络侧可用资源管理、服务开通、网络故障工单。BSS决定了用户买什么OSS决定能不能用得上两者通过订单和开通指令衔接。MSS则管内部的人财物财务、人力、OA、采购说白了就是一般企业的ERP范围技术含量相对低但最容易被人拿去和BOSS混为一谈。这个切分不只是为了画图它直接决定运维告警的优先级。BSS故障营业厅和App全停OSS故障用户办了业务却开不通MSS故障影响内部流程对外基本无感。值班排障时先问一句这次故障在哪个域排查范围能砍掉一半。2.2 计费是BOSS的心脏离线批价与在线扣费的差别计费子系统是BOSS里最复杂、最不能算错的部分。现在主流方案是两条路并行一条是离线计费处理后付费用户话单先落库再批价月度出账另一条是在线计费处理预付费用户通话和上网过程中实时扣费余额不足当场中断。离线计费的核心动作是批价话单进来之后按套餐、时段、漫游状态、叠加包去套资费规则算出一张详单该收多少钱。批价规则通常不写在代码里而是放在资费配置表和规则引擎里。改一个套餐价格只动配置不动代码这是BOSS日常运维里最常见的任务。在线计费的技术挑战完全不同高并发、低时延。用户发起一次上网或通话在线计费系统要实时响应信用额度的申请、扣减和授权。预付费用户为什么能精确停机靠的就是这一环在毫秒级把余额扣到零然后拒绝继续授权。参数上最常调的是配额大小和阈值配额给大余额可能透支配额给小信令交互频繁网关压力大。一般按业务类型语音、流量、短彩信分别设不同配额。2.3 CRM、结算、开通、信控四个绕不开的支撑子系统计费之外还有四块高频子系统。CRM管客户、账户、产品和订单回答谁买了什么、订单走到哪一步。结算管运营商之间的互联互通费用以及和内容服务商的分成数据量和工作量都不小每月报表牵扯大量分拣比对。服务开通是连接BSS和OSS的桥梁接收订单里的产品信息翻译成网元可执行的指令下发再回写结果。信控持续监控账户余额和信用度按阈值触发预警、限制、停机与在线计费强相关。这四个子系统加上计费共同回答一个问题为用户提供什么服务、怎么收费、收不上来怎么办、停了怎么开。它们逻辑独立数据却都耦合在订单和账务两条主线上理解BOSS最好的方式就是追着这两条主线的数据跑一遍业务。子系统职责边界核心数据故障影响CRM客户、订单、产品受理客户资料、订单记录无法办业务、无法查询计费详单批价、实时扣费话单、费用明细计费不准、停机失控结算运营商间、内容方分成结算单、分摊结果收入对不上账服务开通网元指令下发与确认开通工单、指令状态业务开不通信控欠费监控、停机复机信用度、停机记录欠费不停、缴费不复机3. 把开户、缴费、停机跑通BOSS里最核心的三条业务流概念拆完得看真东西。BOSS里最常被打穿的三条流程是开户、出账缴费、停机。我把每一步涉及的系统、数据变化和失败表现写清楚。3.1 开户流程从选套餐到网元激活中间要过几道门开户是BOSS最典型的端到端流程。前台营业员在CRM里录入客户资料、选择套餐和增值业务订单引擎生成订单然后依次经过产品可售校验、实名校验、资源分配、服务开通、账务初始化几个环节。资源分配是开户流程里最容易出并发问题的一环。号码、SIM卡号、宽带端口都是资源分配动作必须做到分配即占用。分配完成后服务开通子系统把激活指令下发到核心网设备比如在归属签约用户服务器上写入签约数据。指令返回成功订单状态才允许置为已开通账户资料、订购关系、首月费用才会同步初始化到账务系统。开户慢通常不是CRM慢而是卡在资源分配竞争和服务开通等待网元应答两处。排查开户问题我一般先查订单主表的状态和耗时再顺着订单号查资源占用和开通指令执行记录。以下SQL按常见BOSS表模型给出实际落地时换成你那边表名即可。SELECT order_id, cust_id, order_status, create_time, finish_time, step_code, step_status FROM t_order_main m LEFT JOIN t_order_step s ON m.order_id s.order_id WHERE m.cust_id :cust_id ORDER BY s.seq_no;t_order_main 存订单主信息t_order_step 存每个环节的流水。step_code 指向资源分配、开通下发、账务初始化等环节。排查时先看 order_status 是不是卡在某个中间态再看对应 step_status 是超时还是失败。这套查询在模拟项目X里基本一条命令就能定位是没分到号还是网元没回包。3.2 出账与缴费流程月底那几天BOSS系统在忙什么每月的出账是BOSS里最紧张的时刻。出账本质上是一个大号批处理任务把当月所有账户的话单费用、月租、优惠、调账汇总成账单。这个过程对系统性能非常敏感工程上一定会做分片处理常见做法是按账期或账户尾号把全量账户拆成多个分片每个分片独立成一个批处理任务并行执行。注意分片数不是越大越好每片处理行数在几十万级别比较合适。分片过细任务调度本身会成为瓶颈分片过粗跑批时间又压不下来。出账成功后的第二天用户才能在App或营业厅看到上月账单。缴费是账单出来之后的销账动作用户交钱支付渠道回传成功流水账务系统更新余额和未销账金额同时触发开机指令。缴费环节必须做幂等同一笔支付流水只能销一次账否则会出现交一次钱销两次账。SELECT pay_serial, cust_id, account_id, pay_amount, pay_channel, pay_time, settle_status FROM t_payment WHERE pay_serial :serial_no OR (cust_id :cust_id AND pay_time :start_time);设置检索条件时注意两点一是 pay_serial 一定要有唯一索引这是防重复销账的关键二是按客户和时间查时时间条件必须带上否则会扫全量历史流水。出账期间发现缴费流水一直处于未结算状态优先检查支付回调到了哪一层而不是直接改库。3.3 停机与信控流程欠费停机为什么总是慢半拍停机流程和信控强相关。后付费用户的欠费停机不是实时的而是周期性扫描出来的信控任务每天定时跑扫描账户余额和信用度。低于预警阈值发短信提醒低于停机阈值就下发停机指令到核心网把语音、数据业务停掉。这个慢半拍是设计如此。后付费用户先使用后付费账务上有账期和信用度兜底系统不可能每笔话单都实时计较。真正走实时控制的是预付费用户他们在在线计费里实时扣费欠费瞬间就停。用户缴费后流程反转账务销账成功信控解除限制停机指令换成开机指令。这里最常见的失败点不是停机而是复机。停机逻辑往往只做了下发指令没做确认指令生效导致用户交了钱仍然打不了电话。所以做停机复机流程时一定要加对账任务周期核对待复机用户的网元签约状态发现不一致就自动补发指令。4. 接口和数据模型BOSS怎么与渠道、网元、账务对话系统划分和业务流程是对外视角接口和数据模型才是落地时天天打交道的东西。这一章单独拉出来讲是因为绝大多数支撑项目翻车都翻在这里。4.1 同步接口与异步队列什么场景选什么方式BOSS和外围渠道之间的接口按交互方式分两种。同步接口用于必须立刻知道结果的场景开户、缴费、查询余额都是事务型操作调用方要等BOSS返回成功或失败。同步接口一般走HTTP或RPC风格的服务调用超时时间设定很关键我一般设15到30秒超过就按失败处理并允许重试。异步接口用于可以稍后处理的场景。话单采集、短信通知、开通指令下发这类请求量大、允许排队和大规模重试通常走消息队列。缺点是丢消息了看不出来所以必须有重试表和补偿任务每一条消息落库标记状态定时任务扫描未完成状态重新投递。不管是同步还是异步接口层必做三件事统一字符集防止中文乱码统一时间格式防止账期错位统一流水号方便问题排查和数据对账。见过太多两个系统联调半天最后发现是一个用yyyy-MM-dd、一个用yyyyMMdd导致当月账期归属错掉的案例。幂等是账务类接口不能省的设计。以缴费通知为例渠道可能会重发消息BOSS接收后第一件事就是查流水号是否处理过处理过直接返回成功不再扣减余额。# 缴费入账处理提单前先查幂等 def process_payment(req): key req[pay_serial] row query(SELECT 1 FROM t_payment WHERE pay_serial %s, key) if row: return {code: 0, msg: duplicated} conn.begin() try: # 余额扣减带余额条件防超扣 exec_sql(UPDATE t_account SET balance balance - %s WHERE acct_id %s AND balance %s, req[amount], req[acct_id], req[amount]) exec_sql(INSERT INTO t_payment(pay_serial, acct_id, amount, state) VALUES(%s, %s, %s, SUCCESS), key, req[acct_id], req[amount]) conn.commit() except Exception: conn.rollback() raise return {code: 0, msg: ok}先查t_payment是否已有这个流水号有就直接返回这是幂等检查扣余额时带上 balance 金额 的条件避免并发下余额变成负数插入流水和扣减余额放在同一个事务里任何一个失败都回滚。这段逻辑在账务、缴费、调账接口里都能套用改一下表名和字段即可是BOSS外围接口里最值得复用的模板。4.2 核心数据模型客户、账户、订单三者的边界别搞混BOSS的数据模型看着庞大核心骨架只有三大类实体客户、账户、订单再加上产品做关联。客户是物理的人或组织存实名信息账户是计费和付费的载体存余额和账期状态订单是一次业务受理的凭证记录哪个客户在什么时间订购了什么产品。很多新入行的人把客户和账户当成一回事这是错误的。一个客户可以名下多个账户一个账户也可以给多个客户合用家庭融合套餐就是典型场景。区分不清做费控和信控时一定会算错对象。产品是客户和账户的中间层客户订购产品产品产生费用费用挂到账户上。这张订购关系表是BOSS里最活跃的表至少要维护客户标识、账户标识、产品编码、订购时间、生效时间、失效时间、状态七个字段其中状态必须是明确的枚举不能靠时间去推算。模型本身不复杂复杂的是数据量。一套省分BOSS的客户量级在千万到亿级所以落地必须有分片。常见做法是拿客户标识做哈希分16或64个物理库账户表跟着客户走保证同客户数据落在同一个分片里关联查询不跨库。4.3 数据迁移与割接换系统时最容易出事的地方BOSS演进到云化或微服务架构时最危险的不是写新代码而是把老系统数据搬到新系统。这条经验在很多迁移项目里反复出现翻车率最高的就是数据迁移。主流的稳妥做法是三步走先全量迁移再增量同步最后割接切换。全量迁移只搬基准数据客户资料、账户余额、未出账详单、欠费明细、历史账单索引。增量同步是在全量结束后建立同步通道持续把当天的新老数据变动拉到新系统。割接窗口在业务低峰停止外围系统写操作完成最后一轮增量追平切换读流量。有三件事不做就会出问题一是余额必须和账户流水一起迁只迁余额不迁流水事后明细对不上二是用户停复机状态得单独导传错一个状态用户就会在割接后无辜停机三是历史账单一律只迁索引和摘要不迁全量详单迁全量的系统基本都扛不住查询和存储压力。每个步骤做完都必须跑对账。对账的标准做法是找一个不变量账户余额恒等于上期余额加缴费减消费减调账。割接当天把新老系统的账户余额各自跑一遍这个恒等式两边都平了才允许对外放量。放量也要按比例先开1%的真实用户试跑一天没问题再逐步放量这是最保守也最有效的兜底手段。5. BOSS落地避坑五类高频故障的现象、原因与排查路径这一章是写给接手BOSS支撑的人看的。下面五类问题出现频率最高每条都按现象、原因、解决展开。5.1 号码并发分配出现重号和漏号现象开户高峰时段同一个号码被两个订单同时占用后受理的客户资料被覆盖前台投诉号被抢了。原因取号逻辑写成了先查一个可用号码再标记占用两步。两个事务同时查到同一个号码都以为可用后提交的覆盖先提交的。本质是检查与占用之间没有原子性。解决取号必须做成一个原子操作。常见做法是用数据库序列加唯一约束取号在事务里完成查一个号、置为占用、返回任何一步失败都回滚。号码表上加唯一索引兜底万一真出现重复插入数据库直接报错而不是静默覆盖。5.2 出账批跑超时日终任务迟迟不结束现象月末出账日凌晨批处理任务跑了四五个小时还没结束眼看营业厅要开门账还没出来。原因出账脚本用了全量扫描把当月所有账户从头算一遍加上一个大事务包住全量更新任何一步回滚就全部重来。数据量上来之后这种写法必炸。解决出账任务必须分片并行按账户尾号或地市拆成多个独立任务每片独立事务失败只重跑失败的分片。同时记录每个分片的起止时间和处理账户数跑批进度一目了然。重跑次数设上限超过直接告警避免无限重试拖垮库。5.3 接口报文中文乱码、字段错位导致开单失败现象外围系统传过来的XML或JSON里中文变成问号或者某个金额字段的值出现在客户名称字段里订单创建直接校验失败。原因两端字符集不一致常见一端用GBK、另一端用UTF-8报文字段用变长结构定义但解析端按固定偏移去切数据一长就错位。时间格式不统一也会造成账期归属错乱。解决接口规范里强制统一字符集为UTF-8报文格式用XML Schema或JSON Schema校验上线前准备一批带中文、带超长字段、带特殊字符的边界报文过自动化测试。时间统一为带时区的标准格式联调时先核对一条真实业务报文再放量。5.4 开通指令下发失败后订单状态卡死现象用户在营业厅办好新卡前台显示已受理但手机始终没信号。查订单状态一直停在处理中。原因流程状态机只画了正常路径受理、下发、成功。没画下发失败这个异常分支或者失败后没有回滚和重试订单就永远挂在中间态外面看不出来。解决给开通流程补上异常态至少要有失败、重试、回滚三个状态开通指令先落库再下发定时任务扫描超过N分钟未终态的订单自动重发或自动回滚。配合对账任务周期性核对订单已开通但网元无签约数据的差异记录发现即补发。5.5 数据迁移后用户余额与账务明细对不上现象割接后大量用户投诉话费变少或变多新系统查余额和查明细对不上数客服被问倒。原因迁移脚本只导了余额汇总表没导账户流水明细或者导流水的顺序和余额快照不一致导致对账时恒等式不成立。解决迁移前把余额快照、未出账详单、欠费明细三套数全部导出并各自汇总迁移后先跑恒等式检查账户余额上期余额缴费-消费-调账三条汇总只要有一条不平就不允许割接。上线后保留老系统查询通道三个月方便客服查历史账单。6. 验证BOSS系统健康度三张表加两条命令看遍全局接手任何一套BOSS不管新老第一周必做一件事把健康度检查固化下来。日常巡检不用盯着每个子系统抓三张表就够。第一张是订单主表看订单状态分布。处理中的订单数量持续上涨说明流程里有环节卡住了多半是资源分配或服务开通。第二张是缴费表看结算状态。未结算记录积压要么支付回调断了要么幂等没生效。第三张是批处理任务表看日终任务耗时。每片任务的结束时间和处理行数要记录和历史基线对比异常翻倍就提前排查。对应到命令日常至少用两条。一条看订单积压SELECT order_status, count(*) AS cnt FROM t_order_main WHERE create_time SYSDATE - 1 GROUP BY order_status ORDER BY cnt DESC;另一条看重试队列长度#!/bin/bash # 统计重试任务积压超过阈值输出告警 PENDING$(sqlplus -s $DB_CONN EOF set pagesize 0 feedback off select count(1) from t_retry_task where retry_statusPENDING and create_time sysdate-1; EOF ) THRESHOLD1000 if [ $PENDING -gt $THRESHOLD ]; then echo retry queue overflow: $PENDING else echo retry queue ok: $PENDING fi两个数值都要连看三天建立基线。比如订单处理中数量每天同期是三位数某天突然到四位数就要顺着最新订单去查卡点。重试队列更敏感只要持续增长哪怕总量不大也要马上处理因为队列里往往挂着的是用户感知最强烈的开通和缴费。这套巡检清单是我和A同学一起整理出来的。他之前接手一套地市BOSS时只盯着数据库CPU漏了订单状态分布开通工单积压了近两小时才发现用户投诉已经上来了。后来我们把三张表和两条命令固化成每天早上的固定任务有问题在告警阶段就暴露再没出过同类事故。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进