简介

在复杂的分布式系统中,追踪跨设备、跨进程以及跨线程的业务流程是一项挑战。为了简化这一过程,Harmony推出了hiTraceChain,一款专为端侧业务设计的轻量级分布式跟踪解决方案。hiTraceChain在业务流程中生成并传递唯一的跟踪标识,确保所有相关的信息,如应用事件、系统时间、日志等,都能被统一标记,从而在调试和问题定位时,能够迅速关联起端到端的业务信息。

通过提供一系列易于使用的API,hiTraceChain帮助开发者轻松获取指定业务流程的调用链日志,有效定位跨域故障,提升维护效率。

基本概念

在hiTraceChain中,一个核心的概念是chainId,它是HiTraceId的一部分,用于唯一标识整个跟踪的业务流程。

接口说明

hiTraceChain提供了两个关键的接口用于分布式跟踪:

  • begin(name: string, flags: number = HiTraceFlag.DEFAULT): 开始一个新的跟踪会话,返回一个HiTraceId实例。
  • end(id: HiTraceId): 结束一个跟踪会话,接受HiTraceId作为参数。

开发步骤

要在应用中集成hiTraceChain,你需要在业务流程的关键点调用上述API。下面是一个使用hiTraceChain的示例代码:

// 引入hiTraceChain模块
import hiTraceChain from '@ohos.hiTraceChain';

// 定义页面组件
export default {
    data: {
        title: ""
    },
    onInit() {
        this.title = this.$t('strings.world');

        // 开启分布式跟踪
        const asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);

        // 业务流程开始
        console.log(`business start`);

        // 埋点操作
        hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.THREAD, hiTraceChain.HiTraceTracepointType.SS, asyncTraceId, "Just a example");

        // 业务流程执行中
        console.log(`business running`);

        // 业务流程结束
        console.log(`business end`);

        // 停止跟踪
        hiTraceChain.end(asyncTraceId);
    }
};

在上述代码中,我们首先导入了hiTraceChain模块,并在onInit生命周期钩子中调用了begin方法来启动跟踪。在业务流程的不同阶段,我们使用tracepoint来记录关键事件,并最终调用end方法来结束跟踪。

运行项目,你将能够在日志中看到带有跟踪标识的信息,这些信息对于分析业务流程的执行情况至关重要。

总结

hiTraceChain为开发者提供了一种简便的方式,以跟踪和诊断跨域业务流程中的问题。通过集成这一工具,你可以更加高效地定位故障,优化应用性能,确保用户获得无缝的体验。


本文档包含了完整的代码示例和必要的步骤,以帮助你快速上手并利用hiTraceChain的强大功能。如果你在使用过程中遇到任何问题,欢迎查阅官方文档或联系技术支持获取进一步的帮助。