提交 087cbf54 编写于 作者: X xiongchun

update docs

上级 9597d3b2
......@@ -12,7 +12,7 @@ slug: /advanced-guide/data-persistance
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
盘古开发数据持久化 API 依赖 MyBatis Plus 提供。在 MyBatis 的基础上提供了强大的内置通用 Mapper CRUD 操作、支持 Lambda 表达式、内置屏蔽不通数据库方言差异的分页插件、自动填充字段值、多种主键自动生成策略、逻辑删除、乐观锁插件等。
盘古开发框架数据持久化 API 依赖 MyBatis Plus 提供。在 MyBatis 的基础上提供了强大的内置通用 Mapper CRUD 操作、支持 Lambda 表达式、内置屏蔽不通数据库方言差异的分页插件、自动填充字段值、多种主键自动生成策略、逻辑删除、乐观锁插件等。
<details>
<summary><b>快速 QA:</b>可以支持兼容哪些数据库类型?</summary>
......
......@@ -16,9 +16,7 @@ import TabItem from '@theme/TabItem';
## 数据分片背景
随着业务规模不断的扩大,将数据集中存储到单一节点的解决方案,在**性能****可用性****运维成本**等方面已经难于满足高并发和海量数据系统的场景。从性能方面来说,高并发访问请求使得集中式数据库成为系统的最大瓶颈;从可用性的方面来讲,单一数据节点或简单主从架构,已经越来越难以满足互联网 To C 业务对高可用的迫切诉求,数据库的可用性俨然已成为整个系统的关键;从运维成本和系统风险方面考虑,当一个数据库实例中的数据达到临界阈值以上,数据备份和恢复的时间成本和风险都将随着数据量的大小而愈发不可控。
数据分片将存放在单一库中的数据分散至多个库或表中以达到提升性能、提高可用性和降低运维成本的效果,是应对高并发和海量数据系统的有效手段。
随着业务规模不断的扩大,将数据集中存储到单一节点的解决方案,在**性能****可用性****运维成本**等方面已经难于满足高并发和海量数据系统的场景。从性能方面来说,高并发访问请求使得集中式数据库成为系统的最大瓶颈;从可用性的方面来讲,单一数据节点或简单主从架构,已经越来越难以满足互联网 To C 业务对高可用的迫切诉求,数据库的可用性俨然已成为整个系统的关键;从运维成本和系统风险方面考虑,当一个数据库实例中的数据达到临界阈值以上,数据备份和恢复的时间成本和风险都将随着数据量的大小而愈发不可控。数据分片将存放在单一库中的数据分散至多个库或表中以达到提升性能、提高可用性和降低运维成本的效果,是应对高并发和海量数据系统的有效手段。
## 数据分片概念
......@@ -151,7 +149,7 @@ comment '逻辑表:订单表';
### 本地配置
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center)章节。
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center) 章节。
```jsx
spring.application.name=pangu-examples-shardingsphere-sharding
......@@ -234,7 +232,7 @@ public void routingQuery() {
### 本地配置
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center)章节。
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center) 章节。
```jsx
spring.application.name=pangu-examples-shardingsphere-sharding
......@@ -317,7 +315,7 @@ public void routingQuery() {
### 本地配置
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center)章节。
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center) 章节。
```jsx
spring.application.name=pangu-examples-shardingsphere-sharding
......
......@@ -29,10 +29,10 @@ import TabItem from '@theme/TabItem';
### 读写分离后面临的问题
对于一般的简单理解,读写分离就是 DQL 请求走从库,DML 请求走主库。但对于开发人员而言,在实际开发中还需要考虑如下问题。
- **主从数据同步延迟问题**
因为我们主从同步是异步复制的,不可避免的会有延迟。因此有可能出现 mastre 节点已经写入,但是从 slave 节点读取不到数据的问题。解决方法见后续章节:[读操作强制走主库](#读操作强制走主库)[事务方法里的所有读写操作都自动走主库](#事务方法里的所有读写操作都自动走主库)
因为我们主从同步是异步复制的,不可避免的会有延迟。因此有可能出现 mastre 节点已经写入,但是从 slave 节点读取不到数据的问题。解决方法见后续测试用例章节:读操作强制走主库和事务方法里的所有读写操作都自动走主库
- **事务问题**
如果一个事务方法里既包含有 DML 请求也有 DQL 请求,如果读请求走从库写请求走主库的话,则势必会带来分布式事务的问题。但对于大部分读写分离场景而言,很显然我们并不希望为了读写分离而去处理分布式事务的问题。因此对于读写分离,恰当的做法是将事务方法中的所有 SQL 请求统一都走主库,将跨库的分布式事务转为本地事务来处理。见后续章节:[事务方法里的所有读写操作都自动走主库](#事务方法里的所有读写操作都自动走主库)。(如果对于分布式场景下的分布式事务问题的处理感兴趣,可以参考:[盘古框架分布式事务最佳实践](/docs/advanced-guide/distributed-transaction)
如果一个事务方法里既包含有 DML 请求也有 DQL 请求,如果读请求走从库写请求走主库的话,则势必会带来分布式事务的问题。但对于大部分读写分离场景而言,很显然我们并不希望为了读写分离而去处理分布式事务的问题。因此对于读写分离,恰当的做法是将事务方法中的所有 SQL 请求统一都走主库,将跨库的分布式事务转为本地事务来处理。见后续测试用例章节:事务方法里的所有读写操作都自动走主库。(如果对于分布式场景下的分布式事务问题的处理感兴趣,可以参考:[盘古框架分布式事务最佳实践](/docs/advanced-guide/distributed-transaction)
### 相关专业术语
......
......@@ -29,7 +29,7 @@ slug: /advanced-guide/nacos-regist-center
![盘古开发框架注册中心图示](/resources/doc/8-pangu-framework-nacos.png)
## 注册中心实战
请参本指南的 [快速开始->如何开发微服务](/docs/quick-start/how-to-make-microservice-architecture-app) 章节,那里已经详细完整的讲解了服务注册&服务发现的相关内容。
请参本指南的 [快速开始->如何开发微服务](/docs/quick-start/how-to-make-microservice-architecture-app) 章节,那里已经详细完整的讲解了服务注册&服务发现的相关内容。
## 下一步
继续阅读其它章节获取你想要的答案或通过我们的 [开发者社区](/community) 寻求更多帮助。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册