请稍等 ...
×

采纳答案成功!

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

拆分微服务后多表连接查询如何处理?

老师你好,在单体应用拆分成微服务后,原来的两表分在两个库中,那么如何进行join,排序等操作

正在回答 回答被采纳积分+3

1回答

大漠风 2018-07-14 15:40:15

在课程中反复提到,服务间调用的问题,服务间调用就是为了解决:

  1. 一个服务需要获取另一个服务的数据。在单体服务中,你用表的关联获取数据,但是拆成不同的服务以后,就只能在java中从另一个服务获取数据,然后关联。这个是读的操作,没有事务的问题。

  2. 一个服务在完成一个业务请求时,需要调用另一个服务完成某个操作。这是写操作,就存在事务问题。

0 回复 有任何疑惑可以回复我~
  • 提问者 木星鸽_手机 #1
    只看读操作的话,服务间调用好像无法解决两张表join之后,再进行排序的操作,貌似只能实现left join的效果?
    回复 有任何疑惑可以回复我~ 2018-07-14 15:55:29
  • 大漠风 回复 提问者 木星鸽_手机 #2
    如果你之前的排序是在两个表的多个字段上排序,那确实没有较好的办法。在微服务中只能在一个服务内先按排序获取数据,再根据相应的id去另一个服务获取。
    如果你的两个服务有那么紧密的关联,那就得重新考虑一下服务拆分是否合理的问题。
    如果在服务拆分合理,但是在某种特殊情况下,确实需要在两个服务的两个表上的字段排序,那就只能把数据少的那个表的数据都取出来,自己在java里面排序。但是前提是记录不是很多。
    回复 有任何疑惑可以回复我~ 2018-07-14 16:22:42
  • 提问者 木星鸽_手机 回复 大漠风 #3
    查询视图的方案实际中是否可行
    就是说两张分库的大表需要join的,通过发布事件,聚合成读视图(表),但是这样的话如果有变动需要维护读视图的数据?
    回复 有任何疑惑可以回复我~ 2018-07-14 16:33:47
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信