基础篇丨链路追踪(Tracing)其实很简单
博客园 2023-03-30 14:14:55

作者:涯海


(相关资料图)

一、分布式链路追踪的起源

当周末躺在被窝里,点外卖时;双 11 的零点,疯狂提交订单时;假期和基友激情开黑,五杀超神…在这个精彩纷呈的互联网世界里,这些应用背后又隐藏着什么?每一次点击行为在 IT 世界里会流经哪些节点,调用哪些服务,带来哪些变化?这一切庞杂且精密,超出了人力探索的边界,而分布式链路追踪就是追溯请求在 IT 系统间流转路径与状态的一门技术。接下来,让我们通过对分布式链路追踪的来了解这个 IT 世界!

说到分布式链路追踪,就绕不开分布式系统与微服务的兴起。早期 IT 系统非常简单,几乎所有程序都运行在同一个节点,互相之间也没有什么依赖。但随着硬件技术突飞猛进,硬件成本大幅下降,软件复杂度却越来越高。单一系统性能无法满足复杂的数据计算任务,而软件逻辑的复杂性也导致维护成本大幅上升。另外,单节点的可靠性也难以保障,不可避免的会偶尔出现宕机等行为,影响软件的可用性。 “性能、可维护性和可用性”这三大因素促使了分布式系统与微服务的诞生。

为了解决上述问题,人们很自然想到:既然一个硬件节点无法很好的运行软件,那能不能够通过多个节点来共同完成?并且为不同节点分派不同任务去提高效率。就好比通过不同角色分工协同的汽车生产流水线,分布式系统与微服务的理念亦是如此,如下图所示。

分布式系统与微服务自诞生就被广泛应用,主要得益于以下优势:

分布式系统天然具备“按需扩展”的能力,比如双 11 大促前通过添加机器实现快速水平扩容,大促结束后释放机器,充分利用云计算的分时复用能力,节约成本。利用微服务,还可以实现按需精准扩容,比如登录服务扩容 10 倍,下单服务扩容3倍,最大化的节省资源。

分布式系统可以有效抵抗“单点风险”,不会因为某一个节点的故障,影响整体的服务可用性。结合流量调度、离群实例摘除和弹性扩容等技术,甚至可以实现故障自愈。

分布式系统可维护性更强,一方面我们将一个复杂服务拆分成多个简单的微服务,每个微服务的逻辑都更加清晰、更易理解。就好比我们写代码,将一个几百行的复杂函数重构成若干个简单函数,代码可读性就会直线上升。另一方面,一些通用的微服务可以被高度复用,无需重复开发和维护,比如你在开发一个电商 APP,可以直接调用第三方提供的支付、物流等服务接口,整体开发和维护效率将大幅提升。

虽然分布式系统与微服务具有非常显著优势,但凡事有利必有弊,它们在有效解决原有问题基础上,也为系统开发和运维带来了新挑战,主要包括以下几点

随着系统的分布式程度越来越高,异常表象与根因之间的逻辑联系变得愈加模糊,问题诊断的难度急剧上升。比如 A、B 两个服务共享同一个数据库实例,当 A 服务在压测期间,大量占用数据库的服务端连接和计算资源,会导致 B 服务出现连接超时或响应变慢等问题。如果 B 服务是通过 C 服务间接依赖该数据库实例,问题的定位就会变得更加困难。

虽然分布式应用从总体上变的更加可靠,但是每一个独立节点的状态却难以保证。导致这种不一致的原因有很多,比如前文提到的单机故障这种预期外的不一致,或者应用 Owner 执行分批发布或流量灰度时导致的预期内行为不一致。这种不一致性导致我们难以确定一个用户请求在系统内的准确执行路径与行为逻辑,可能引发不可预知的逻辑灾难。

当你的系统拥有上千个微服务镜像运行在数百台机器实例上,你该如何梳理它们之间的依赖关系,又该如何找到核心业务的关键执行路径?特别是在分布式的场景下,你没有一个中心化的节点(Master)来保存每个服务之间的依赖与调度状态,每个独立节点都在自行其是,无法分辨自己在整个系统中的位置,只能“盲人摸象、管中窥豹”,缺乏全局视图。

分布式系统与微服务带来的新挑战无疑让人头痛,但也带来了新技术的发展契机,科技的发展总是这样循环往复,螺旋式上升。它们带来的新问题,促使了分布式链路追踪的诞生,使你能够有效的观察全局,追踪流量。我们将在下个章节了解分布式链路追踪的诞生历程与核心理念。

二、分布式链路追踪的诞生

为了应对分布式环境下的不一致、模糊性等前文提到的各类问题问题,人们试图通过请求粒度的轨迹追踪与数据透传,实现节点间的确定性关联,分布式链路追踪技术也由此诞生。

里程碑事件:Google Dapper

分布式链路追踪诞生的标志性事件就是 Google Dapper 论文的发表。2010 年 4 月,Benjamin H. Sigelman 等人在 Google Technical Report 上发表了《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,揭开了分布式链路追踪的技术大幕,开启了一段全新技术浪潮。

Dapper 首先明确了分布式链路追踪的两个目标:任意部署和持续监测。进而给出了三个具体的设计准则:

下面几张图展示了 Dapper 对链路透传、调用链结构和数据采集流程的描述,我们将在后续章节详细展开介绍,对 Dapper 感兴趣的同学建议直接阅读原作。

Dapper 论文有两个重要的意义,一是详细阐述了分布式链路追踪的设计理念,为后来的实现者提供了重要的理论指导;二是通过 Dapper 在 Google 生产环境的大规模落地实践,证明了分布式链路追踪技术的企业级价值,为分布式链路追踪的推广作出了不可磨灭的贡献。

基本原理

分布式链路追踪并不是无中生有、凭空诞生的新概念,而是轨迹追踪在 IT 领域的又一次成功运用。轨迹追踪理念早已被广泛应用于社会生活方方面面,比如物流订单追踪。一个快递包裹在发件站被赋予快递单号,沿途中转节点会记录该快递到达时间等信息,而用户通过快递单号就可以查询自己的包裹途径了哪些站点,耗时多久,是否存在滞留或丢件情况。下表对比了物流追踪与链路追踪的关联与差异性,以便大家理解。

分布式链路追踪的基本原理就是在分布式应用的接口方法上设置一些观察点(类似快递中转站记录点),然后在入口节点给每个请求分配一个全局唯一的标识 TraceId(类似快递单号),当请求流经这些观察点时就会记录一行对应的链路日志(包含链路唯一标识,接口名称,时间戳,主机信息等)。最后通过 TraceId 将一次请求的所有链路日志进行组装,就可以还原出该次请求的链路轨迹,如下图所示。

分布式链路追踪实现请求回溯的关键点有两个:一是低成本、高质量的观察点设置,也就是链路插桩,确保我们追踪的信息足够丰富,能够快速定位异常根因;二是保证链路上下文在不同环境下都能够完整透传,避免出现上下文丢失导致的断链现象。关于链路插桩和上下文透传的具体内容我们将在实战篇进行详细介绍。下面,我们来看一个高速公路例子,进一步加深对链路追踪实现原理的认识。

一辆汽车飞驰在高速公路上

小明、小红、小玉计划在“五一”期间去自驾游,他们的旅游路线各不相同。如果我们想追踪他们的行程轨迹与时间该如何实现?

可能你会建议在每辆车上安装一个追踪器。确实,这是一种行之有效的方法。但当出行车辆扩展到全国数以十亿计的规模,安装追踪器成本就会很高。此时我们换个角度思考,高速公路的路线是固定的,每隔一段距离就会有一个收费站,如果我们在每个收费站上安装监控,记录车辆在每个收费站的轨迹与时间,就可以很经济的实现车辆轨迹与行驶时间的追踪。最终,我们得到了如下行程记录:

游客行程路线行驶距离行驶时间
小明北京 -> 石家庄 -> 郑州 -> 西安1140 公里13 小时 34 分钟
小红北京 -> 天津 -> 济南 -> 南京 -> 杭州1280 公里14 小时 33 分钟
小玉北京 -> 天津 -> 济南 -> 南京 -> 上海1234 公里13 小时 53 分钟

如果我们将每个游客替换为服务请求,收费站替换为服务接口,那我们就可以得到每次请求在分布式系统中的调用轨迹与状态,这就是分布式链路追踪的含义。

基础术语

虽然分布式链路追踪的实现方式多种多样,不同开源或商业化产品都有自己的数据模型和定义。但是仍然有一些基础术语在业界具备广泛的共识,以 OpenTracing 为例。

Trace

一条 Trace 代表一次入口请求在 IT 系统内的完整调用轨迹及其关联数据集合。其中,全局唯一的链路标识 TraceId,是最具代表的一个属性。通过 TraceId 我们才能将同一个请求分散在不同节点的链路数据准确的关联起来,实现请求粒度的“确定性关联”价值。这也是 Trace 区别于 Metrics、Log 其他两类可观测技术的关键属性。

Span

光有 TraceId 还不够,请求在每一跳的接口方法上执行了什么动作,耗时多久,执行状态是成功还是失败?承载这些信息的基础对象就是 Span。通常一个完整的 Span 具有如下属性:

Tags

SpanName 的描述通常是高度抽象的,仅仅回答这个接口是做什么的。如果需要进一步记录请求的行为特征,可以使用 Tags 来扩展语义。Tags 是一组由 {Key:Value} 组成的键值对集合,描述这一次接口调用的具体属性,比如将 UserType 添加到 Tags 中,就可以观察某一类用户(比如 VIP 用户)的链路行为状态。如果将设备类型加到 Tags 中,可以对比不同设备的性能差异。

由于 Tags 只支持结构化的 KV 键值对,因此,它可以作为标签添加到聚合后的链路指标中,有效提升监控告警的数据精度。更准确的回答异常或性能问题发生的原因,比如集中在某个地域、设备或版本。

Logs

Tags 会随着链路上下文自动向下游透传,如果希望记录一些不需要透传的事件信息,可以使用 Logs 字段。每个 Span 都可以进行多次 Logs 操作,但每个 Logs 对象都需要带有一个时间戳,Logs 的内容可以是非结构化的复杂对象。为了节省成本,一般不会对 Logs 字段建立索引,也不支持 Logs 的查询或统计,仅仅作为附加信息关联在调用链上,用于单请求诊断。

下图展示了一个 OpenTracing 的 Span 示例,不同开源实现的链路模型我们将在后续章节再展开介绍。

分布式链路追踪已经被广泛应用于中大型企业的 IT 运维领域,为分布式应用的性能诊断与稳定性保障提供了有效的帮助。此外,分布式链路追踪的开源和商业化生态也发展迅猛,大量独立服务商或云厂商纷纷跟进,共同推动了分布式链路追踪技术的崛起。

三、分布式链路追踪的应用

狭义上分布式链路追踪(Tracing)是指跟踪请求在分布式系统中的流转路径与状态,主要用途是协助开发运维人员进行故障诊断、容量预估、性能瓶颈分析与调用链路梳理等工作。技术实现上包含了数据埋点、采集、存储、分析、可视化等环节,形成了一套完整的技术体系。

而更广义的分布式链路追踪,则涵盖了由数据透传能力衍生的生态系统,比如全链路压测、微服务流量路由、业务场景链路拆分等。我们可以为调用链路赋予业务语义,也可以将一次调用生命周期内的所有数据进行关联整合,不再局限于链路数据本身。

由此可见,分布式链路追踪的应用场景广阔,潜力巨大,它的核心属性就是“关联”。然而,分布式链路追踪(Tracing)相对于统计指标(Metrics)和应用日志(Logging)来说更加难以理解,不容易运用,更难用好。接下来,我们通过一个生动形象的例子,了解下分布式链路追踪的经典用法,加深对它的技术本质的掌握。

游客、收费站和交通局

分布式链路追踪的用法有很多,但最经典、最常用的有三种,还是以上一节的高速公路为例,不同角色对应着不同的用法。

分布式链路追踪的应用和行程轨迹追踪类似,游客关心的是单次请求的轨迹回溯,收费站关注的是服务接口维度的汇总统计,旅游局则类似全局链路拓扑梳理。

单请求轨迹回溯

单请求轨迹回溯是分布式链路追踪最基础的功能,它记录了一次请求经过的所有服务节点以及对应的节点状态信息(接口名称、耗时、状态码等),这就好比记录了游客自驾游时经过的所有收费站,以及沿途的路况与行驶时间等信息。单请求轨迹回溯是诊断特定请求异常/超时原因的有效手段,可以快速定位异常节点(拥堵的收费站)。

比较成熟的 Tracing 产品(比如阿里云的应用实时监控服务ARMS)除了基础的链路数据外,还会记录请求出入参、本地方法栈、关联 SQL 与异常堆栈等信息。这些细节信息就好比车辆的型号大小、驾驶员驾龄、是否醉酒、沿途每一路段的详细路况等,当调用不符合预期(行程异常)时,就可以精准的定位根因,如下图所示:

ARMS:

https://help.aliyun.com/document_detail/64995.html

服务监控

假如你是收费站的站长,你会关注哪些信息?收费站的车辆吞吐量?平均的过闸时间?车辆的来源与去向?同理,每一个服务节点,将途经的所有调用信息汇总后,就可以得到当前服务接口的吞吐量、耗时、来源与去向等统计指标。这些指标可以帮助我们快速识别当前服务的健康状态。在实际生产系统中,还可以与告警系统结合,实现风险的快速识别与处理,降低业务损失。

链路拓扑

假如你是交通局的局长,你可能会关注全国高速公路网的整体运行状态,有哪些易拥堵或事故多发路段与站点,如何确保春运高峰期核心路段运行通畅,不会出现重大交通瘫痪事件等等。此时,你需要对所有的车辆行程轨迹进行汇总分析。

同理,链路拓扑就是将全局或某一入口服务的所有调用链路进行汇总,聚合为链路拓扑大图,进而分析当前链路的性能瓶颈点、易故障点等,提前进行性能优化或风险防控,还可以根据历史流量来指导未来(比如双 11 大促)的容量评估。

分布式链路追踪的发展现状

截止到 2021年,分布式链路追踪(Tracing)已经成为主流软件架构不可或缺的基础技术之一,它与指标(Metrics)、日志(Logging)并称为可观测领域的“三驾马车”,它们三者之间的关系如下图所示:

随着 Kubenetes 容器技术与云计算的普及,未来的软件架构会更加趋向分布式云、微服务化的方向,软件开发、部署成本将大幅下降,但是系统维护和问题诊断的难度却急剧上升。因此,分布式链路追踪以及由它提供的“确定性关联”价值将愈加凸显,如下图所示:

Tracing 在开源社区也颇受喜爱,拥有着旺盛的生命力,主流的开源标准包括 OpenTelemetry、OpenTracing、OpenCensus 和国内使用较多的 SkyWalking。其他影响力较强的实现还包括 Jaeger、Zipkin、Pinpoint 等,如下图所示。

在商业化领域,Tracing 与 APM(Application Performance Mornitoring) 密切绑定,绝大部分厂商会面向应用视角提供更加全面、易用的 APM 服务,而不仅仅是 Tracing 服务。参考 2021 年 Gartner 评测机构给出的 APM 魔力象限,可以大致评估各大厂商的 APM 与 Tracing 产品能力,如下图所示。

截止 2021年,阿里巴巴 98% 的 Java 应用(上万级别)均已接入内部自研的分布式链路追踪系统 EagleEye;阿里云上有近万家企业在持续使用 ARMS 提供的分布式链路追踪服务。而从整个业界来看,无论是谷歌、亚马逊这样的国际大厂,还是新兴的互联网公司,或是传统企业,都在大规模接入和应用分布式链路追踪技术,Tracing 生态正在蓬勃发展。

四、分布式链路追踪的挑战与限制

作为一门“新”技术,分布式链路追踪的技术演进史并不算长,仅有十数年。目前,它仍处于不断被探索、快速迭代的周期。为了更好的了解与应用分布式链路追踪技术,我们来看下它目前面临的几项关键挑战与限制。

关键挑战与应对

分布式链路追踪技术从诞生到大规模应用,中间经历了一段较长的蛰伏期,直到近几年才逐渐被大家广泛接受和认可。影响其快速推广的关键挑战包括如下几点:

无论是在不同组件接口上进行插桩埋点,还是保证链路上下文能够正确传播,亦或是搭建一套稳定可靠的链路数据后端处理系统,都不是一件易事,需要投入大量的研发人力。

由于链路数据与请求流量成正比,每一次请求都会记录相应的链路日志,当系统流量爆炸式增长,相应的链路数据生成、采集、处理、存储、查询的成本也会急剧上升,带来巨大的 IT 资源开销。

基础的链路数据仅仅表达了接口间的调用依赖,没有释放足够的业务价值,难以得到领导和同事们的全力支持。

分布式链路追踪发展前期没有统一的业界标准,各家厂商百花齐放,虽然一定程度上促进 Tracing 技术的多元化探索,但也为链路融合、迁移和推广带来了巨大的挑战。

当然,挑战同样也是机遇,为了应对上述问题,分布式链路追踪近几年实现了如下技术突破:

类似 JavaAgent 的探针插桩技术,实现了 0 代码入侵,0 改造成本的链路自动埋点,而类似 SkyWalking 的开源实现还提供了端到端的一体化解决方案,从链路数据生成到最后的可视化,中小企业可以快速搭建并享受到分布式链路追踪技术的价值,大幅降低了 Tracing 的前期建设成本和接入门槛。

链路采样策略,例如固定比例采样、限流采样、错慢全采、自定义标签采样等,可以大幅降低链路数据的传输、处理、存储成本;结合用户网络内的指标聚合,长文本编码/压缩等边缘计算技术,可以合理控制分布式链路追踪的数据成本,保障链路系统持续健康运转。

单条链路的价值难以凸显,但是基于成千上万条链路的聚合/关联分析却能快速定位,导致系统异常的关键因素,比如版本、地域、用户类型等。同时,结合业务、容器、基础设施等其他层面的可观测数据,建立一套端到端、立体化的可观测体系,能够更加有效地释放分布式链路追踪的技术价值。

自从 2019 年 OpenTelemetry 开源立项,得到了两大主流开源实现 OpenTracing 和 OpenCensus 的大力支持,开启了可观测性的新时代。虽然,目前 OpenTelemetry 仅在 Tracing 领域拥有比较完善的技术标准,Metrics 和 Logging 仍在探索阶段,但是可观测性“三驾马车”融合一统的趋势已经势不可挡。未来基于统一完善的可观测数据标准,分布式链路追踪的“确定性关联”将得到更加广泛的应用。

现阶段能力限制

分布式链路追踪现有的模型设计与实现,可以有效满足许多经典场景的分布式诊断诉求。但是,仍然有大量场景超出了现阶段分布式链路追踪的能力范畴,需要我们去探索更好的方案。

树形 YES!图形 NO!

前文介绍了分布式链路追踪是通过 ParentSpanId 和 SpanId 来标识依赖关系,从而准确还原链路层级与顺序。但是,每个 Span 有且仅有一个 ParentSpanId,这就限制了所有链路形态只能是单个父节点的树形结构,而不能是多个父节点的图形结构。

某些系统为了提供重复调用的效率,会将多次 RPC 调用打包成一次 RPC 调用合并发送,这种入度大于1的图形结构,就无法通过调用链真实还原调用状态,而是会被拆成多条调用链,如下图所示:

人工插桩 YES!智能插桩 NO!

无论是 SDK 或是 Agent 模式,目前工业界的链路插桩主要是依赖人工发现插桩点并实现插桩过程,很难通过算法自适应的实现插桩点的智能发现。然而,学术界在这方面已经进行了一些有意思的探索,虽然在性能开销、安全等方面还不够成熟,但是值得关注。

2019 年波士顿大学发表了一篇研究智能插桩的文章,他们实现的 Pythia 原型系统针对性能退化问题,可以自动发现更有价值的内部插桩点。例如,我们在请求一个存储系统时,可能会直接命中缓存快速返回结果,也可能未命中缓存导致加载磁盘花费了较多时间。我们仅在 RPC 层面进行插桩,只能看到请求耗时高低起伏,呈现一种双峰式的分布,但无法确认根因是什么。Pythia 通过比对分析不同的链路数据,会自动发现影响性能的潜在插桩点,比如慢请求可能会额外调用一次 fetchFromDisk 方法,从而更清晰的解释影响请求耗时的根因,如下图所示。

分布式链路追踪的能力限制远不止以上两种场景,在离线分析、机器学习等多个领域也等待我们去探索攻克。我们既要充分发挥现有的分布式链路追踪技术价值,解决当下的企业运维困难;同时也要把视野放宽,在未来更多的领域中去拓展分布式链路追踪的边界。

五、预告

在完整介绍分布式链路追踪的前世今生以及基础概念之后,在接下来的章节我们将通过实际使用场景,详细介绍分布式链路追踪的基础用法,包括:

更多内容,敬请期待!

点击此处了解更多产品体验

基础篇丨链路追踪(Tracing)其实很简单

2023-03-30 14:14:55

天天日报丨汨罗江在哪里?汨罗江是湘江的支流吗?汨罗江的源头在哪里?

2023-03-30 13:01:53

湖北二类大学有哪些是公办的学校_湖北二类大学 环球报道

2023-03-30 12:11:40

当前焦点!今年前两个月我国物流需求恢复加快

2023-03-30 11:20:19

每日热讯!马斯克等千人发表公开信 呼吁暂时暂停训练高级AI

2023-03-30 10:55:26

护资准考证打印2023

2023-03-30 10:19:21

3月30日生意社乙二醇基准价为4130.00元/吨 快看

2023-03-30 09:31:42

美贫富鸿沟越来越深

2023-03-30 08:25:13

今天沈阳最高气温20℃ 春来晴暖宜通风 今日报

2023-03-30 07:13:21

天天热门:ESPN:尽管被建议关闭社媒,但马奎尔有时仍过分关注社媒批评

2023-03-30 04:09:16

全球观速讯丨粉笔试水直播带货“B面”:教培转型直播电商过得好吗?

2023-03-29 23:41:32

天天新动态:OPPO Find X6 Pro上手体验:搭载超光影三主摄 实现三倍夜景创作自由

2023-03-29 22:06:30

拼多多称数十家品牌遭“炸店” 平台小二:已固定证据

2023-03-29 20:47:45

股票行情快报:味知香(605089)3月29日主力资金净买入130.83万元_世界快播报

2023-03-29 20:06:56

环球焦点!股票行情快报:赛伦生物(688163)3月29日主力资金净买入84.16万元

2023-03-29 19:00:36

焦点热门:米饭是凉性还是热性_米饭属于凉性还是热性的食物呢

2023-03-29 17:59:16

小米最强旗舰!小米13 Ultra 4月发_焦点日报

2023-03-29 17:21:59

天天实时:一年一度的“相亲大会”,他们无心恋爱只想硬核出圈~

2023-03-29 16:18:42

身边榜样|侯米玲:用心提升大家的幸福感|观热点

2023-03-29 15:32:57

第八批国采中采购额最大品种:华北制药、康恩贝等9家企业中标-全球观察

2023-03-29 14:19:09

全球短讯!瑞丰银行2022年净利润增长20.20% 中间业务收入持续为负

2023-03-29 13:09:23

河北唐山:落实“双减”课后服务 传承非遗文化-天天最资讯

2023-03-29 11:58:29

【五城同创 共建美丽云梦】志愿巡河 改善河湖生态环境

2023-03-29 11:21:24

世界快播:安踏连续第八年发布ESG报告,有哪些新材料值得我们关注?

2023-03-29 10:38:56

河北29条(个)河湖入选母亲河复苏行动河湖名单(2022—2025年)

2023-03-29 10:14:26

经济日报:深挖改善性住房需求潜力

2023-03-29 09:03:17

辽宁省大连市2023-03-29 05:30发布大雾橙色预警 看热讯

2023-03-29 07:45:41

国家统计局:1-2月全国规模以上工业企业实现利润总额8872.1亿元 同比下降22.9% 焦点热闻

2023-03-29 06:07:58

公安部印发《加强新时代公安派出所工作三年行动计划》

2023-03-29 00:55:36

真八核

2023-03-28 22:37:00

因税务欺诈问题 法国监管机构突击检查法巴银行与法兴银行等机构 今日热门

2023-03-28 21:04:48

1996年nba选秀顺位排名_1996年nba选秀

2023-03-28 19:41:17

十三个原因第二季解说全集_十三个原因第二季

2023-03-28 19:05:22

美元/日元盘中分析 当日内: 调整。-世界快看

2023-03-28 18:16:09

天天最新:巨量广告升级版:巨量引擎下一代创意型自动化投放平台

2023-03-28 17:09:45

【世界热闻】环球热消息:曾因重男轻女遭家暴,39岁生娃老公被拍与美女暧昧,秋瓷炫今想靠浪姐4逆袭人生?

2023-03-28 16:18:00

全球新动态:酷!漫威《上气》男主刘思慕现身活动,穿西装梳背头秒变气质帅哥

2023-03-28 15:02:30

即时看!百特瓷砖怎么样_美陶瓷砖怎么样

2023-03-28 13:55:07

梁朝伟获威尼斯电影节终身成就金狮奖|天天百事通

2023-03-28 12:07:35

文旅部:新增滨海新区智慧山等15家国家级文化产业示范园区

2023-03-28 11:07:30

中国奥园整体债务重组提速-世界播资讯

2023-03-28 09:58:54

一众盟友山呼“盟主”,美国还好意思吗?

2023-03-28 08:50:27

都是“均衡风格”优秀基金,为什么业绩差异这么大? 每日热闻

2023-03-28 07:12:21

乳腺彩超检查多少钱一次_乳腺彩超多少钱_每日焦点

2023-03-28 03:57:27

2015央视春晚节目单问周杰伦(2015央视春晚节目单)

2023-03-27 23:26:52

虎彩印艺拟为子公司不高于3100万的融资租赁授信额度提供连带责任保证担保

2023-03-27 21:27:20

天天观点:如何鉴别面粉质量好坏 如何鉴别面粉质量好坏

2023-03-27 20:01:32

2023年3月27日上海市异丁醇价格最新行情预测

2023-03-27 18:04:16

已经到了退休年龄但是又签了劳动合同,现在合同没有到期老板把我辞退了,请

2023-03-27 17:28:25

云南撑起万千物种的保护伞

2023-03-27 16:09:24

长沙县“银龄共创富 爱满浔龙河”活动举行

2023-03-27 14:45:51

密洛陀野生干红葡萄酒 密洛陀

2023-03-27 13:06:41

蜢子虾酱怎么吃最好吃_虾酱怎么吃最好吃|环球快讯

2023-03-27 11:50:20

伊利营养2030项目捐赠活动暨“红气球校园挑战赛”在云南鲁甸鹊落小学举行-世界观焦点

2023-03-27 10:37:05

龙卷风袭击美国南部多地 密西西比州进入“重大灾难状态”

2023-03-27 09:42:56

【全球报资讯】石评梅介绍石评梅_石评梅的介绍

2023-03-27 07:58:02

小小英雄在哪升级(小小英雄在哪里查看)_观察

2023-03-27 05:04:42

全面降准正式落地!6000亿资金入市,影响多大?

2023-03-26 23:58:14

《生化危机》急救喷雾为何叫“娃哈哈”?因为治疗效果太离谱了|环球热闻

2023-03-26 21:11:22

即时:脆哨是啥_脆哨简单介绍

2023-03-26 18:55:24

丹麦邀请“北溪”俄方运营商参与打捞水下可疑物体 俄方表示欢迎

2023-03-26 17:04:14

天天最资讯丨巍怎么读

2023-03-26 14:22:54

中银证券给予青岛啤酒买入评级 结构性升级趋势延续 费用率同比下降

2023-03-26 14:27:06

环球观速讯丨天真只为书卷香——在《读者》插图中感受艺术之美

2023-03-26 11:56:19

环球今头条!谁是好家长 孩子说了算

2023-03-26 09:56:43

微资讯!乌七八糟打一生肖

2023-03-26 07:04:56

过小年要吃什么_过小年要吃的东西

2023-03-26 06:54:38

全球视点!晨诵课 五年级下册_对于晨诵课 五年级下册简单介绍

2023-03-26 01:50:50

贵粤荟·广州馆开馆 助贵州对接拓展大湾区市场|每日快播

2023-03-25 21:47:15

凉性食物有哪些菜_凉性食物有哪些

2023-03-25 19:02:52

今头条!朋友请听好怎么收听

2023-03-25 17:47:01

世界热消息:足协王小平落网留下两大悬念,争议罚单或翻案,联赛冠军恐被查

2023-03-25 16:27:23

突发!再放利好,究竟能为海门买房人省多少? 天天精选

2023-03-25 14:15:41

世界视讯!怡亚通正式进军商用车 发布末端配送纯电微型物流车eD1 MINI

2023-03-25 11:50:43

如何网上购买石家庄植物园门票

2023-03-25 10:13:36

【全球新视野】送锦旗都不为过!30工龄包工头总结41个装修教训,句句戳点子上!

2023-03-25 10:07:06

【环球聚看点】唯登诗树 双子的事情_唯登诗树

2023-03-25 07:52:19

夏河叶航_夏河 叶航 焦点消息

2023-03-25 04:11:27

全球简讯:民生银行: 中国民生银行关于收到上海证券交易所《关于中国民生银行股份有限公司向不特定对象发行可转换公司债券申请文件的审核问询函》的公告

2023-03-24 23:57:15

环球微头条丨紫金矿业:2022年归母净利同比增27.88%至200.42亿元 拟10派2元 2023年计划矿产铜95万吨等

2023-03-24 21:25:55

每日消息!都市小说排行榜前10名

2023-03-24 21:27:16

式量有单位吗_式量

2023-03-24 19:42:12

阿牛智投“净值化投顾服务” 助投资者成为自己的基金经理

2023-03-24 18:22:23

《北京市未成年人保护条例(修订草案)》二审 对未成年人保护做出多项具体规定

2023-03-24 16:51:53

环球今日讯!国足和亚运队一平一负,新人展现新气象,中国男足重新起航再出发

2023-03-24 16:05:12

【prometheus】-04 轻松搞定Prometheus Eureka服务发现

2023-03-24 14:20:52

2021年农历六月份好日子一览表,哪几天是黄道吉日?

2023-03-24 13:51:30

宣传单设计用什么软件_宣传单彩页设计用什么软件好

2023-03-24 12:39:12

每日看点!鹤峰县人民法院积极探索“行政案件圆桌式化解机制”改革

2023-03-24 11:19:44

有时候,你不得不佩服美国政客的水平,他们都是“大预言家”。 今日热文

2023-03-24 10:16:59

市场定位的概述

2023-03-24 09:19:58

中证科技:连续3日融资净买入累计34.97万元(03-23)

2023-03-24 08:00:40

是鬼迷了心窍也好是哪首歌

2023-03-24 06:27:10

曹丕故意刁难曹植,被他轻易化解

2023-03-24 04:50:17

滚动:【崩坏3同人文】 第四章-西琳

2023-03-24 00:07:13

微信没有好友帮解封怎么办_2019微信解封没有好友辅助怎么办-天天快资讯

2023-03-23 21:56:18

环球热资讯!阿特兹12项隐藏功能是什么

2023-03-23 19:56:46

【快播报】德俊数码专营店90%的人庆幸看了,内幕揭秘对比评测

2023-03-23 18:13:21

12.995亿元!上海大华“摇号”摘得昌平朱辛庄0028地块|焦点信息

2023-03-23 17:14:22

美术教育是什么专业_全球动态

2023-03-23 16:52:52