我不知道 Stack Overflow 上是否已经存在这个问题。
Stack Overflow 是这样的情况:
我正在编写一个后端应用程序(用 Java)
我有一个 rest API(建议在数据库中搜索一些项目)
搜索 API 调用多种不同的服务以达到最终结果。
现在,因为这个 API 去到各种服务,那些服务接口(interface)已经被定义,那些暴露的方法,接受哪些参数等等。所以现在这需要很多时间来完成这个任务(整个搜索任务, 去真正的服务)。
我的困惑是,如果我在这里更改一些服务调用,或更改设计/数据(哪个服务持有哪些数据),那么我可能会更快地获得结果。在这种情况下,我的搜索算法会变得更好,但设计不会像现在这样非常好和干净。
所以我们是先做设计部分还是先考虑我们要实现的算法复杂度?在高负载应用中哪个更重要。为了更快地获得结果而与应用程序设计部分妥协是否好?
这些类型的场景的最佳做法是什么?
最佳答案
简短的回答是 - 如果您的搜索操作对您的系统来说过于重要,您可以在考虑搜索 API 的效率的同时插入服务的设计决策。但是,如果除了搜索 API 之外还有其他操作,并且新设计会影响这些操作的性能,那么您需要在重新设计之前考虑。
您应该坚持一些约束来定义微服务边界。请阅读Microservice boundaries: five characteristics to guide your design .
此外,您在设计服务时,不仅要着眼于操作简单,而且要确保在其中一项服务出现故障时,整个系统应该能够提供服务,并且可以独立更改、扩展和部署。请查看Vertical Slicing on Microservices
关于java - 与服务接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52129726/