2026/3/9 16:53:02
网站建设
项目流程
eyoucms教程,seo网络优化软件,深圳做网站排名公司哪家好,网站规划对网站建设起到引言初版如果我们的线上服务不重要#xff0c;一般来个单体的数据库DB来存储数据即可来。单体应用优点#xff1a;简单#xff0c;省事#xff0c;方便。
缺点#xff1a;数据并发性#xff0c;稳定性都有问题。进阶随着数据量的不断增大#xff0c;一般我们要对数据进行…引言初版如果我们的线上服务不重要一般来个单体的数据库DB来存储数据即可来。单体应用优点简单省事方便。缺点数据并发性稳定性都有问题。进阶随着数据量的不断增大一般我们要对数据进行水平切分水平切分的规则你可以简单根据用户id或者用户IP对数据进行取模实现路由功能。当然也可以增加Slave跟KeepAlived来实现高可用。主从路由但问题是如果随着业务发展目前我们2个库的性能扛不住了还要继续水平拆分造出更多库咋办你一般是如何实现丝滑扩容的呢扩容第一版停机扩容停机扩容简单直接暴力的方法。APP通知用户在某个时间段停机维护升级。新建若干个具有高可用的库。停止当前服务然后写个数据迁移程序实现把老库数据全部迁移到新库中。修改代码路由规则后重新对外提供服务。优点简单缺点中间停服务了无法保证高可用。数据切换前跟切换过程中需确保无任何出错。第二版在线双写在线双写建立好新到数据库然后接下来用户在写原有数据库到同时也写一份数据到我们的新库中。写个数据迁移程序实现旧库中的历史数据迁移到新库中。迁移过程中每次插入数据时需检测数据的更新情况。比如如果新的表中没有当前的数据则直接新增如果新表有数据并没有我们要迁移的数据新的话我们就更新为当前数据只能允许新的数据覆盖旧的数据推荐使用Canal这样到中间件。经过一段时间后需要校验新库跟旧库两边数据是否一样。如果检查到一样了则直接切换即可。优点高可用了。缺点不够丝滑来回挪动数据较大。第三版丝滑般扩容目标打算将原来到两个数据库扩容到4个。第一步修改配置修改配置修改配置信息注意旧库跟新库之间到映射关系。确保扩容后数据可以正确路由到服务器。Id % 2 0 的库变为了 id % 4 0 或 id % 4 2Id % 2 1 的库变为了 id % 4 1 或 id % 4 3第二步reload配置服务层reload配置可以重启服务也可以CLoud那样配置中心发送信号来实现重读配置文件。至此数据库的2 -- 4 扩容完成原来是2个数据库实例提供服务现在变为4个数据库实例提供服务。第三步收缩数据丝滑扩容此时 id % 4 0 跟 id % 4 2 的两个DB 还在同步数据。id % 4 1 跟 id % 4 3的两个DB还在同步数据。需做一些收尾操作。接触上面的两个同步操作。对新库新建高可用。删除冗余数据比如id % 4 0的机器中删除id % 4 2的冗余数据只为id % 4 0的数据提供服务其余三个类似操作。至此实现成倍扩容还避免来数据迁移。