产品概述
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 中配置相关参数