当前位置: 首页 > news >正文

网站建设实践收获类似谷德设计网的网站

网站建设实践收获,类似谷德设计网的网站,开发公司名字,网站建设在哪里接单1 引言 最近在使用Sharding-JDBC实现项目中数据分片、读写分离需求#xff0c;参考官方文档#xff08;Sharding官方文档#xff09;感觉内容庞杂不够有条理#xff0c;重复内容比较多#xff1b;现结合项目应用整理笔记如下供大家参考和自己回忆使用#xff1b; 在…1 引言 最近在使用Sharding-JDBC实现项目中数据分片、读写分离需求参考官方文档Sharding官方文档感觉内容庞杂不够有条理重复内容比较多现结合项目应用整理笔记如下供大家参考和自己回忆使用       在实现基于分布式数据库的应用系统ShardingShpere系列产品还是相当不错和成熟的本文重点讲述其第一款产品Sharding-JDBC的快速使用。       ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar计划中这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。ShardingSphere定位为关系型数据库中间件旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力而并非实现一个全新的关系型数据库。 1.1 Sharding-JDBC介绍 Sharding-JDBC是ShardingSphere的第一个产品也是ShardingSphere的前身。 它定位为轻量级Java框架在Java的JDBC层提供的额外服务。它使用客户端直连数据库以jar包形式提供服务无需额外部署和依赖可理解为增强版的JDBC驱动完全兼容JDBC和各种ORM框架。 1.2 Sharding-JDBC特点 适用于任何基于JDBC的ORM框架如JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。支持任何第三方的数据库连接池如DBCP, C3P0, BoneCP, Druid, HikariCP等。支持任意实现JDBC规范的数据库。目前支持MySQLOracleSQLServerPostgreSQL以及任何遵循SQL92标准的数据库。 Sharding-JDBC的优势在于对Java应用的友好度。 2 快速使用 这里重点讲述数据分片、读写分离 2.1 数据分片 传统的应用将数据集中存储至单一数据节点的解决方案在性能、可用性和运维成本这三方面已经难以应对数据海量的场景所以数据分片的概念就适时提出。       数据分片指按照某个维度将存放在单一数据库中的数据分散地存放至多个数据库或表中以达到提升性能瓶颈以及可用性的效果。数据分片的有效手段是对关系型数据库进行分库和分表。分库和分表均可以有效的避免由数据量超过可承受阈值而产生的查询瓶颈。除此之外分库还能够用于有效的分散对数据库单点的访问量分表虽然无法缓解数据库压力但却能够提供尽量将分布式事务转化为本地事务的可能一旦涉及到跨库的更新操作分布式事务往往会使问题变得复杂。使用多主多从的分片方式可以有效的避免数据单点从而提升数据架构的可用性。 2.1.1 分片算法 通过分片算法将数据分片支持通过、、、、、between和in分片。分片算法需要应用开发者自行实现可实现的灵活度非常高目前提供4种分片算法。 PreciseShardingAlgorithm精确分片算法用于处理使用单一键作为分片键的或in进行分片的场景。需要配合StandardShardingStrategy使用RangeShardingAlgorithm范围分片算法用于处理使用单一键作为分片键的BETWEEN AND、、、、进行分片的场景。需要配合StandardShardingStrategy使用ComplexKeysShardingAlgorithm复合分片算法用于处理使用多键作为分片键进行分片的场景包含多个分片键的逻辑较复杂需要应用开发者自行处理其中的复杂度。需要配合ComplexShardingStrategy使用HintShardingAlgorithmHint分片算法用于处理使用Hint行分片的场景。需要配合HintShardingStrategy使用。 2.1.2 分片策略 分片策略分片键分片算法。目前提供5种分片策略。 StandardShardingStrategy标准分片策略提供对SQL语句中的, , , , , IN和BETWEEN AND的分片操作支持。StandardShardingStrategy只支持单分片键提供PreciseShardingAlgorithm和RangeShardingAlgorithm两个分片算法。PreciseShardingAlgorithm是必选的用于处理和IN的分片。RangeShardingAlgorithm是可选的用于处理BETWEEN AND, , , , 分片如果不配置RangeShardingAlgorithmSQL中的BETWEEN AND将按照全库路由处理。ComplexShardingStrategy复合分片策略提供对SQL语句中的, , , , , IN和BETWEEN AND的分片操作支持。ComplexShardingStrategy支持多分片键由于多分片键之间的关系复杂因此并未进行过多的封装而是直接将分片键值组合以及分片操作符透传至分片算法完全由应用开发者实现提供最大的灵活度。InlineShardingStrategy行表达式分片策略使用Groovy的表达式提供对SQL语句中的和IN的分片操作支持只支持单分片键。对于简单的分片算法可以通过简单的配置使用从而避免繁琐的Java代码开发如: t_user_$-{u_id % 8} 表示t_user表根据u_id模8而分成8张表表名称为t_user_0到t_user_7。HintShardingStrategyHint分片策略通过Hint指定分片值而非从SQL中提取分片值的方式进行分片的策略。NoneShardingStrategy不分片策略不分片的策略。 2.1.3 数据分片例子 这里将列举一个单表含多个分片键的列表查询示例这里使用Yaml的方式进行分片配置其他方式请读者参考官方文档 分片配置 spring:shardingsphere:datasource:names: ds0ds0:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://127.0.0.1:3306/db1?characterEncodingutf8username: rootpassword: 123456sharding:default-database-strategy:inline:sharding-column: idalgorithm-expression: ds$-{0}tables:t_order:actual-data-nodes: ds$-{0}.artb_area_receivable_$-{0..10}_$-{2010..2024}databaseStrategy:standard:shardingColumn: idpreciseAlgorithmClassName: org.jeecg.common.DBShardingAlgorithmtableStrategy:complex:shardingColumns: tenant_code,yearalgorithmClassName: org.jeecg.common.TableComplexKeysShardingAlgorithmkeyGenerator:column: idtype: SNOWFLAKEprops:worker:id: 123props:sql:show: true分片算法 /*** author 一朝风月* date 2024-01-02 10:50*/ Slf4j public class TableComplexKeysShardingAlgorithm implements ComplexKeysShardingAlgorithmString {Overridepublic CollectionString doSharding(Collection collection, ComplexKeysShardingValue complexKeysShardingValue) {HashMapString, ArrayListString map (HashMapString, ArrayListString) complexKeysShardingValue.getColumnNameAndShardingValuesMap();String tenantCode map.get(tenant_code).get(0);String year map.get(year).get(0);collection.clear();collection.add(complexKeysShardingValue.getLogicTableName() _ tenantCode _ year);return collection;} }测试结果 2024-01-03 15:36:16.847 [http-nio-7006-exec-1] INFO ShardingSphere-SQL:74 - Actual SQL: ds0 ::: SELECT id,tenant_code,year,order_name,archive FROM t_order_7_2023 AND WHERE year? AND tenant_code? AND archivefalse LIMIT ? ::: [2023, 7, 10]2.2 读写分离 将数据库拆分为主库和从库主库负责处理事务性的增删改操作从库负责处理查询操作这种拆分称之为读写分离它能够有效的避免由数据更新导致的行锁使得整个系统的查询性能得到极大的改善。 Yaml配置 spring:shardingsphere:dataSources:ds_master: !!org.apache.commons.dbcp.BasicDataSourcedriverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/ds_masterusername: rootpassword: ds_slave0: !!org.apache.commons.dbcp.BasicDataSourcedriverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/ds_slave0username: rootpassword: ds_slave1: !!org.apache.commons.dbcp.BasicDataSourcedriverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/ds_slave1username: rootpassword: masterSlaveRule:name: ds_msmasterDataSourceName: ds_masterslaveDataSourceNames: - ds_slave0- ds_slave1props:sql.show: true
http://www.pierceye.com/news/219549/

相关文章:

  • wordpress文章所属栏目关键词排名优化易下拉教程
  • 网站主题咋做免费网页模板素材网站
  • 网站建设对旅游意义公众号运营策划
  • 成都专业网站制作关于论文网站开发参考文献
  • 免费做代理郑州seo招聘
  • 做网站系统更新后wordpress
  • 兰州网站建站2024免费网站推广
  • 深圳模板建站企业网站出现搜索
  • app开发网站模板该网站正在紧急升级维护中
  • 公众号编辑器365保定seo推广
  • 陕西整站关键词自然排名优化外贸获客渠道有哪些
  • 网站策划需要具备什么福州高端建站
  • 域名注册没有网站美食网页设计素材图片
  • wordpress网站在哪里修改密码ps做网站要求高吗
  • 企业网站带商城源码Audiology wordpress
  • 星月教你做网站东营城乡建设局官网
  • 镇江网站建设开发旺店通erp系统
  • 体育直播网站建设深圳制作小程序
  • 手机微信管理系统搜索引擎优化的流程是什么
  • 壁纸公司网站源码做网站价格表
  • 潜江网站设计商务科技网站建设
  • 合肥企业网站制作网站开发公司简介
  • 德州市建设小学网站文员工作内容
  • 网站域名买卖营销技巧第三季在线观看
  • 西宁市公司网站建设比较网站建设
  • 深圳网站设计公司建设部人才网站
  • 广水住房和城乡建设部网站巅峰网站建设
  • 建设智能家居网站SWOT分析商业网站有哪些
  • 相亲网站男人拉我做外汇h5特效网站欣赏
  • 网站一个多少钱有什么做同城的网站