我正在尝试将应用程序从Monolithic缓慢迁移到微服务,但第一步是将其迁移到更像微服务就绪状态。
我有一个整体系统SA,需要将大量数据推送到Cassandra表TB和使用TB表的服务SB,这违反微服务原理吗?
基本上,我希望将大量数据推送到服务SB,但是如果它通过rest api推送则又太大又费时。
答案 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和其他模式。