对于将单体应用程序拆分为微服务的人,您如何处理拆分数据库的难题。出于性能和简单性的原因,我从事过的典型应用程序进行了大量的数据库集成。
如果您有两个逻辑上不同的表(如果您愿意的话,是有界上下文),但您经常对大量数据进行聚合处理,那么在单体应用中,您很可能会避开面向对象,而是使用数据库的标准JOIN 功能可在将聚合视图返回到您的应用层之前处理数据库上的数据。
您如何证明将此类数据拆分为微服务的合理性,据推测您将需要通过 API 而不是在数据库中“加入”数据。
我读过 Sam Newman 的微服务书,在关于拆分 Monolith 的章节中,他举了一个“打破外键关系”的例子,他承认跨 API 进行连接会更慢 - 但他接着说,如果无论如何,您的应用程序足够快,它比以前慢有关系吗?
这似乎有点油嘴滑舌?人们的经验是什么?您使用了哪些技术来使 API 连接的性能可以接受?