TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

    • 各类组件
    • 通用模板
  • 国产化&其他系统

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

    • 各类组件
    • 通用模板
  • 国产化&其他系统

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)
  • 方法论

  • 代码生命周期-metainfo

    • 加载原理深度剖析[一]
    • 加载原理深度剖析[二]
    • 加载原理深度剖析[三]
    • 结构与层级深入解读
    • configFile详解[一]
    • configFile详解[二]
    • cardinality详解[一]
    • cardinality详解[二]
    • cardinality详解[三]
    • category详解[一]
    • category详解[二]
    • category详解[三]
    • theme详解[一]
    • theme详解[二]
    • theme详解[三]
    • commandScript详解[二]
    • commandScript详解[一]
    • commandScript详解[三]
    • customCommand详解[一]
    • customCommand详解[二]
    • customCommand详解[三]
    • requiredServices详解[一]
    • requiredServices详解[二]
    • osSpecifics详解[一]
    • osSpecifics详解[二]
    • osSpecifics详解[三]
    • quicklinks详解[一]
      • 1. 引言与问题概述 🎯
        • 1.1 背景介绍
        • 1.2 目标
      • 2. 核心概念解析 🧠
        • 2.1 核心逻辑
        • 2.2 渲染与配置的协作
        • 2.3 全链路穿透逻辑
    • quicklinks详解[二]
    • quicklinks详解[三]
    • quicklinks详解[四]
  • 架构剖析

  • UI样式

  • GOD-Ambari
  • 代码生命周期-metainfo
JaneTTR
2025-06-03
目录

quicklinks详解[一]

# 1. 引言与问题概述 🎯

# 1.1 背景介绍

在前文中,我们已系统性剖析了 Ambari 的多层核心实现,包括 metainfo.xml 的结构、osSpecifics 多操作系统适配、前后台协同机制等,这些知识为理解 Ambari 的工程架构和大数据平台的自动化运维打下了坚实基础。

笔记

但实际运维中,右侧组件的超链接(QuickLinks),往往被许多使用者忽略。其实,QuickLinks 提供了服务Web界面、日志入口、监控系统等一站式直达链接,是提升集群可观测性和问题定位效率的关键工具。

QuickLinks 让运维和研发可以一键访问服务主页面、日志路径、HDFS 文件、YARN UI 等,极大减少了繁琐的查找和跳转时间。

这就引出了两个关键问题自动化运维小助手:

  • 这些超链接究竟是如何“配置-解析-渲染”出来的?
  • 用户如何自定义适配自己的组件和业务?

本章将围绕这两个问题,拆解 Ambari QuickLinks 从请求触发、后端处理到前端渲染的全链路,并实战分析其底层逻辑和模板配置方法。

# 1.2 目标

本节内容旨在帮助你:

目标 说明
理解 QuickLinks 方法体系 从接口调用到参数解析,梳理后台与前端的协作流程
明确 QuickLinks 关键参数含义 如 protocol、port、component_name、url 等,掌握其实际作用及典型写法
掌握通用 QuickLinks 模板编写方法 学会编写灵活可扩展的模板,适配多组件和不同业务场景
深入掌握前后台渲染的全流程 跟踪从配置加载到最终 UI 展示的每一步实现,熟悉自定义配置的落地方式

提示

通过学习本节,你不仅能搞懂 QuickLinks 的“来龙去脉”,还能学会如何让你的平台服务一键直达 UI、运维、监控、日志等所有入口,实现运维的高效可视化和极简自动化。

# 2. 核心概念解析 🧠

# 2.1 核心逻辑

QuickLinks 的全流程实现主要包括:

  1. 请求的触发

    • 用户在 UI 点击组件后,前端会发起 HTTP 请求,访问 StacksService 提供的 QuickLinks 接口:

      @Path("{stackName}/versions/{stackVersion}/services/{serviceName}/quicklinks")
      
      1
    • 请求参数包括 stackName、stackVersion、serviceName,精确锁定组件。

  2. 后台解析逻辑

    • 服务端根据请求参数,自动定位 metainfo.xml 配置和 QuickLinks 模板文件。

    • 若 metainfo.xml 指定了特殊 quicklinks 配置目录,则读取该目录下的 quicklinks.json,否则默认查找同名目录。

    • 解析 quicklinks.json 的核心实现位于 QuickLinksConfigurationModule:

      QuickLinks quickLinksConfig = mapper.readValue(reader, QuickLinks.class);
      
      1
    • QuickLinksConfigurationInfo 对象将存储所有模板参数、协议、端口、占位符信息,方便后续模板动态填充。

  3. 前端渲染

    • 服务端将 QuickLinks 配置以 JSON 形式返回,前端收到数据后,开始渲染流程。

    • 主要包含:

      • 解析 protocol、host、port 等动态参数
      • 用 %@ 占位符进行 URL 动态拼接(可同时支持单主机/多主机/HA)
      • 根据组件实际状态,动态生成全部可用超链接

提示

QuickLinks 实现了一种“配置即页面”的理念,极大提升了平台的灵活性和兼容性。运维只需改动 JSON 配置,无需改动代码,即可适配新服务或变更入口。

# 2.2 渲染与配置的协作

后台与前端通过接口与配置文件实现高度解耦:

职责 作用
后台 提供配置模板(JSON),定义参数结构和默认展示方式
前端 动态渲染,解析数据并根据集群部署情况展示多实例链接

QuickLinks 配置典型示例(以 DolphinScheduler UI 为例):

{
  "name": "default",
  "description": "default quick links configuration",
  "configuration": {
    "protocol": {
      "type": "http"
    },
    "links": [
      {
        "name": "dolphin_ui",
        "label": "DolphinScheduler UI",
        "requires_user_name": "false",
        "component_name": "DOLPHIN_API",
        "url": "%@://%@:%@/dolphinscheduler/",
        "port": {
          "http_property": "server.port",
          "http_default_port": "12345",
          "regex": "^(\\d+)$",
          "site": "dolphin-application-api"
        }
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

笔记

QuickLinks 支持 protocol/host/port 及 URL 自定义,并能自动适配 HA、多实例场景,是企业级集群管理不可缺少的运维利器。

关键参数释义表:

参数 说明 示例
protocol 协议类型,决定 URL 前缀 "type": "http"
component_name 组件名,和 metainfo.xml 保持一致 "component_name": "DOLPHIN_API"
url URL 模板,%@ 占位符依次为协议、主机、端口 "%@://%@:%@/dolphinscheduler/"
port.http_property 配置文件中端口属性的名称 "server.port"
port.regex 端口号正则提取方式 "^(\\d+)$"
port.site 配置文件对应的服务名 "dolphin-application-api"

# 2.3 全链路穿透逻辑

QuickLinks 的核心价值就在于“三层穿透”:

  1. 前端请求触发:用户点击即发起 QuickLinks 配置请求
  2. 后端解析返回:服务端自动合成/筛选 JSON 模板数据
  3. 前端动态渲染:根据模板及实际集群信息自动生成全部可用链接

总结

掌握 QuickLinks 的实现,不仅提升日常运维效率,也为自定义扩展和新业务接入提供坚实技术基础。 后续章节将进一步剖析模板配置的细节、动态参数适配与自定义开发实践。

#Ambari#QuickLinks#配置解析#前后端联动#运维可观测性#源码解读
osSpecifics详解[三]
quicklinks详解[二]

← osSpecifics详解[三] quicklinks详解[二]→

最近更新
01
Pandoc 缺失导致 SparkR 构建失败
06-08
02
Cyrus SASL/GSASL 缺失解决
06-07
03
Hadoop_3.3.4 编译实战 1.0.0+
06-06
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式