我使用基于单个数据库的多个微服务进行项目,其中包含许多模式.每个数据库模式都有一个微服务,这没有多大意义,因为有些模式只有两个表.一些微服务只执行非常简单的CRUD操作,在我看来,这不一定是微服务.例如:contactDetails
和address
.
现在我需要实现一个利用这些服务的Web应用程序.建议使用REST构建API网关,并将请求转发到各个微服务来获取数据,并将其聚合到单个JSON中并返回到前端.一些API需要来自五个以上微服务的数据,这只是数据库中的一条SELECT语句.我认为,当传入流量变得很高时,这可能会影响性能,也会增加服务之间的通信开销.我可以对少数调用使用并行化,但有些调用是相互依赖的.因此,它是连续的.
以下是我的建议:
- 直接使用具有跨模式的View/SP的数据库,并调用处理共享逻辑和繁重操作的微服务.因为它是一个单一的数据库,短期内没有计划 for each 微服务提供一个单一的数据库.如果发生这种情况,最好的办法是重新设计数据库.
- 使用GraphQL网关
- 将所需数据同步到NoSQL/内存优化表,因为新的Web应用程序主要是只读应用程序.
我想就这件事得到一些反馈.我坚信这个设计目前是不可行的.但是,进行五个以上的内部服务调用来获取一个简单的数据集是没有意义的
谢谢!