qt及qt quick开发实战精解_微服务实战:解决数据库跨库查询的一些思路

6ab27614bda3495486d76928a9df91ce.png

《微服务实战》系列

  1. 微服务实战:前后端分离后的一些思考
  2. 微服务实战:分布式缓存设计
  3. 微服务实战:服务拆分的一些思考
  4. 微服务实战:Redis缓存KEY设计思路
  5. 微服务实战:解决数据库跨库查询的一些思路

前言(文末有福利哦)

在服务做微服务改造后,原先单库join查询已经不能满足要求,每个拆分的微服务对应一个数据库实例,而且部署在不同的服务器上,那么解决“跨库查询”就势在必行了。

9dd50e514f04f755dce69534289ce422.png

以笔者实战经历来看,以下几个思路仅供参考:

一、表字段冗余

想必大家已经很熟悉,几乎每天都会打交道,不用多讲。

需要指出的是冗余字段不能太多,建议控制在2-4个左右。否则会出现数据更新不一致问题,一旦冗余字段有改动,极容易产生脏数据。

解决思路

建立同步机制,必要时采取人工补偿措施。

所以,合理的字段冗余是润滑剂,减少join关联查询,让数据库执行性能更高更快。

二、聚合服务封装查询

聚合服务

简单来说,就是把不同服务的数据统一组装在一个新的服务里做聚合,对外提供统一入口API接口查询。

笔者曾经开发新闻报表查询接口时,需要用到用户,新闻、用户标签、登录记录等数据。但是用户、新闻、登录记录在不同的数据库,而且还不在同一台服务器上。经笔者分析,把代码写在用户微服务或者新闻微服务都不合适,最后只能自己单独写了一个聚合服务来解决跨查询数据问题。

聚合服务的数据组装是以API接口调用来实现,一般不建议直连数据库连表查询。这样做的好处是减少服务间调用次数以及查询库表压力。

在实际的业务开发中,我们经常碰到类似的需求,而聚合服务不失为一种较彻底的服务解耦实现方式。

三、表视图查询

如果涉及到不同数据库表之间的join查询,可以在其中某一数据库的表上建立视图(view)关系,这种方式非常高效,只需要开发一个简单接口对外提供服务就可以了,而且省去聚合服务带来调用、查询、聚合的复杂性。

前提条件

  1. 数据库需要部署在同一台服务器上
  2. 数据库账户密码必须相同,也就是在同一个schema下

另外表视图查询这种方式,是一种紧耦合的设计方式,不利于程序扩展,除非你很确定将来业务变动不大,可以考虑使用。以笔者经验来看,不适合大规模使用。

四、多数据源查询

这种方式是一种比较技术化的思路,简单来说就是一个微服务配置多个数据库源(DataSource),进行数据源来回切换进行库表查询,以达到获取不同数据的目的。

实现思路

  1. 利用DynamicDataSource
  2. 利用Spring的AOP动态切换数据源
  3. 利用Spring的依赖注入方式管理Bean数据源对象

具体实现方式,网上例子很多很成熟的实现方案。

五、分库分表:使用数据库中间件

Sharding-Shpere

想必做过分库分表的同学对他一定不陌生,其出身来至当当开源项目sharding-jdbc。非常有限的跨库查询解决方案,目前在京东内部已经广泛使用。sharding-jdbc创始人张亮已加入京东,sharding-jdbc还在不停的迭代,目前更名为sharding-shpere,已经入Apache顶级项目,进行孵化,非常看好它

高可用架构图

389f47c752383b58a69c9737f81a7382.png

官网传送门

https://shardingsphere.apache.org/document/current/cn/quick-start/

Mycat

一个彻底开源的,面向企业应用开发的大数据库集群,支持事务、ACID、可以替代MySQL的加强版数据库;一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群;一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server;结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品;一个新颖的数据库中间件产品。

高可用架构图

4d8f06c8aa9e9d2d6709352751367e78.png

Mycat关键特性

  1. 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
  2. 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
  3. 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。

从mycat特性来说,其天生就支持分库分表以及跨库查询,具体不多说,有兴趣的同学,可以去官网了解mycat的原理。

总结

以上就是5种应对跨库查询思路,一定要具体问题具体分析组合使用。同时,表结构的合理设计也很重要。

不知道各位同学,有没有更好的思路方便交流呢?

关于我

我是Wooola,擅长微服务,分布式,并发,工作流。请您多多关注我的头条号,我会持续更新干货给大家。

转发 + 关注之后,私信回复“资料”可以免费领取Java BAT面试宝典/微服务/SpringCloud/SpringBoot等视频和资料,亲记得要点赞转发哦!!!

9310201146a684e7874f70331623ef95.png
a5b70aef70eb46a7141f8861ddba9aba.png
ba48591ae399c974712bac4f99963225.png
weixin_39994438
关注 关注
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QtQt Quick开发实战精解(超清PDF)
05-03
超清晰的qt quick书籍,是学习qml最上手的书籍,没有之一。虽然内容提及版本很低,属于4.8版本的qml,但是不影响其学习的语法和快捷性,其中的qt项目很有参考价值
QtQt Quick开发实战精解.pdf
08-23
QtQt Quick开发实战精解.pdf
微服务架构下,解决数据库跨库查询的一些思路
04-02 4942
加关注,不迷路!前言在服务做微服务改造后,原先单库join查询已经不能满足要求,每个拆分的微服务对应一个数据库实例,而且部署在不同的服务器上,那么解决跨库查询”就势在必行了。以笔者实战...
QtQt Quick开发实战精解.zip_QT_QT 开发_Qt Quick_Quick_qt开发
07-15
QtQt Quick开发实战精解Qt and Qt Quick Development Practical Digestion
QtQt Quick开发实战精解(代码)
07-30
/****************1-1*********************/ 1.设计了菜单栏和工具栏 /****************1-2*********************/ 2.添加了MdiChild类,实现了其中的新建,打开,保存,另存为,关闭等操作的函数; 在mainwindow.cpp文件添加了新建文件菜单的功能测试函数 /****************1-3*********************/ 3.实现了更新菜单动状态函数 4.实现了新建文件函数 /****************1-4*********************/ 5.实现打开文件菜单的功能,当打开已经存在的文件时,可以直接将它设置为活动窗口 /****************1-5*********************/ 6.实现了在窗口菜单中显示添加的子窗口列表 /****************1-6*********************/ 7.实现了保存,另存为,撤销,恢复,剪切,复制,粘贴,关闭,关闭所有窗口,平铺,层叠, 下一个,前一个,关于,关于Qt等菜单动作。 /****************1-7*********************/ 8.保存窗口设置 9.自定义右键 10.显示光标所在行和列 11.窗口标题,工具栏标题,状态栏显示,和各个动作的状态提示
QtQt+Quick开发实战精解霍亚飞编著.zip
08-14
QtQt+Quick开发实战精解》是由霍亚飞编著的一本深入浅出的IT技术书籍,专注于QtQt Quick开发实践。这本书针对初级到中级的开发者,提供了丰富的学习材料,帮助读者掌握Qt应用程序的设计与实现。Qt是一个跨...
QtQtQuick开发实战精解高清PDF
01-14
从标题“QtQtQuick开发实战精解高清PDF”可以得知,这本书主要介绍的是使用Qt框架进行软件开发实战技巧和深入解析。 Qt是一个跨平台的C++应用程序框架,它为开发者提供了构建图形界面应用程序所需要的各种工具...
qtqt quick开发实战精解 网盘_软件测试零基础学习实战路线
weixin_39746794的博客
10-28 315
前言:【青云叔叔】出身普通,仅仅是一个普通二本学校毕业,在大学也没有突出的成绩,年轻时没有好好学习,苦于被美女吸引失去自我,迷乱于游戏中,那年毕业记忆清晰,好久没找到工作,很慌,非常慌,带了家人给的1000元人民币,只身一人前往北京,在陌生的北京租了一间地下二层的潮湿的10几平的地下室,一个月100元,暗无天日,住宿环境极差,公用地下室卫生间,各种人群,脏的不敢形容,发过传单,当过服务员,最穷时每...
QtQt Quick开发实战精解-霍亚飞-高清扫描版-带完整书签
03-18
QtQt Quick开发实战精解-霍亚飞-高清扫描版-带完整书签
QtQt Quick开发实战精解(带源码)
06-13
Qt Quick学习书籍PDF,附带源码一起分享
QtQt Quick开发实战精解&源码
11-25
QtQt Quick开发实战精解&源码,QT开发的不可少的入门书籍,结合QT快速入门的书籍一起走上QT的强大之路吧。
QtQt Quick开发实战精解 (Qt应用编程系列丛书) - 霍亚飞.mobi
05-18
QtQt Quick开发实战精解 (Qt应用编程系列丛书) - 霍亚飞.mobi
QtQt Quick开发实战精解源码
07-18
QtQt Quick开发实战精解源码,QT开发的不可少的入门书籍,结合QT快速入门的书籍一起走上QT的强大之路吧。
QtQt Quick开发实战精解俄罗斯方块QT5.7.1源码
01-19
QtQt Quick开发实战精解俄罗斯方块QT5.7.1源码
[QtQt Quick开发实战精解] 第1章 多文档编辑器
weixin_30498807的博客
12-16 371
  这一章的例子是对《Qt Creator快速人门》基础应用篇各章节知识的综合应用, 也是一个规范的实例程序。之所以说其规范,是因为在这个程序中,我们对菜单什么时候可用/什么时候不可用、关闭程序时应该先保存已修改且尚未保存的文件等细节都做了严格的约束。而一个真正实用的应用程序,也就应该如此。   本章应用了基础篇的众多知识点,但这里只是讲解程序流程与框架,没有涉及太多知识细节的讲解。这个实例主要是...
QBit开发微服务
chszs的专栏
08-29 3030
QBit开发微服务作者:chszs,版权所有,未经同意,不得转载。博主主页:http://blog.csdn.net/chszs一、QBit库介绍QBit是一个开源的响应式开发库,用于构建微服务,支持JSON、HTTP、WebSocket和REST。QBit使用响应式编程建立弹性REST、基于云的WebSocket、Web服务。QBit是面向移动和云计算的SOA演进。QBit是一个很小的、轻量级的微
两个server 两个数据库 微服务_微服务架构下,解决数据库跨库查询的一些思路...
weixin_39743603的博客
12-20 917
文章来源于公众号架构荟萃 ,作者Wooola前言在服务做微服务改造后,原先单库join查询已经不能满足要求,每个拆分的微服务对应一个数据库实例,而且部署在不同的服务器上,那么解决跨库查询”就势在必行了。image以笔者实战经历来看,以下几个思路仅供参考:image表字段冗余想必大家已经很熟悉,几乎每天都会打交道,不用多讲。需要指出的是冗余字段不能太多,建议控制在2-4个左右。否则会出现数据更新不...
微服务框架,系统之间跨库查询PostgreSql的postgres_fdw
OhhZoey的博客
07-02 405
前提:微服务框架,内部系统之间需要跨库查询数据库PostgreSQL 方式一:分开查询,java拼接,必要时可存入缓存 方式二:PostgreSql的postgres_fdw功能,建立外部表 CREATE EXTENSION postgres_fdw; --创建 foreign server 外部服务器,外部服务是指连接外部数据源的连接信息 CREATE SERVER foreign_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host
qtqtquick开发实战精解
最新发布
08-27
QTQTQuick开发实战精解》是一本详细介绍QTQTQuick开发实战指南。本书首先介绍了QT的基础知识,包括QT的安装、配置和环境搭建等。然后深入讲解了QT的常用功能,如窗口管理、控件设计和布局等。接着,本书重点...
写文章

热门文章

  • 通过stream去重_java之stream对象去重 23872
  • def __init__(self)是什么意思_通俗的告诉你Python中 init_ 到底是什么含义? 22118
  • iPhone清理喇叭灰尘_iPhone | 自动清理听筒扬声器灰尘,提高手机音量! 9216
  • 计算机房灭火器如何配置,机房灭火器配置标准 6791
  • hr谈薪资后说请示领导_面试谈工资,怎么谈才不亏? 6723

大家在看

  • 机械学习—零基础学习日志(如何理解概率论2) 671
  • SOMEIP_ETS_061: Sending_two_SOMEIP_Messages_in_a_row 66
  • Linux 性能观测之CPU平均负载 383
  • 【Springboot系统开发】——734基于Springboot的财务管理系统(文末附源码)源码+万字LW+配套PPT+说明文档
  • MidJourney付费失败的原因以及失败后如何取消或续订(文末附MidJourney,GPT-4o教程) 746

最新文章

  • net 服务器端网站创建快捷方式,asp/asp.net生成网站快捷方式
  • 饥荒怎样修改服务器模式,饥荒服务器模式改不了 | 手游网游页游攻略大全
  • 撕裂者cpu三代文件服务器,AMD 两年 CPU 线路图曝出,10月发第三代线程撕裂者
2021年149篇
2020年224篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码坑梓百度网站优化排名大鹏设计网站南澳网站改版观澜SEO按天收费坪地百度竞价东莞百度标王荷坳优秀网站设计南联关键词排名南联百度竞价包年推广福永百度seo木棉湾企业网站改版木棉湾模板推广福永百搜词包惠州如何制作网站松岗企业网站改版南山网站改版石岩关键词排名包年推广广州百度爱采购大浪百度网站优化排名坪山高端网站设计荷坳网站开发罗湖建站坑梓网络营销龙华seo平湖企业网站制作大芬seo排名东莞优化同乐网站推广石岩标王光明百度seo歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化