使用共享数据库对微服务进行整体化

时间:2018-08-10 21:47:26

标签: java spring-boot microservices

我正在尝试将应用程序从Monolithic缓慢迁移到微服务,但第一步是将其迁移到更像微服务就绪状态。

我有一个整体系统SA,需要将大量数据推送到Cassandra表TB和使用TB表的服务SB,这违反微服务原理吗?

基本上,我希望将大量数据推送到服务SB,但是如果它通过rest api推送则又太大又费时。

1 个答案:

答案 0 :(得分:2)

嗯,也许这是一个基于意见的问题,但我坚信每个微服务都应尽可能独立于其他系统执行

在您的情况下,您应该问自己,如果应该从SA删除保存的数据的属性,会发生什么情况?对SB有影响吗? 还要注意,如果大量写入和读取相同的数据源,则服务SA将导致SB出现性能问题,反之亦然。

关于微服务REST之间的通信不是不是唯一的选择;您还可以考虑使用具有SA作为发布者和SB用户的asynchronous communication - Messaging(RabbitMQ,Kafka ..)。

但是起点应该是:

  

“我的SA和SB是否需要独立部署和扩展?   彼此吗?”

如果没有,肯定没有理由没有理由提供两项服务。

奥利弗·吉尔克(Oliver Gierke)有很多很棒的Refactoring to System of Systems talk,其中谈到了您需要的东西,其中提到了常见的陷阱和有用的建议,我只能推荐它们。 请也检查Chris Richardson的database-per-service和其他模式。