文档章节

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

x-msg-im
 x-msg-im
发布于 10/23 00:24
字数 800
阅读 26
收藏 0
经过一周多的鏖战, 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 point timestamp(nano) trace-id span-id parent-span-id source network element destination network element pdu
A 1571714778393000000 00fd4b376ab64e87 2267f44c65454cb9 0000000000000000 5c1acfd87a254463aa2cfa6bca8c7e94 im.xmsg.dev5.cn.szap0$0000 DEADBEEF
B 1571714778393000001 00fd4b376ab64e87 5b99e760169d41df 2267f44c65454cb9 im.xmsg.dev5.cn.szap0$0000 im.xmsg.dev5.cn.szu0$0000 DEADBEEF
C 1571714778393000002 00fd4b376ab64e87 6957f3c576af4d63 5b99e760169d41df im.xmsg.dev5.cn.szap0$0000 im.xmsg.dev5.cn.szu0$0000 DEADBEEF
D 1571714778393000003 00fd4b376ab64e87 b250652a8f5a434a 6957f3c576af4d63 im.xmsg.dev5.cn.szu0$0000 im.xmsg.dev5.cn.sza0$0000 DEADBEEF
E 1571714778393000004 00fd4b376ab64e87 878b41ccd8b6439b b250652a8f5a434a im.xmsg.dev5.cn.szu0$0000 im.xmsg.dev5.cn.sza0$0000 DEADBEEF
F 1571714778393000005 00fd4b376ab64e87 4d1eb9960e064048 878b41ccd8b6439b im.xmsg.dev5.cn.sza0$0000 im.xmsg.dev5.cn.szu0$0000 DEADBEEF
G 1571714778393000006 00fd4b376ab64e87 4111a284197b42d3 4d1eb9960e064048 im.xmsg.dev5.cn.sza0$0000 im.xmsg.dev5.cn.szu0$0000 DEADBEEF
H 1571714778393000008 00fd4b376ab64e87 ac7a980bcfb84021 4111a284197b42d3 im.xmsg.dev5.cn.szu0$0000 im.xmsg.dev5.cn.szap0$0000 DEADBEEF
I 1571714778393000009 00fd4b376ab64e87 1a13f39862c3472c ac7a980bcfb84021 im.xmsg.dev5.cn.szu0$0000 im.xmsg.dev5.cn.szap0$0000 DEADBEEF
J 1571714778393000010 00fd4b376ab64e87 4330b6dafba44a07 1a13f39862c3472c im.xmsg.dev5.cn.szap0$0000 5c1acfd87a254463aa2cfa6bca8c7e94 DEADBEEF
代码零侵入演示
  • 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. */
}

© 著作权归作者所有

x-msg-im

x-msg-im

粉丝 5
博文 4
码字总数 2087
作品 1
深圳
CEO
私信 提问
libx-msg-im-xsc 0.0.1 发布,X-MSG-IM 去中心化即时通信基础设施

libx-msg-im-xsc是一个基于actor模型的单进程多线程并发通信服务器框架. 它的目标是为上层应用提供一个高性能, 可测量, 并行无锁, 网络透明, 全异步的开发环境. 在X-MSG-IM系统中, 它为所有核...

x-msg-im
11/11
769
4
去中心化即时通信基础设施 - X-MSG-IM

X-MSG-IM 是一套高可靠, 高性能, 可测量, 可扩展, 支持任意规模的即时通信基础设施 它将具有如下核心能力: 单人会话, 包括 end to end 加密通信 多人会话, 万人群组 聊天室 文件与对象存储 ...

dev5
09/30
1K
1
x-msg-im-client-sdk 0.0.1 发布,X-MSG-IM去中心化即时通信基础设施

x-msg-im-client-sdk是X-MSG-IM去中心化即时通信基础设施的跨平台多语言sdk. 主要功能: 1. 网络层封装, 现支持tcp协议, 未来会引入udp or reliable udp, websocket, http, etc. 2. 基于sqlit...

dev5
09/30
484
0
hive问题 could not create a validated object的解决方法

[hadoop@master hive_dat]$ hive Logging initialized using configuration in file:/app/hive/conf/hive-log4j.properties Hive history file=/tmp/hadoop/hive_job_log_hadoop_20121218121......

iceman_os
2014/09/15
627
0
NGN学习笔记5——IMS技术

1.移动网络的发展--引子 20世纪80年代,商业性移动通信网络得到发展 第一代移动通信系统:TACS、NMT等模拟系统 第二代移动通信系统:GSM、IS-95、DECT、IS-136等数字系统,目前建设的2G移动网...

AlphaJay
2010/05/31
2.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue.js学习笔记2 - better-scroll滚动条

better-scroll滚动条 使用作者自制的better-scroll库,实现内容的滚动。 先在package.json加上依赖: "better-scroll": "^0.1.7" 接着再npm install安装依赖。 import BScroll from 'better-......

swanf
56分钟前
7
0
设计模式之适配器模式

定义 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工 作。 UML类图 适配器分为两种,类适配器与对象适配器。 类适配器的UML图...

陈年之后是青葱
今天
8
0
教你玩转Linux—磁盘管理

导读 Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用三个命令为df、du和fdisk。 df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了...

问题终结者
今天
11
0
KMP

字符串匹配算法 针对被匹配字段生产一个部分匹配表 A B C D A B D 0 0 0 0 1 2 0 部分匹配表 熟悉前缀与后缀的概念 ,“部分匹配表” 的生产就是根据前缀、后缀的最苍的共有元素的长度 前缀:...

鬼才王
昨天
6
0
快速搭建Jenkins集群

关于Jenkins集群 在Jenkins上同时执行多个任务时,单机性能可能达到瓶颈,使用Jenkins集群可以有效的解决此问题,让多台机器同时处理这些任务可以将压力分散,对单机版Jenkins的单点故障的隐...

程序员欣宸
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部