KnowStreaming 产品介绍与实现原理

产品概述

KnowStreaming 是一套云原生的 Apache Kafka 管控平台,专注于 Kafka 运维管控、监控告警、资源治理、多活容灾等核心场景。

核心特点

零侵入、全覆盖

● 无需侵入改造 Apache Kafka,一键便能纳管 0.10.x ~ 3.x.x 众多版本的 Kafka

● 支持 ZK 或 Raft 运行模式的版本

● 在兼容架构上具备良好的扩展性 

零成本、界面化

● 提炼高频 CLI 能力,设计合理的产品路径

● 提供清新美观的 GUI 界面,支持 Cluster、Broker、Zookeeper、Topic、ConsumerGroup、Message、ACL、Connect 等组件 GUI 管理

● 普通用户 5 分钟即可上手 

云原生、插件化

● 基于云原生构建,具备水平扩展能力

● 只需要增加节点即可获取更强的采集及对外服务能力

● 提供众多可热插拔的企业级特性 

实现原理

系统架构

KnowStreaming 采用分层模块化架构设计:

graph TD
    A[前端层 km-console] --> B[API层 km-rest]
    B --> C[业务层 km-biz]
    C --> D[核心层 km-core]
    D --> E[数据层 km-persistence]
    F[任务调度 km-task] --> D
    G[指标采集 km-collector] --> D
    H[系统监控 km-monitor] --> D
    I[共享工具 km-common] --> A
    I --> B
    I --> C
    I --> D

采用微前端架构,包含两个主要应用:

● layout-clusters-fe: 主容器应用,处理多集群管理

● config-manager-fe: 子应用,处理系统管理和配置管理

使用 single-spa 框架进行微前端编排,通过 AppContainer.useGlobalValue() 管理全局状态,包括用户信息和权限控制。

后端实现原理

Kafka 集群管理

通过 KSPartialKafkaAdminClient 封装 Kafka Admin Client,实现对 Kafka 集群的操作。

指标采集与监控

● 通过 JMX 连接采集 Broker 指标

● 使用 Elasticsearch 存储时序指标数据

● 支持多维度指标观测和健康巡检

权限系统

实现基于角色的权限控制(RBAC),通过 ClustersPermissionMap 定义权限枚举,在组件级别进行权限校验 。

系统架构

KnowStreaming 采用模块化设计,包含以下核心组件:

● km-console: Web UI 前端,采用微前端架构

● km-rest: REST API 层

● km-biz: 业务逻辑编排层

● km-core: 核心服务层

● km-task: 任务调度模块

● km-collector: 指标采集模块

● km-monitor: 系统监控模块

● km-persistence: 数据访问层

● km-common: 共享工具类 

使用步骤

1. 环境准备

● 准备 Kafka 集群(0.10.x ~ 3.x.x 版本)

● 准备 Elasticsearch 7.6+ 用于指标存储

● 准备 MySQL/MariaDB 用于元数据存储

2. 部署安装

# 1. 克隆代码
git clone https://github.com/didi/KnowStreaming.git
 
# 2. 编译打包
mvn clean install -DskipTests
 
# 3. 配置数据库
# 修改 km-rest/src/main/resources/application.yml 中的数据库配置
 
# 4. 启动服务
java -jar km-rest/target/know-streaming.jar

3. 集群接入

1.  访问 Web 界面(默认 http://localhost:8080)

2.  登录系统(默认账号:admin/admin)

3.  进入”集群管理”页面

4.  点击”新增集群”,填写 Kafka 集群信息: 集群名称

a.  Bootstrap Servers

b.  JMX 端口配置

c.  认证配置(如需要)

4. 功能使用

集群监控

● 查看集群健康状态和核心指标

● 监控 Broker、Topic、Consumer Group 运行状态

Topic 管理

● 创建、删除、修改 Topic

● 查看 Topic 详情和分区分布

● 执行扩缩副本、副本迁移操作

Consumer Group 管理

● 查看 Consumer Group 列表和详情

● 监控消费延迟和消费状态

● 重置 Offset 和删除 Group 

安全管理

● 配置 ACL 权限控制

● 管理用户和凭证 

5. 高级配置

● 配置告警规则和通知渠道

● 设置指标采集频率和保留策略

● 启用集群负载均衡和自动运维功能

Notes

● KnowStreaming 支持 ZK 和 Raft 两种运行模式的 Kafka 集群 

● 从 2.x 升级到 3.x 版本时,开源协议从 Apache License 2.0 调整为 AGPL 3.0 

● 生产环境建议使用 ES 7.6 版本,并创建近 7 天的索引模板 

● 如需对接 LDAP 认证,需要在 application.yml 中配置相关参数