问一个系统设计的问题
資深大佬 : MeloForsaken 3
目前有一个 springboot 的业务项目,打个比方叫做服务 A 。
现在需要在这项目 A 的数据基础上,出一些报表,由于可能需要频繁的更改代码并更新,所以打算再起一个服务 B 。
现在的问题是怎么让 B 调用 A 的数据,RPC ?还是把 A 的 Mapper 和 POJO 转移到公共的 module ?还是在服务 B 上单独重新写 Mapper 和 POJO ?
大佬有話說 (10)
目前有一个 springboot 的业务项目,打个比方叫做服务 A 。
现在需要在这项目 A 的数据基础上,出一些报表,由于可能需要频繁的更改代码并更新,所以打算再起一个服务 B 。
现在的问题是怎么让 B 调用 A 的数据,RPC ?还是把 A 的 Mapper 和 POJO 转移到公共的 module ?还是在服务 B 上单独重新写 Mapper 和 POJO ?
有没有必要把相关的 dao 抽成单独模块,就看你们的划分了
如果采用 B 方案,那么维护成本高容易出错,但是可扩展性强,耦合性低,生产活动、升级改造过程中不会互相干扰。
各有优劣,没法抉择,这时候就看需求,需求很重要,仔细阅读需求后,再来考虑问题。如果对生产活动的稳定性要求高,对可扩展性要求强,那么采用 B 方案,反之,采取 A 方案。
自己另起服务定制写统计是成本最高的方案,不管你是 rpc 还是定制写计算逻辑。
两个业务其实可以通过数据库解耦。
不管你有多少业务项目:A1 、A2 、A3……
业务项目只负责自己的业务数据读写的约束。
报表业务应该只关注数据库的数据是什么样,如何通过数据库的数据计算出需要的报表,clickhouse 、tableau 、superset 这类开箱即用的报表解决方案不是更合适吗。