X-MSG-IM-分布式信令跟踪能力

本文介绍了经过一周研发的分布式信令跟踪能力,实现了实时、完备的信令跟踪,无需代码侵入。以客户端附着流程为例,详细阐述了涉及的系统网元和步骤,展示了信令在各个位置的捕获,并提供了关键信息的表格,揭示了RPC链的组成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是:
  • 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口.

  • 完备. 可以完整地回放整个业务流程.

  • 代码零侵入.

下面以客户端在域内的附着流程为例进行演示说明. 此流程涉及到三个系统网元:
  • x-msg-ap, 访问点.

  • x-msg-im-hlr, 用户归属位置.

  • x-msg-im-auth, 鉴权中心.

分为以下步骤:
  1. 客户端向x-msg-ap发起附着请求.

  2. x-msg-apx-msg-im-hlr透传此请求.

  3. x-msg-im-hlrx-msg-im-auth询问此附着请求中的token等参数是否有效.

  4. x-msg-im-authx-msg-im-hlr回送附着结果.

  5. x-msg-im-hlrx-msg-ap回送附着结果.

  6. x-msg-ap向客户端透传附着结果,

信令跟踪在每个RX/TX位置都有测点, 也就是下图中的: A, B, C, D, E, F, G, H, I, J. 每个测点上都抓取XSC协议从传输层到应用层每一个字节.

img

下面这张表则是上图10个测点的部分关键信息. 它们由一个trace-id进行关联, 通过span-idparent-span-id的继承关系组成了一个完整的RPC链.
detect pointtimestamp(nano)trace-idspan-idparent-span-idsource network elementdestination network elementpdu
A157171477839300000000fd4b376ab64e872267f44c65454cb900000000000000005c1acfd87a254463aa2cfa6bca8c7e94im.xmsg.dev5.cn.szap0$0000DEADBEEF
B157171477839300000100fd4b376ab64e875b99e760169d41df2267f44c65454cb9im.xmsg.dev5.cn.szap0$0000im.xmsg.dev5.cn.szu0$0000DEADBEEF
C157171477839300000200fd4b376ab64e876957f3c576af4d635b99e760169d41dfim.xmsg.dev5.cn.szap0$0000im.xmsg.dev5.cn.szu0$0000DEADBEEF
D157171477839300000300fd4b376ab64e87b250652a8f5a434a6957f3c576af4d63im.xmsg.dev5.cn.szu0$0000im.xmsg.dev5.cn.sza0$0000DEADBEEF
E157171477839300000400fd4b376ab64e87878b41ccd8b6439bb250652a8f5a434aim.xmsg.dev5.cn.szu0$0000im.xmsg.dev5.cn.sza0$0000DEADBEEF
F157171477839300000500fd4b376ab64e874d1eb9960e064048878b41ccd8b6439bim.xmsg.dev5.cn.sza0$0000im.xmsg.dev5.cn.szu0$0000DEADBEEF
G157171477839300000600fd4b376ab64e874111a284197b42d34d1eb9960e064048im.xmsg.dev5.cn.sza0$0000im.xmsg.dev5.cn.szu0$0000DEADBEEF
H157171477839300000800fd4b376ab64e87ac7a980bcfb840214111a284197b42d3im.xmsg.dev5.cn.szu0$0000im.xmsg.dev5.cn.szap0$0000DEADBEEF
I157171477839300000900fd4b376ab64e871a13f39862c3472cac7a980bcfb84021im.xmsg.dev5.cn.szu0$0000im.xmsg.dev5.cn.szap0$0000DEADBEEF
J157171477839300001000fd4b376ab64e874330b6dafba44a071a13f39862c3472cim.xmsg.dev5.cn.szap0$00005c1acfd87a254463aa2cfa6bca8c7e94DEADBEEF
代码零侵入演示
  • A, B, I, J测点, 在x-msg-ap网元上
/* x-msg-ap处理来自客户端的附着请求. */
void XmsgImHlrAttachSimple::handle(SptrXitp trans /* 事务. */, shared_ptr<XmsgImHlrAttachSimpleReq> req)
{
	shared_ptr<XmsgNeUsr> hlr = XmsgNeGroupMgr::instance()->getHlr(); /* 获取x-msg-im-hlr网元句柄. */
	XmsgImChannel::cast(hlr->channel)->begin(req, [trans](SptrXiti itrans) /* 向x-msg-im-hlr透传. */
	{
		shared_ptr<XmsgImHlrAttachSimpleRsp> rsp = static_pointer_cast<XmsgImHlrAttachSimpleRsp>(itrans->endMsg); /* x-msg-im-hlr回来的响应. */
		trans->end(rsp); /* 事务结束, 直接将响应透传回客户端. */
	}, nullptr, trans);
}
  • C, D, G, H测点, 在x-msg-im-hlr网元上
/* x-msg-im-hlr收到x-msg-ap透传过来的客户端附着请求. */
void XmsgImHlrAttachSimple::handle(shared_ptr<XmsgNeUsr> nu, const string& ccid, SptrXitp trans, shared_ptr<XmsgImHlrAttachSimpleReq> req)
{
	shared_ptr<XmsgNeUsr> auth = XmsgNeGroupMgr::instance()->getAuth(); /* 获取x-msg-im-auth网元句柄. */
	XmsgImChannel::cast(auth->channel)->begin(req, [trans](SptrXiti itrans) /* 向x-msg-im-auth透传. */
	{
		shared_ptr<XmsgImHlrAttachSimpleRsp> rsp = static_pointer_cast<XmsgImHlrAttachSimpleRsp>(itrans->endMsg); /* x-msg-im-auth回来的响应. */
		trans->end(rsp); /* 直接将响应透传回x-msg-ap. */
	}, nullptr, trans);
}
  • E, F测点, 在x-msg-im-auth网元上
/* x-msg-im-auth收到x-msg-im-hlr透传过来的客户端附着请求. */
void XmsgImAuthClientAttachSimple::handle(shared_ptr<XmsgNeUsr> nu, SptrXitp trans, shared_ptr<XmsgImHlrAttachSimpleReq> req)
{
	shared_ptr<XmsgImHlrAttachSimpleRsp> rsp(new XmsgImHlrAttachSimpleRsp());
	rsp->set_usr("usr");
	rsp->set_secret("secret");
	LOG_DEBUG("x-msg-im-client attach successful, req: %s, rsp: %s", req->ShortDebugString().c_str(), rsp->ShortDebugString().c_str())
	trans->end(rsp);  /* 直接将响应透传回x-msg-im-hlr. */
}
信令跟踪指导..............................................................................................................2-1 2.1 概述.................................................................................................................................... 2-1 2.2 Um 接口跟踪...................................................................................................................... 2-2 2.2.1 功能说明.................................................................................................................. 2-2 2.2.2 操作方法.................................................................................................................. 2-2 2.2.3 选项说明.................................................................................................................. 2-4 2.2.4 举例说明.................................................................................................................. 2-4 2.3 Abis 接口跟踪..................................................................................................................... 2-5 2.3.1 功能说明.................................................................................................................. 2-5 2.3.2 操作方法.................................................................................................................. 2-5 2.3.3 选项说明.................................................................................................................. 2-7 2.3.4 举例说明.................................................................................................................. 2-8 2.4 A 接口跟踪....................................................................................................................... 2-10 2.4.1 功能说明................................................................................................................ 2-10 2.4.2 操作方法................................................................................................................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值