微处事架构下,操作Sharding-jdbc办理读写疏散查询耽误题目
媒介当Mysql数据库数据到达必然量后,查询SQL执行会变慢起来,除了建索引、优化措施代码以及SQL语句等通例本领外,操作经典MHA数据库中间件做数据库读写疏散是一个不错的选择。可是在读写疏散架构中会呈现一个共性题目:SQL读取耽误。 读写及时场景好比在微处事应用端新增一条营业数据,然后当即读取,这个时辰会碰着读取不到环境! 为什么呢? ![]() 来历收集 由于在读写疏散架构中,主节点认真写入数据,同时mysql操作多线程技能把数据同步到从节点,从节点认真应用端读取哀求。 而Mysql主从数据同步数据存在同步时刻差,带来的题目是从节点同步不到主节点(Master)数据,应用端从从节点(Slave)读取不到新增的数据环境。 办理方案操作官方HintManager 分片键值打点器, 逼迫路由到主库查询 ![]() 通过挪用hintManager.setMasterRouteOnly() 逼迫路由到主库查询,伪代码如下:
通过逼迫路由到主库查询有个风险,对付更新并及时查询营业场景较量多,假如都切到主库查询,势必会对主库处事器机能造成影响,也许还影响主从数据同步,以是要按照现实营业场景评估回收这种方法带来的处事器机能题目。 其它,假如营业层面可以做妥协的话,只管镌汰这种更新并及时查询方法,一种思绪是及时更新库,操作线程异步查询(譬喻更新后,就寝1-2秒再查询),伪代码如下:
【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |