采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师我想问一下,项目用了sharding-JDBC去做了水平分库分表,用了3个库,那假如其中一个库挂了怎么办?这如何做到高可用?想知道一般企业生产环境是咋做的
同学你好,具体的要看你的业务设计逻辑
1、假设你有三个数据库节点 ds0、ds1、ds2、数据库表结构是订单表,如果你是根据订单所在仓库、或地域编码等进行数据分库分表的话,则如果ds3数据源挂了,会影响你分片逻辑对应的批次数据,对于企业来讲,
1.1、如果一直是有数据变动的情况,则立马发现比如crud路由到当前ds2接口的操作全部失败,那么就要即可去排查问题
1.2、公司dba一般数据库操作都会有日志、数据会有备份、上下游数据联动,事件驱动一般都有消息队列,方便出问题的时候快速恢复,当然也有这个部分情况需要进行人工操作
具体情况具体分析,这个是个大的架构设计
emm...针对mysql,企业为啥不用类似redis cluster的方案,redis cluster可以自动转移故障,每个分片节点都有备用机器。感觉采用sharding-jdbc这种方案只是做了分片,出现故障或者扩容的时候都要手工?
核心数据,还是要保存到关系型数据库才会更好哦,一般很少会有企业把redis替代关系型数据库,使用shardingjdbc这种方案,存储数据量,可以轻松过亿级,扩容是可以动态扩容的,至于故障嘛,检测是有手动,但是处理有时候需要手动处理【如果你看了第17章的话】,故障后必须重启或者寻找替代节点,但是影响的范围跟你分片规则有关,可大可小的
登录后可查看更多问答,登录/注册
商业级小程序 开发仿社交实战
395 6
390 3
382 3
444 3
585 3