忆梦|利用Sharding-JDBC解决数据库读写分离查询延时问题( 二 )
<>();filterList.add(wallFilter());druidDataSource.setProxyFilters(filterList);} catch (SQLException e) {e.printStackTrace();}}}强制路由到主库查询关键代码:
public ArticleEntity getWithMasterDB(Long id, String wid) {HintManager hintManager = HintManager.getInstance() ;hintManager.setMasterRouteOnly();ArticleEntity article = baseMapper.queryObject(id, wid);}
通过强制路由到主库查询有个风险 , 对于更新并实时查询业务场景比较多 , 如果都切到主库查询 , 势必会对主库服务器性能造成影响 , 可能还会影响到主从数据同步 , 所以要根据实际业务场景评估采用这种方式带来的系统性能问题 。
【忆梦|利用Sharding-JDBC解决数据库读写分离查询延时问题】另外 , 如果业务层面可以做妥协的话 , 尽量减少这种更新并实时查询方式 , 一种思路是实时更新库 , 利用 Java Future 特性异步查询(例如更新后 , 睡眠1-2秒再查询) , 伪代码如下:
Callable c1 = new Callable(){@Overridepublic String call() throws Exception {ArticleEntity articleEntity = nulltry {Thread.sleep(2000);articleEntity = articleService.get(id)} catch (InterruptedException e) {e.printStackTrace();}return articleEntity;}};FutureTask f = new FutureTask(c1);new Thread(f).start();ArticleEntity article = f.get()
后台私信回复 1024 免费领取微服务、SpringCloud&SpringBoot , 微信小程序、Java面试等视频资料 。
- 网易科技|特斯拉上线电池回收计划,报废锂电可100%回收利用
- 搜狐新闻|见缝插针的设计太牛了,连鸡肋空间都能利用起来!
- 科学|时间漏洞真的存在吗?利用时间漏洞穿越时空是真是假
- 和平精英|和平精英:“吉吉国王”利用油桶杀敌,虎牙鲨鱼得意pose直接表情包+1
- 全国能源信息平台|浩吉铁路:世界最长煤运专线利用率仅一成
- 吴磊 |站姐盗用吴磊身份信息,利用飞行里程兑换机票,吴磊账号也曾被盗
- 忆梦|电视接口都有哪些?各自有哪些作用?智能电视常见接口解析来了
- 让历史建筑在合理利用中焕发生机
- 爱游戏的萌博士|《军团要塞2》玩家利用机器人对付外挂,让人想起《尼尔》的剧情
- 飘窗|32平小户型设计,合理利用飘窗和楼梯空间,收纳功能是真棒