加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

微处事架构下,操作Sharding-jdbc办理读写疏散查询耽误题目

发布时间:2019-09-18 15:46:32 所属栏目:编程 来源:Wooola
导读:媒介 当Mysql数据库数据到达必然量后,查询SQL执行会变慢起来,除了建索引、优化措施代码以及SQL语句等通例本领外,操作经典MHA数据库中间件做数据库读写疏散是一个不错的选择。可是在读写疏散架构中会呈现一个共性题目:SQL读取耽误。 读写及时场景 好比

 媒介

微处事架构下,操作Sharding-jdbc办理读写疏散查询耽误题目

当Mysql数据库数据到达必然量后,查询SQL执行会变慢起来,除了建索引、优化措施代码以及SQL语句等通例本领外,操作经典MHA数据库中间件做数据库读写疏散是一个不错的选择。可是在读写疏散架构中会呈现一个共性题目:SQL读取耽误。

读写及时场景

好比在微处事应用端新增一条营业数据,然后当即读取,这个时辰会碰着读取不到环境!

为什么呢?

操作sharding-jdbc办理Mysql读写疏散查询耽误的题目

来历收集

由于在读写疏散架构中,主节点认真写入数据,同时mysql操作多线程技能把数据同步到从节点,从节点认真应用端读取哀求。

而Mysql主从数据同步数据存在同步时刻差,带来的题目是从节点同步不到主节点(Master)数据,应用端从从节点(Slave)读取不到新增的数据环境。

办理方案

操作官方HintManager 分片键值打点器, 逼迫路由到主库查询

操作sharding-jdbc办理Mysql读写疏散查询耽误的题目

通过挪用hintManager.setMasterRouteOnly() 逼迫路由到主库查询,伪代码如下:

  1. public ArticleEntity getWithMasterDB(Long id, String wid) { 
  2.  HintManager hintManager = HintManager.getInstance() ; 
  3.  hintManager.setMasterRouteOnly(); 
  4.  ArticleEntity article = baseMapper.queryObject(id, wid); 

通过逼迫路由到主库查询有个风险,对付更新并及时查询营业场景较量多,假如都切到主库查询,势必会对主库处事器机能造成影响,也许还影响主从数据同步,以是要按照现实营业场景评估回收这种方法带来的处事器机能题目。

其它,假如营业层面可以做妥协的话,只管镌汰这种更新并及时查询方法,一种思绪是及时更新库,操作线程异步查询(譬喻更新后,就寝1-2秒再查询),伪代码如下:

  1. public class ArticleCacheTask implements Runnable {  
  2.  @Override 
  3.  public void run() { 
  4.   
  5.  try { 
  6.  // 节制读写疏散差异步配置 
  7.  Thread.sleep(2000); 
  8.  } catch (InterruptedException e) { 
  9.  e.printStackTrace(); 
  10.  } 
  11.  ArticleEntity articleEntity = articleService.getWithMasterDB(Long.valueOf(id), wid); 
  12.  } 

【编辑保举】

  1. 假如你能口试的时辰能答复这些MySQL数据库题目,月薪2万不是题目
  2. 详解MySQL查察数据库表容量巨细的要领总结
  3. 一文看懂MySQL怎样查察数据库表容量巨细
  4. 12个合用于DBA的数据库打点和开拓的SQL器材
  5. 安详裂痕XSS、CSRF、SQL注入以及DDOS进攻
【责任编辑:华轩 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读