其他分享
首页 > 其他分享> > 030_实战:读写分离

030_实战:读写分离

作者:互联网

目录

内容大纲

image.png

具体实现步骤

新建一个springboot工程

image.png

引入相关依赖:sharding依赖、ssm依赖、数据库驱动

image.png
image.png

定义配置application.yml

image.png
image.png
image.png

注意问题

image.png
image.png

定义entity,mapper,controller

entity

image.png

mapper

image.png
image.png

controller

image.png

访问测试查看效果

image.png
image.png

日志查看

image.png
image.png

Props的其他相关配置

:::info
acceptor.size: # accept连接的线程数量,默认为cpu核数2倍
executor.size: #工作线程数量最大,默认值: 无限制
max.connections.size.per.query: # 每个查询可以打开的最大连接数量,默认为1
check.table.metadata.enabled: #是否在启动时检查分表元数据一致性,默认值: false
proxy.frontend.flush.threshold: # proxy的服务时候,对于单个大查询,每多少个网络包返回一次
proxy.transaction.type: # 默认LOCAL,proxy的事务模型 允许LOCAL,XA,BASE三个值,LOCAL无分布式事务,XA则是采用atomikos实现的分布式事务 BASE目前尚未实现
proxy.opentracing.enabled: # 是否启用opentracing
proxy.backend.use.nio: # 是否采用netty的NIO机制连接后端数据库,默认False ,使用epoll机制
proxy.backend.max.connections: # 使用NIO而非epoll的话,proxy后台连接每个netty客户端允许的最大连接数量(注意不是数据库连接限制) 默认为8
proxy.backend.connection.timeout.seconds: #使用nio而非epoll的话,proxy后台连接的超时时间,默认60s
:::

小结

回顾流程

:::info
ShardingSphere 的 3 个产品的数据分片主要流程是完全一致的。 核心由 SQL 解析 => 执行器优化 => SQL 路由 => SQL 改写 => SQL 执行 => 结果归并的流程组成。
:::

SQL 解析

:::info
分为词法解析和语法解析。 先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器对 SQL 进行理解,并最终提炼出解析上下文。 解析上下文包括表、选择项、排序项、分组项、聚合函数、分页信息、查询条件以及可能需要修改的占位符的标记。
:::

执行器优化

:::info
合并和优化分片条件,如 OR 等。
:::

SQL 路由

:::info
根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。
:::

SQL 改写

:::info
将 SQL 改写为在真实数据库中可以正确执行的语句。SQL 改写分为正确性改写和优化改写。
:::

SQL 执行

:::info
通过多线程执行器异步执行。
:::

结果归并

:::info
将多个执行结果集归并以便于通过统一的 JDBC 接口输出。结果归并包括流式归并、内存归并和使用装饰者模式的追加归并这几种方式。
:::

标签:实战,info,归并,读写,proxy,SQL,030,解析,路由
来源: https://www.cnblogs.com/wl3pb/p/16488999.html