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

正规漫画网站开发流程关于静态网站开发相关新闻

正规漫画网站开发流程,关于静态网站开发相关新闻,凡科如何开通网站建设,婚礼策划网站本文我们主要讲解“为什么需要分库分表#xff0c;如何实现”。 在前文中讲到了读写分离#xff0c;读写分离优化了互联网读多写少场景下的性能问题#xff0c;考虑一个业务场景#xff0c;如果读库的数据规模非常大#xff0c;除了增加多个从库之外#xff0c;还有其他…本文我们主要讲解“为什么需要分库分表如何实现”。 在前文中讲到了读写分离读写分离优化了互联网读多写少场景下的性能问题考虑一个业务场景如果读库的数据规模非常大除了增加多个从库之外还有其他的手段吗 方法总比问题多实现数据库高可用还有另外一个撒手锏就是分库分表分库分表也是面试的常客今天一起来看一下相关的知识。 分库分表的背景 互联网业务的一个特点就是用户量巨大BAT等头部公司都是亿级用户产生的数据规模也飞速增长传统的单库单表架构不足以支撑业务发展存在下面的性能瓶颈 读写的数据量限制 数据库的数据量增大会直接影响读写的性能比如一次查询操作扫描 5 万条数据和 500 万条数据查询速度肯定是不同的。 关于 MySQL 单库和单表的数据量限制和不同的服务器配置以及不同结构的数据存储有关并没有一个确切的数字。这里参考阿里巴巴的《Java 开发手册》中数据库部分的建表规约 单表行数超过 500 万行或者单表容量超过 2GB才推荐进行分库分表。 基于阿里巴巴的海量业务数据和多年实践这一条数据库规约可以认为是数据库应用中的一个最佳实践。也就是在新业务建表规划时或者当前数据库单表已经超过对应的限制可以进行分库分表同时也要避免过度设计。因为分库分表虽然可以提高性能但是盲目地进行分库分表只会增加系统的复杂度。 数据库连接限制 数据库的连接是有限制的不能无限制创建比如 MySQL 中可以使用 max_connections 查看默认的最大连接数当访问连接数过多时就会导致连接失败。以电商为例假设存储没有进行分库用户、商品、订单和交易所有的业务请求都访问同一个数据库产生的连接数是非常可观的可能导致数据库无法支持业务请求。 使用数据库连接池可以优化连接数问题但是更好的方式是通过分库等手段避免数据库连接成为业务瓶颈。 除了这些如果不进行数据库拆分大量数据访问都集中在单台机器上对磁盘 IO、CPU 负载等都会产生很大的压力并且直接影响业务操作的性能。 分库分表原理 分库分表顾名思义就是将原本存储于单个数据库上的数据拆分到多个数据库把原来存储在单张数据表的数据拆分到多张数据表中实现数据切分从而提升数据库操作性能。分库分表的实现可以分为两种方式垂直切分和水平切分。 垂直切分 垂直拆分一般是按照业务和功能的维度进行拆分把数据分别放到不同的数据库中。 垂直分库针对的是一个系统中对不同的业务进行拆分根据业务维度进行数据的分离剥离为多个数据库。比如电商网站早期商品数据、会员数据、订单数据都是集中在一个数据库中随着业务的发展单库处理能力已成为瓶颈这个时候就需要进行相关的优化进行业务维度的拆分分离出会员数据库、商品数据库和订单数据库等。 垂直分表是针对业务上的字段比较多的大表进行的一般是把业务宽表中比较独立的字段或者不常用的字段拆分到单独的数据表中。比如早期的商品表中可能包含了商品信息、价格、库存等可以拆分出来价格扩展表、库存扩展表等。 水平切分 水平拆分是把相同的表结构分散到不同的数据库和不同的数据表中避免访问集中的单个数据库或者单张数据表具体的分库和分表规则一般是通过业务主键进行哈希取模操作。 例如电商业务中的订单信息访问频繁可以将订单表分散到多个数据库中实现分库在每个数据库中继续进行拆分到多个数据表中实现分表。路由策略可以使用订单 ID 或者用户 ID进行取模运算路由到不同的数据库和数据表中。 分库分表后引入的问题 下面看一下引入分库分表后额外增加了哪些系统设计的问题。 分布式事务问题 对业务进行分库之后同一个操作会分散到多个数据库中涉及跨库执行 SQL 语句也就出现了分布式事务问题。 比如数据库拆分后订单和库存在两个库中一个下单减库存的操作就涉及跨库事务。关于分布式事务的处理我们在专栏“分布式事务”的模块中也介绍过可以使用分布式事务中间件实现 TCC 等事务模型也可以使用基于本地消息表的分布式事务实现。如果对这部分印象不深你可以回顾下前面讲过的内容。 跨库关联查询问题 分库分表后跨库和跨表的查询操作实现起来会比较复杂性能也无法保证。在实际开发中针对这种需要跨库访问的业务场景一般会使用额外的存储比如维护一份文件索引。另一个方案是通过合理的数据库字段冗余避免出现跨库查询。 跨库跨表的合并和排序问题 分库分表以后数据分散存储到不同的数据库和表中如果查询指定数据列表或者需要对数据列表进行排序时就变得异常复杂则需要在内存中进行处理整体性能会比较差一般来说会限制这类型的操作。具体的实现可以依赖开源的分库分表中间件来处理下面就来介绍一下。 分库分表中间件实现 业务中实现分库分表需要自己去实现路由规则实现跨库合并排序等操作具有一定的开发成本可以考虑使用开源的分库分表中间件。这里比较推荐 Apache ShardingSphere另外也可以参考淘宝的 TDDL 等。 其中ShardingSphere 的前身是当当开源的 Sharding-JDBC目前更名为 ShardingSphere并且已经加入 Apache 基金会。ShardingSphere 在 Sharding-JDBC 的基础上额外提供了 Sharding-Proxy以及正在规划中的 Sharding-Sidecar。其中 Sharding-JDBC 用来实现分库分表另外也添加了对分布式事务等的支持。关于 ShardingSphere 的具体应用感兴趣的同学可以去浏览 《ShardingSphere 用户手册》。 另一款 TDDLTaobao Distributed Data Layer是淘宝团队开发的数据库中间件用于解决分库分表场景下的访问路由TDDL 在淘宝大规模应用遗憾的是开源部分还不太完善社区已经很长时间都没有更新可以在 TDDL 项目仓库了解更多的信息。 总结 本文分享了分库分表相关的知识点包括分库分表的业务背景水平切分和垂直切分的不同方式分库分表以后增加的系统复杂性问题以及可以使用哪些开源的分库分表中间件解决对应问题。 你可以考察下目前项目里是否有应用分库分表以及是如何实现分库分表比如自研或者使用开源组件并且留言分享。
http://www.sadfv.cn/news/246083/

相关文章:

  • 建设银行个人网站登陆湖南省郴州市十大旅游景点排行榜
  • 做网站服务器系统如何组建一个小型局域网
  • 网站上传文件存储方式图片自动生成器
  • 网络平台怎么搭建网站广州网站建设开发设计
  • 网站商城建设报告营销策划书范文大全
  • 网站能带来什么wordpress首页代码压缩
  • 建设手机银行官方网站wordpress重装空白
  • 如何推广运营网站网站做的和别人一样违法吗
  • 天水市住房和城乡建设局网站学校网站 建设 价格
  • asp程序网站后台发布产品的时候前台怎么不显示产品名称广州公司建设网站
  • 俞润装饰做哪几个网站ps课堂网站
  • 下载学校网站模板下载地址建设部指定发布招标信息网站
  • 自己的做网站重庆南昌网站建设
  • 视频网站开发要多少钱wordpress 文章打不开
  • 静态网站模板 大气商城网站规划
  • 上街区做网站关于建立网站的计划
  • 网站百度收录突然消失了徐州铜山区
  • 江苏恒健建设集团有限公司网站怎么写微信小程序
  • 企业大型网站建设要多少钱咋样做网站
  • 做服装加工哪个网站比较好windows优化大师怎么使用
  • 北京建设网站官网热门推广平台
  • 电影网站免费建设视频网站怎么做网站引流
  • 齐齐哈尔北京网站建设南昌正规网站公司吗
  • 大连电子商务网站建设免费私人直播间 哔哩哔哩
  • 国内做外贸的网站网站开发后台需要什么技术
  • 服务器搭建网站数据库网站租用服务器价格
  • 网站后台数据库下载友情链接在线观看
  • tomcat做的网站打不开了上海外贸网站建设公司价格
  • 买一个网站多少钱岳阳市官网
  • 济南网站优化推广公司凡科网站怎么做淘宝客