我不知道堆栈溢出中是否已经存在这个问题。
情况是堆栈溢出:
我正在编写一个后端应用程序(使用Java)
我有一个rest API(假设是在数据库中搜索某些项目)
搜索API调用几种不同的服务以达到最终结果。
现在,由于此API用于各种服务,因此已经定义了这些服务接口,公开了哪些方法,接受了哪些参数等。因此,现在这需要大量时间才能完成此任务(整个搜索任务,进行各种服务)。
我的困惑是,如果我在这里更改某些服务调用,或更改设计/数据(哪个服务保存哪些数据),那么我可能会更快地得到结果。在这种情况下,我的搜索算法会变得更好,但是设计不会像现在这样非常好和整洁。
那么,是我们先做设计部分,还是先考虑要实现的算法复杂性?这在高负载应用中更为重要。在应用程序设计部分妥协以更快地获得结果是否很好?
这些类型的方案的最佳实践是什么?
答案 0 :(得分:1)
最简单的答案是-如果搜索操作对您的系统而言至关重要,则可以在考虑搜索API效率的前提下为服务制定设计决策。但是,如果搜索API之外还有其他操作,并且新设计会影响这些操作的性能,那么您需要在重新设计之前进行考虑。
您应该坚持一些约束来定义微服务边界。请阅读Microservice boundaries: five characteristics to guide your design。
此外,您不仅应该设计服务以简化操作,而且还应以某种方式设计:如果其中一项服务发生故障,则整个系统应该可以服务并且可以独立更改,扩展和部署。请检查Vertical Slicing on Microservices