Skip to content

Commit

Permalink
Preview PR pingcap/docs-cn#15975 and this preview is triggered from c…
Browse files Browse the repository at this point in the history
  • Loading branch information
Docsite Preview Bot committed Mar 21, 2024
1 parent 8472755 commit 5c40e46
Show file tree
Hide file tree
Showing 3 changed files with 245 additions and 31 deletions.
24 changes: 20 additions & 4 deletions markdown-pages/zh/tidb/master/TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
- [文档中心](https://docs.pingcap.com/zh)
- 关于 TiDB
- [TiDB 简介](/overview.md)
- [TiDB 7.5 Release Notes](/releases/release-7.5.0.md)
- [TiDB 7.6 Release Notes](/releases/release-7.6.0.md)
- [功能概览](/basic-features.md)
- [与 MySQL 的兼容性](/mysql-compatibility.md)
- [使用限制](/tidb-limitations.md)
Expand Down Expand Up @@ -40,11 +40,17 @@
- [node-mysql2](/develop/dev-guide-sample-application-nodejs-mysql2.md)
- [mysql.js](/develop/dev-guide-sample-application-nodejs-mysqljs.md)
- [Prisma](/develop/dev-guide-sample-application-nodejs-prisma.md)
- [Sequelize](/develop/dev-guide-sample-application-nodejs-sequelize.md)
- [TypeORM](/develop/dev-guide-sample-application-nodejs-typeorm.md)
- [Next.js](/develop/dev-guide-sample-application-nextjs.md)
- [AWS Lambda](/develop/dev-guide-sample-application-aws-lambda.md)
- Ruby
- [mysql2](/develop/dev-guide-sample-application-ruby-mysql2.md)
- [Rails](/develop/dev-guide-sample-application-ruby-rails.md)
- 连接到 TiDB
- GUI 数据库工具
- [MySQL Workbench](/develop/dev-guide-gui-mysql-workbench.md)
- [Navicat](/develop/dev-guide-gui-navicat.md)
- [选择驱动或 ORM 框架](/develop/dev-guide-choose-driver-or-orm.md)
- [连接到 TiDB](/develop/dev-guide-connect-to-tidb.md)
- [连接池与连接参数](/develop/dev-guide-connection-parameters.md)
Expand Down Expand Up @@ -98,7 +104,7 @@
- 第三方工具支持
- [TiDB 支持的第三方工具](/develop/dev-guide-third-party-support.md)
- [已知的第三方工具兼容问题](/develop/dev-guide-third-party-tools-compatibility.md)
- [TiDB 与 ProxySQL 集成](/develop/dev-guide-proxysql-integration.md)
- [ProxySQL 集成指南](/develop/dev-guide-proxysql-integration.md)
- 部署标准集群
- [软硬件环境需求](/hardware-and-software-requirements.md)
- [环境与系统配置检查](/check-before-deployment.md)
Expand Down Expand Up @@ -129,6 +135,7 @@
- [从大数据量 MySQL 迁移数据到 TiDB](/migrate-large-mysql-to-tidb.md)
- [从小数据量分库分表 MySQL 合并迁移数据到 TiDB](/migrate-small-mysql-shards-to-tidb.md)
- [从大数据量分库分表 MySQL 合并迁移数据到 TiDB](/migrate-large-mysql-shards-to-tidb.md)
- [从 MariaDB 迁移数据到 TiDB](/migrate-from-mariadb.md)
- [从 CSV 文件迁移数据到 TiDB](/migrate-from-csv-files-to-tidb.md)
- [从 SQL 文件迁移数据到 TiDB](/migrate-from-sql-files-to-tidb.md)
- [从 Parquet 文件迁移数据到 TiDB](/migrate-from-parquet-files-to-tidb.md)
Expand Down Expand Up @@ -433,6 +440,7 @@
- [过滤 binlog 事件](/dm/dm-binlog-event-filter.md)
- [通过 SQL 表达式过滤 DML](/dm/feature-expression-filter.md)
- [Online DDL 工具支持](/dm/dm-online-ddl-tool-support.md)
- [自定义加解密 key](/dm/dm-customized-secret-key.md)
- 迁移任务操作
- [任务前置检查](/dm/dm-precheck.md)
- [创建任务](/dm/dm-create-task.md)
Expand Down Expand Up @@ -559,6 +567,7 @@
- [双向复制](/ticdc/ticdc-bidirectional-replication.md)
- [单行数据正确性校验](/ticdc/ticdc-integrity-check.md)
- [主从集群一致性读和数据校验](/ticdc/ticdc-upstream-downstream-check.md)
- [TiCDC 行为变更说明](/ticdc/ticdc-behavior-change.md)
- 监控告警
- [基本监控指标](/ticdc/ticdc-summary-monitor.md)
- [详细监控指标](/ticdc/monitor-ticdc.md)
Expand All @@ -572,6 +581,7 @@
- [TiCDC Canal-JSON Protocol](/ticdc/ticdc-canal-json.md)
- [TiCDC Open Protocol](/ticdc/ticdc-open-protocol.md)
- [TiCDC CSV Protocol](/ticdc/ticdc-csv.md)
- [TiCDC Debezium Protocol](/ticdc/ticdc-debezium.md)
- [TiCDC Open API v2](/ticdc/ticdc-open-api-v2.md)
- [TiCDC Open API v1](/ticdc/ticdc-open-api.md)
- TiCDC 数据消费
Expand Down Expand Up @@ -654,6 +664,7 @@
- [TiDB 分布式执行框架介绍](/tidb-distributed-execution-framework.md)
- [TiDB 全局排序](/tidb-global-sort.md)
- [系统变量](/system-variables.md)
- [服务器状态变量](/status-variables.md)
- 配置文件参数
- [tidb-server](/tidb-configuration-file.md)
- [tikv-server](/tikv-configuration-file.md)
Expand Down Expand Up @@ -826,9 +837,7 @@
- [`SHOW FIELDS FROM`](/sql-statements/sql-statement-show-fields-from.md)
- [`SHOW GRANTS`](/sql-statements/sql-statement-show-grants.md)
- [`SHOW IMPORT JOB`](/sql-statements/sql-statement-show-import-job.md)
- [`SHOW INDEX`](/sql-statements/sql-statement-show-index.md)
- [`SHOW INDEXES`](/sql-statements/sql-statement-show-indexes.md)
- [`SHOW KEYS`](/sql-statements/sql-statement-show-keys.md)
- [`SHOW MASTER STATUS`](/sql-statements/sql-statement-show-master-status.md)
- [`SHOW PLACEMENT`](/sql-statements/sql-statement-show-placement.md)
- [`SHOW PLACEMENT FOR`](/sql-statements/sql-statement-show-placement-for.md)
Expand Down Expand Up @@ -959,6 +968,7 @@
- [`TIDB_HOT_REGIONS`](/information-schema/information-schema-tidb-hot-regions.md)
- [`TIDB_HOT_REGIONS_HISTORY`](/information-schema/information-schema-tidb-hot-regions-history.md)
- [`TIDB_INDEXES`](/information-schema/information-schema-tidb-indexes.md)
- [`TIDB_INDEX_USAGE`](/information-schema/information-schema-tidb-index-usage.md)
- [`TIDB_SERVERS_INFO`](/information-schema/information-schema-tidb-servers-info.md)
- [`TIDB_TRX`](/information-schema/information-schema-tidb-trx.md)
- [`TIFLASH_REPLICA`](/information-schema/information-schema-tiflash-replica.md)
Expand All @@ -975,6 +985,7 @@
- PERFORMANCE_SCHEMA
- [概述](/performance-schema/performance-schema.md)
- [`SESSION_CONNECT_ATTRS`](/performance-schema/performance-schema-session-connect-attrs.md)
- [`SYS`](/sys-schema.md)
- [元数据锁](/metadata-lock.md)
- [TiDB DDL V2](/ddl-v2.md)
- UI
Expand Down Expand Up @@ -1030,7 +1041,10 @@
- [版本发布时间线](/releases/release-timeline.md)
- [TiDB 版本规则](/releases/versioning.md)
- [TiDB 离线包](/binary-package.md)
- v7.6
- [7.6.0-DMR](/releases/release-7.6.0.md)
- v7.5
- [7.5.1](/releases/release-7.5.1.md)
- [7.5.0](/releases/release-7.5.0.md)
- v7.4
- [7.4.0-DMR](/releases/release-7.4.0.md)
Expand All @@ -1039,6 +1053,7 @@
- v7.2
- [7.2.0-DMR](/releases/release-7.2.0.md)
- v7.1
- [7.1.4](/releases/release-7.1.4.md)
- [7.1.3](/releases/release-7.1.3.md)
- [7.1.2](/releases/release-7.1.2.md)
- [7.1.1](/releases/release-7.1.1.md)
Expand All @@ -1048,6 +1063,7 @@
- v6.6
- [6.6.0-DMR](/releases/release-6.6.0.md)
- v6.5
- [6.5.8](/releases/release-6.5.8.md)
- [6.5.7](/releases/release-6.5.7.md)
- [6.5.6](/releases/release-6.5.6.md)
- [6.5.5](/releases/release-6.5.5.md)
Expand Down
67 changes: 40 additions & 27 deletions markdown-pages/zh/tidb/master/pd-microservices.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,70 @@
---
title: 使用 PD 微服务提高服务质量
title: PD 微服务
summary: 介绍如何开启 PD 微服务模式提高服务质量。
---

# 使用 PD 微服务模式
# PD 微服务

从 v8.0.0 开始,PD 支持微服务模式。该模式可将 PD 的时间戳分配和集群调度功能拆分为以下微服务单独部署,从而与 PD 的路由功能解耦,让 PD 专注于元数据的路由服务。

- TSO 微服务:为整个集群提供单调递增的时间戳分配。
- Scheduling 微服务:为整个集群提供调度功能,包括但不限于负载均衡、热点处理、副本修复、副本放置等。
- `tso` 微服务:为整个集群提供单调递增的时间戳分配。
- `scheduling` 微服务:为整个集群提供调度功能,包括但不限于负载均衡、热点处理、副本修复、副本放置等。

每个微服务都以独立进程的方式部署。当设置某个微服务的副本数大于 1 时,该微服务会自动实现主备的容灾模式,以确保服务的高可用性和可靠性。

## 使用场景

PD 微服务通常用于解决 PD 出现性能瓶颈的问题,提高 PD 服务质量。利用该特性,你可以避免以下问题:

- PD 集群压力过大而导致 TSO 分配的长尾或者抖动现象
- PD 集群压力过大而导致 TSO 分配的长尾延迟或者抖动现象
- 调度模块故障导致整个集群服务不可用的问题
- PD 自身单点瓶颈的问题

此外,当调度模块发生变更时,你可以单独更新 Scheduling 微服务,无需再对 PD 进行重启,进而不会影响集群的整体服务。
此外,当调度模块发生变更时,你可以单独更新 `scheduling` 微服务,无需再对 PD 进行重启,进而不会影响集群的整体服务。

> **注意:**
>
> 如果性能瓶颈本身不在 PD,则无需开启微服务。微服务本身会增加组件数量,提高运维成本。
> 如果集群的性能瓶颈不是 PD 引起的,则无需开启微服务。微服务本身会增加组件数量,提高运维成本。
## 使用限制

- TSO 微服务目前不支持动态启停,开启或关闭 TSO 微服务需要重启 PD 集群
- 只有 TiDB 组件支持通过服务发现直接连接 TSO 微服务,其他的组件是通过请求转发的方式,将请求通过 PD 转发到 TSO 微服务以获取时间戳。
- 当前微服务与[同步部署模式 (DR Auto-Sync) ](/two-data-centers-in-one-city-deployment.md#简介) 特性不兼容。
- 与 TiDB 系统变量 `tidb_enable_tso_follower_proxy` 不兼容。
- 由于集群中可能存在静默 Region,Scheduling 微服务在进行主备切换时,为避免冗余调度,集群可能存在最多五分钟内没有调度的现象。
- `tso` 微服务目前不支持动态启停,开启或关闭 `tso` 微服务后你需要重启 PD 集群才会生效
- 只有 TiDB 组件支持通过服务发现直接连接 `tso` 微服务,其他的组件是通过请求转发的方式,将请求通过 PD 转发到 `tso` 微服务以获取时间戳。
- [同步部署模式 (DR Auto-Sync)](https://docs.pingcap.com/zh/tidb/stable/two-data-centers-in-one-city-deployment) 特性不兼容。
- 与 TiDB 系统变量 [`tidb_enable_tso_follower_proxy`](https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_enable_tso_follower_proxy-从-v530-版本开始引入) 不兼容。
- 由于集群中可能存在静默 Region,`scheduling` 微服务在进行主备切换时,为避免冗余调度,集群可能存在最多五分钟内没有调度的现象。

## 使用方法

目前 PD 微服务仅支持通过 TiDB Operator 进行部署。部署方法请参考 [TiDB Operator 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/configure-a-tidb-cluster#部署-pd-微服务)
目前 PD 微服务支持通过 TiDB Operator 和 TiUP Playground 进行部署

- 开启微服务并重启 PD 后,PD 不再提供 TSO 分配功能,因此需要在集群中部署 TSO 微服务。
- 如果集群中部署了 Scheduling 微服务,调度功能将由 Scheduling 微服务提供。如果没有部署 Scheduling 微服务,调度功能仍然由 PD 提供。
- Scheduling 微服务支持动态切换功能。该功能默认开启(`enable-scheduling-fallback` 默认为 `true`)。如果 Scheduling 微服务进程关闭,PD 默认会继续为集群提供调度服务。
<SimpleTab>
<div label="TiDB Operator">

> **注意:**
>
> 如果 Scheduling 微服务和 PD 使用的 binary 版本不同,为防止调度逻辑出现变化,可以通过执行 `pd-ctl config set enable-scheduling-fallback false` 关闭 Scheduling 微服务动态切换功能。关闭后,如果 Scheduling 微服务的进程关闭,PD 将不会接管调度服务。这意味着,在 Scheduling 微服务重新启动前,集群将无法提供调度服务。
TiDB Operator 详细使用方法请参考以下文档:

- [部署 PD 微服务](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/deploy-tidb-operator/configure-a-tidb-cluster#部署-pd-微服务)
- [配置 PD 微服务](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/deploy-tidb-operator/configure-a-tidb-cluster#配置-pd-微服务)
- [修改 PD 微服务](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/deploy-tidb-operator/modify-tidb-configuration#修改-pd-微服务配置)
- [扩缩容 PD 微服务组件](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/deploy-tidb-operator/scale-a-tidb-cluster#扩缩容-pd-微服务组件)

</div>
<div label="TiUP Playground">

TiUP Playground 详细使用方法请参考以下文档:

- [部署 PD 微服务](/tiup/tiup-playground.md#部署-pd-微服务)

</div>
</SimpleTab>

当部署和使用 PD 微服务时,请注意以下事项:

- 开启微服务并重启 PD 后,PD 不再提供 TSO 分配功能。因此,开启微服务时,你需要在集群中部署 `tso` 微服务。
- 如果集群中部署了 `scheduling` 微服务,调度功能将由 `scheduling` 微服务提供。如果没有部署 `scheduling` 微服务,调度功能仍然由 PD 提供。
- `scheduling` 微服务支持动态切换。该功能默认开启(`enable-scheduling-fallback` 默认为 `true`)。如果 `scheduling` 微服务进程关闭,PD 默认会继续为集群提供调度服务。

如果 `scheduling` 微服务和 PD 使用的 binary 版本不同,为防止调度逻辑出现变化,可以通过执行 `pd-ctl config set enable-scheduling-fallback false` 关闭 `scheduling` 微服务动态切换功能。关闭后,如果 `scheduling` 微服务的进程关闭,PD 将不会接管调度服务。这意味着,在 `scheduling` 微服务重新启动前,集群将无法提供调度服务。

## 工具兼容性

Expand All @@ -54,11 +74,4 @@ PD 微服务通常用于解决 PD 出现性能瓶颈的问题,提高 PD 服务

- 如何判断 PD 是否达到了性能瓶颈?

在集群自身状态正常的前提下,可以查看 Grafana PD 面板中的监控指标。如果 `TiDB - PD server TSO handle time` 指标出现明显延迟上涨或 `Heartbeat - TiKV side heartbeat statistics` 指标出现大量 pending,说明 PD 达到了性能瓶颈。

## 另请参阅

- [部署 PD 微服务](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/configure-a-tidb-cluster#部署-pd-微服务)
- [配置 PD 微服务](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/configure-a-tidb-cluster#配置-pd-微服务)
- [修改 PD 微服务](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/modify-tidb-configuration#配置-pd-微服务)
- [扩缩容 PD 微服务组件](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/scale-a-tidb-cluster#扩缩容-pd-微服务组件)
在集群自身状态正常的前提下,可以查看 Grafana PD 面板中的监控指标。如果 `TiDB - PD server TSO handle time` 指标出现明显延迟上涨或 `Heartbeat - TiKV side heartbeat statistics` 指标出现大量 pending,说明 PD 达到了性能瓶颈。
Loading

0 comments on commit 5c40e46

Please sign in to comment.