对于那些将单一应用程序拆分为微服务的人来说,如何处理拆分数据库这一难题呢。出于性能和简单性的原因,我所开发的典型应用程序进行了大量的数据库集成。
如果你有两个逻辑上截然不同的表格(可以说是有界上下文) ,但是你经常对大量的数据进行聚合处理,那么在这个庞然大物中,你很可能会避免面向对象,而是使用数据库的标准 JOIN 特性来处理数据库中的数据,然后将聚合视图返回到应用层。
你如何证明将这些数据分解成微服务的合理性? 在微服务中,你可能需要通过 API 而不是在数据库中“连接”这些数据。
我读过 Sam Newman 的《微服务》一书,在关于拆分 Monolith 的章节中,他举了一个“打破外部关键关系”的例子,在这个例子中,他承认在一个 API 上进行连接会比较慢——但是他接着说,如果你的应用程序足够快,它比以前慢有什么关系吗?
这听起来有点油嘴滑舌?人们的经历是什么?您使用了什么技术来使 API 连接的性能达到可接受的水平?