应用拆分,数据库,及事务问题

来源:13-2 应用拆分思路-2

梨多情

2020-04-14

老师,您好!

请教下:

在微服务应用拆分时,通常会将一个大应用拆分为多个模块,每个模块即子应用。

问题1、什么时候子应用单独用一个数据库?什么时候用公共的数据库?

问题2、能举例说明吗?

问题3、若按上面拆分,那么很容易出现在一个 Java 方法中,对数据库的操作,是跨库操作,

    而且这种情况非常多,本地事务似乎不够用,需要用到分布式事务,

    很难做到老师您说的不用分布式事务。

    我上面说的对吗?

    如果是老师您,会怎么做?

问题4、有了分布式事务,本地操作数据库时,还需要添加本地事务吗?

    本来分布式事务就耗资源,如果添加本地事务,不是更耗资源了吗?


可以的话,希望能逐个问题解答,谢谢老师!

写回答

4回答

Jimin

2020-04-14

1、单独的模块,比如订单、产品这种直接就可以,当然这取决于业务量和请求量,小的话其实没必要。实际中你保证单表操作的话,后面即使要按表拆多个库,也会很容易

0
1
梨多情
非常感谢!
2020-04-15
共1条回复

Jimin

2020-04-14

4、你这个问题本身就有问题,你先具体了解一下分布式事务原理吧

0
2
Jimin
回复
梨多情
这里我举个例子或许你就能明白我的意思了,假设使用分布式事务控制多个数据源的提交,对于单个数据源提交,他上面的就是单数据源事务,只是使用了相同的事务id,一起提交或回滚而已
2020-04-16
共2条回复

Jimin

2020-04-14

3、实际中很少使用分布式事务的,我们会借助补偿手段及消息等来保证最终一致性

0
0

Jimin

2020-04-14

2、参考1的例子

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程