diff --git a/docs/user_guide/faq.md b/docs/user_guide/faq.md index 1656ec37..6af0f94e 100644 --- a/docs/user_guide/faq.md +++ b/docs/user_guide/faq.md @@ -1,13 +1,35 @@ + +![Logo](https://user-images.githubusercontent.com/71620349/185368586-aed82d30-1534-453d-86ff-ecfa9d0f35bd.png) + # FAQ -## 8.1、支持哪些 Kafka 版本? +- [FAQ](#faq) + - [1、支持哪些 Kafka 版本?](#1支持哪些-kafka-版本) + - [1、2.x 版本和 3.0 版本有什么差异?](#12x-版本和-30-版本有什么差异) + - [3、页面流量信息等无数据?](#3页面流量信息等无数据) + - [8.4、`Jmx`连接失败如何解决?](#84jmx连接失败如何解决) + - [5、有没有 API 文档?](#5有没有-api-文档) + - [6、删除 Topic 成功后,为何过段时间又出现了?](#6删除-topic-成功后为何过段时间又出现了) + - [7、如何在不登录的情况下,调用接口?](#7如何在不登录的情况下调用接口) + - [8、Specified key was too long; max key length is 767 bytes](#8specified-key-was-too-long-max-key-length-is-767-bytes) + - [9、出现 ESIndexNotFoundEXception 报错](#9出现-esindexnotfoundexception-报错) + - [10、km-console 打包构建失败](#10km-console-打包构建失败) + - [11、在 `km-console` 目录下执行 `npm run start` 时看不到应用构建和热加载过程?如何启动单个应用?](#11在-km-console-目录下执行-npm-run-start-时看不到应用构建和热加载过程如何启动单个应用) + - [12、权限识别失败问题](#12权限识别失败问题) + - [13、接入开启kerberos认证的kafka集群](#13接入开启kerberos认证的kafka集群) + - [14、对接Ldap的配置](#14对接ldap的配置) + - [15、测试时使用Testcontainers的说明](#15测试时使用testcontainers的说明) + - [16、JMX连接失败怎么办](#16jmx连接失败怎么办) + + +## 1、支持哪些 Kafka 版本? - 支持 0.10+ 的 Kafka 版本; - 支持 ZK 及 Raft 运行模式的 Kafka 版本;   -## 8.1、2.x 版本和 3.0 版本有什么差异? +## 1、2.x 版本和 3.0 版本有什么差异? **全新设计理念** @@ -23,7 +45,7 @@   -## 8.3、页面流量信息等无数据? +## 3、页面流量信息等无数据? - 1、`Broker JMX`未正确开启 @@ -41,7 +63,7 @@   -## 8.5、有没有 API 文档? +## 5、有没有 API 文档? `KnowStreaming` 采用 Swagger 进行 API 说明,在启动 KnowStreaming 服务之后,就可以从下面地址看到。 @@ -49,7 +71,7 @@ Swagger-API 地址: [http://IP:PORT/swagger-ui.html#/](http://IP:PORT/swagger-   -## 8.6、删除 Topic 成功后,为何过段时间又出现了? +## 6、删除 Topic 成功后,为何过段时间又出现了? **原因说明:** @@ -74,7 +96,7 @@ for (int i= 0; i < 100000; ++i) {   -## 8.7、如何在不登录的情况下,调用接口? +## 7、如何在不登录的情况下,调用接口? 步骤一:接口调用时,在 header 中,增加如下信息: @@ -109,7 +131,7 @@ SECURITY.TRICK_USERS 但是还有一点需要注意,绕过的用户仅能调用他有权限的接口,比如一个普通用户,那么他就只能调用普通的接口,不能去调用运维人员的接口。 -## 8.8、Specified key was too long; max key length is 767 bytes +## 8、Specified key was too long; max key length is 767 bytes **原因:** 不同版本的 InoDB 引擎,参数‘innodb_large_prefix’默认值不同,即在 5.6 默认值为 OFF,5.7 默认值为 ON。 @@ -121,13 +143,13 @@ SECURITY.TRICK_USERS - 将字符集改为 latin1(一个字符=一个字节)。 - 开启‘innodb_large_prefix’,修改默认行格式‘innodb_file_format’为 Barracuda,并设置 row_format=dynamic。 -## 8.9、出现 ESIndexNotFoundEXception 报错 +## 9、出现 ESIndexNotFoundEXception 报错 **原因 :**没有创建 ES 索引模版 **解决方案:**执行 init_es_template.sh 脚本,创建 ES 索引模版即可。 -## 8.10、km-console 打包构建失败 +## 10、km-console 打包构建失败 首先,**请确保您正在使用最新版本**,版本列表见 [Tags](https://github.com/didi/KnowStreaming/tags)。如果不是最新版本,请升级后再尝试有无问题。 @@ -161,14 +183,14 @@ Node 版本: v12.22.12 错误截图: ``` -## 8.11、在 `km-console` 目录下执行 `npm run start` 时看不到应用构建和热加载过程?如何启动单个应用? +## 11、在 `km-console` 目录下执行 `npm run start` 时看不到应用构建和热加载过程?如何启动单个应用? 需要到具体的应用中执行 `npm run start`,例如 `cd packages/layout-clusters-fe` 后,执行 `npm run start`。 应用启动后需要到基座应用中查看(需要启动基座应用,即 layout-clusters-fe)。 -## 8.12、权限识别失败问题 +## 12、权限识别失败问题 1、使用admin账号登陆KnowStreaming时,点击系统管理-用户管理-角色管理-新增角色,查看页面是否正常。 @@ -184,7 +206,7 @@ Node 版本: v12.22.12 + 解决方案:清空数据库数据,将数据库字符集调整为utf8,最后重新执行[dml-logi.sql](https://github.com/didi/KnowStreaming/blob/master/km-dist/init/sql/dml-logi.sql)脚本导入数据即可。 -## 8.13、接入开启kerberos认证的kafka集群 +## 13、接入开启kerberos认证的kafka集群 1. 部署KnowStreaming的机器上安装krb客户端; 2. 替换/etc/krb5.conf配置文件; @@ -200,7 +222,7 @@ Node 版本: v12.22.12 ``` -## 8.14、对接Ldap的配置 +## 14、对接Ldap的配置 ```yaml # 需要在application.yml中增加如下配置。相关配置的信息,按实际情况进行调整 @@ -223,6 +245,12 @@ spring: login-extend-bean-name: ksLdapLoginService # 表示使用ldap的service ``` -## 8.15、测试时使用Testcontainers的说明 +## 15、测试时使用Testcontainers的说明 + 1. 需要docker运行环境 [Testcontainers运行环境说明](https://www.testcontainers.org/supported_docker_environment/) -2. 如果本机没有docker,可以使用[远程访问docker](https://docs.docker.com/config/daemon/remote-access/) [Testcontainers配置说明](https://www.testcontainers.org/features/configuration/#customizing-docker-host-detection) \ No newline at end of file +2. 如果本机没有docker,可以使用[远程访问docker](https://docs.docker.com/config/daemon/remote-access/) [Testcontainers配置说明](https://www.testcontainers.org/features/configuration/#customizing-docker-host-detection) + + +## 16、JMX连接失败怎么办 + +详细见:[解决连接JMX失败](../dev_guide/%E8%A7%A3%E5%86%B3%E8%BF%9E%E6%8E%A5JMX%E5%A4%B1%E8%B4%A5.md) \ No newline at end of file diff --git a/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/connect/worker/impl/WorkerServiceImpl.java b/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/connect/worker/impl/WorkerServiceImpl.java index c52998f1..bb5dacc6 100644 --- a/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/connect/worker/impl/WorkerServiceImpl.java +++ b/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/connect/worker/impl/WorkerServiceImpl.java @@ -7,8 +7,8 @@ import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationBas import com.xiaojukeji.know.streaming.km.common.bean.entity.connect.ConnectWorker; import com.xiaojukeji.know.streaming.km.common.bean.entity.result.PaginationResult; import com.xiaojukeji.know.streaming.km.common.bean.po.connect.ConnectWorkerPO; -import com.xiaojukeji.know.streaming.km.common.bean.po.group.GroupMemberPO; import com.xiaojukeji.know.streaming.km.common.bean.vo.cluster.connector.ClusterWorkerOverviewVO; +import com.xiaojukeji.know.streaming.km.common.enums.jmx.JmxEnum; import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil; import com.xiaojukeji.know.streaming.km.common.utils.ValidateUtils; import com.xiaojukeji.know.streaming.km.core.service.connect.cluster.ConnectClusterService; @@ -50,6 +50,11 @@ public class WorkerServiceImpl implements WorkerService { connectWorkerDAO.insert(newPO); } else { newPO.setId(oldPO.getId()); + if (JmxEnum.UNKNOWN.getPort().equals(newPO.getJmxPort())) { + // 如果所获取的jmx端口未知,则不更新jmx端口 + newPO.setJmxPort(oldPO.getJmxPort()); + } + connectWorkerDAO.updateById(newPO); } } catch (DuplicateKeyException dke) { diff --git a/km-task/src/main/java/com/xiaojukeji/know/streaming/km/task/kafka/metadata/SyncConnectClusterAndWorkerTask.java b/km-task/src/main/java/com/xiaojukeji/know/streaming/km/task/kafka/metadata/SyncConnectClusterAndWorkerTask.java index 76fb2b99..cb886eea 100644 --- a/km-task/src/main/java/com/xiaojukeji/know/streaming/km/task/kafka/metadata/SyncConnectClusterAndWorkerTask.java +++ b/km-task/src/main/java/com/xiaojukeji/know/streaming/km/task/kafka/metadata/SyncConnectClusterAndWorkerTask.java @@ -18,6 +18,7 @@ import com.xiaojukeji.know.streaming.km.common.bean.entity.result.ResultStatus; import com.xiaojukeji.know.streaming.km.common.constant.Constant; import com.xiaojukeji.know.streaming.km.common.enums.group.GroupStateEnum; import com.xiaojukeji.know.streaming.km.common.enums.group.GroupTypeEnum; +import com.xiaojukeji.know.streaming.km.common.enums.jmx.JmxEnum; import com.xiaojukeji.know.streaming.km.core.service.connect.cluster.ConnectClusterService; import com.xiaojukeji.know.streaming.km.core.service.connect.worker.WorkerConnectorService; import com.xiaojukeji.know.streaming.km.core.service.connect.worker.WorkerService; @@ -104,7 +105,7 @@ public class SyncConnectClusterAndWorkerTask extends AbstractAsyncMetadataDispat connectClusterId, memberDescription.consumerId(), memberDescription.host().substring(1), - Constant.INVALID_CODE, + JmxEnum.UNKNOWN.getPort(), assignment.getWorkerState().url(), assignment.getAssignment().leaderUrl(), memberDescription.consumerId().equals(assignment.getAssignment().leader()) ? Constant.YES : Constant.NO @@ -115,7 +116,7 @@ public class SyncConnectClusterAndWorkerTask extends AbstractAsyncMetadataDispat connectClusterId, memberDescription.consumerId(), memberDescription.host().substring(1), - Constant.INVALID_CODE, + JmxEnum.UNKNOWN.getPort(), "", "", Constant.NO