带你读《2022技术人的百宝黑皮书》——移动域全链路可观测架构和关键技术(4)https://developer.aliyun.com/article/1340966?groupCode=taobaotech
移动端opentracing可观测架构
全链路构成
(图5 端到端情况、详情场景分层图)
端到端现有链路长,端侧存在各类研发框架和能力,虽然后端调用链路明确,但从全链路视角看,并没有与端侧打通。以用户浏览详情动线为例,一次首屏打开,会触发奥创、MTOP(无线网关)、DX三个模块不同的调用时 序,不同的模块有各自的处理过程,不同阶段有不同的耗时和状态(成功、失败等);接着继续看滑动,可以看到模块的调用时序组合又不一样,因此不同场景下可以由若干要素随机组合,需要根据用户实际场景,划分若干维度来定义全链路:
场景定义:一次用户操作为一个场景,如点击、滑动都是单独的场景,场景也可以是多个单个场景的组合。
能力分层:不同场景,有业务类,框架类、容器类、请求类的调用,可以对每个领域进行分层。
阶段定义:不同分层有各自的阶段。如框架类有4个本地阶段,而请求类可以包含后端服务端处理阶段。
用户动线:一次动线由若干场景组成。
全链路,就是把复杂的大调用分解为有限个结构化的小调用,并且可以衍生出各种case:
「单场景+单阶段」的组合全链路
「单场景+若干分层+若干阶段」组合的全链路
「若干场景+若干分层+若干阶段」组合的全链路
Falco-基于OpenTracing模型
全链路为了支持Logs + Metrics + Tracing 行业标准,引入分布式调用规范opentracing协议,在上述的客户端架构上进行二次建模(后续简称为Falco)。OpenTracing 规范是 Falco 的模型基础,以下不再列举,完整可参考OpenTracing设计规范,https://opentracing.io/docs/overview/。Falco定义了端侧领域的调用链追踪模型,主要表结构如下:
(图6 Falco数据表模型)
span公共头:黄色部分,对应OpenTracing规范的Span基础属性。 scene:对应OpenTracing的baggage部分,会从根span往下透传,存放业务场景,命名规则为「业务标识_ 行为」。比如详情首屏为ProductDetail_FirstScreen、详情刷新为ProductDetail_Refresh。
layer: 对应OpenTracing的Tags部分,定义了层的概念,目前划分为业务层、容器层和能力层。处理业务逻辑的模块归属业务层,命名为business;提供视图容器归属容器&框架层,如DX、Weex都是,命名为frame- workContainer;仅提供一个原子能力的模块,归属能力层,命名为ability,如mtop、picture,层可应用于对同 层同能力的不同模块进行横向性能对比。 stages:对应OpenTracing的Tags部分,表示一次模块调用包含的阶段。每一层基于领域模型划分了关键阶 段,目的是让同层的不同模块具备一致的对比口径,如DX和TNode对比,可以从预处理耗时、解析耗时、渲染 耗时衡量彼此优劣。比如预处理阶段名为preProcessStart,也可以自定义。 module:对应OpenTracing的Tags部分,更多的是逻辑模块。比如 DX、mtop、图片库、网络库。Logs:对应OpenTracing的Logs部分,日志仅记录到TLog,不输出到UT埋点。
带你读《2022技术人的百宝黑皮书》——移动域全链路可观测架构和关键技术(5)https://developer.aliyun.com/article/1340964?groupCode=taobaotech