这知识我没见过--MySQL 服务演进_mysql业务子系统,【深度思考

2 多应用-单DB

企业具备多种小项目常见的业务形态,数据库服务需要性能相对较好

图片

3 单应用-主从DB

中型复杂业务系统常见的模式,将业务中的读操作、写操作针对不同的DB服务器,提升业务系统容量

主、从DB服务器要有合理的数据同步机制

可以直接业务中切换,也可以使用中间件

图片

图片

4 多应用-多DB

从业务的角度将应用、DB都做切分,切分成粒度更小的多个应用+DB组合

微服务就是典型的多应用-多DB的模式

图片

5 分库分表

当应用体量越来越大,部分业务的单表数据超大,如超过1000万条,此时要考虑分库分表

分库分表给应用带来了很大的复杂性,一般会使用像MyCat、ShardingSphere等中间件来处理,给业务屏蔽DB的复杂性

如何分表?

实现分表,核心的就是根据业务找到一个合理的分表键,一般要考虑几个条件:

数据能尽量均匀的分布在不同的库或表,并考虑业务增长的特性
跨度查询,尤其是跨库join查询尽量少
该分表键尽量不会变动

常用的分表键划分(分区)策略有按范围、hash、hash+范围等

分表带来的问题

跨库关联查询,如果在单库,可以方便的使用join获取关联信息、生成需要的业务报表,但分表后可能join的数据在另外一个库中;一般使用适当冗余数据、所有库都存放全局表、使用集中数据仓库处理汇总业务,以及在业务层组装等解决

分布式事务,一个库中事务好处理,跨库、跨业务的事务比较复杂;可考虑在业务层面上使用消息中间件,以及一些第三方组件Seata、TXLcn等使用两阶段提交方式处理

排序、分页、汇总等函数计算问题,需要分库计算、然后汇总,或是使用第三方组件

分布式ID,分库分表后,原有的表主键使用方式(如自增)可能会出现问题,主要解决方式有:UUID、号段模式、Redis缓存、雪花算法(SnowFlake)

第三方插件和中间件

分库分表后,业务系统中实现对多个数据源的数据操作实际很复杂

有业界的第三方插件或中间件来解决前述分库分表带来的问题

ShardingSphere:Apache的开源的一个项目,需要嵌入到业务系统代码中进行处理,有基于Spring Boot的工具,对代码有侵入
MyCat:是在业务系统与分库分表多数据源中间架设一个中间层来实现,对代码无侵入

在这里还是要推荐下我自己建的软件测试学习Q群:746506216,群里都是学测试的,如果你想学或者正在学习测试,欢迎你加入,大家都是测试党,不定期分享干货(只有软件测试相关的),包括我自己整理的一份2022最新的Python自动化测试进阶资料和零基础教学,欢迎进阶中和对测试感兴趣的小伙伴加入!

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

6035708)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值