请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

想知道一般企业生产环境是咋做的

老师我想问一下,项目用了sharding-JDBC去做了水平分库分表,用了3个库,那假如其中一个库挂了怎么办?这如何做到高可用?想知道一般企业生产环境是咋做的

正在回答

1回答

同学你好,具体的要看你的业务设计逻辑

1、假设你有三个数据库节点 ds0、ds1、ds2、数据库表结构是订单表,如果你是根据订单所在仓库、或地域编码等进行数据分库分表的话,则如果ds3数据源挂了,会影响你分片逻辑对应的批次数据,对于企业来讲,

      1.1、如果一直是有数据变动的情况,则立马发现比如crud路由到当前ds2接口的操作全部失败,那么就要即可去排查问题

       1.2、公司dba一般数据库操作都会有日志、数据会有备份、上下游数据联动,事件驱动一般都有消息队列,方便出问题的时候快速恢复,当然也有这个部分情况需要进行人工操作

具体情况具体分析,这个是个大的架构设计

0 回复 有任何疑惑可以回复我~
  • 提问者 慕UI7537812 #1
    emm...针对mysql,企业为啥不用类似redis cluster的方案,redis cluster可以自动转移故障,每个分片节点都有备用机器。感觉采用sharding-jdbc这种方案只是做了分片,出现故障或者扩容的时候都要手工?
    回复 有任何疑惑可以回复我~ 2023-07-06 11:49:59
  • oldA2023 回复 提问者 慕UI7537812 #2
    核心数据,还是要保存到关系型数据库才会更好哦,一般很少会有企业把redis替代关系型数据库,使用shardingjdbc这种方案,存储数据量,可以轻松过亿级,扩容是可以动态扩容的,至于故障嘛,检测是有手动,但是处理有时候需要手动处理【如果你看了第17章的话】,故障后必须重启或者寻找替代节点,但是影响的范围跟你分片规则有关,可大可小的
    回复 有任何疑惑可以回复我~ 2023-07-06 13:40:55
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信