gpt4 book ai didi

pagination - 具有自己数据库的微服务的聚合、排序、过滤和分页

转载 作者:行者123 更新时间:2023-12-05 06:24:59 25 4
gpt4 key购买 nike

方法和要求:我们有一个使用 Sql Server 数据库在 ASP.Net Core 中开发的微服务架构,其中每个微服务都有自己的 SQL 数据库,我们不允许进行跨微服务通信以聚合数据并从微服务发送回 api 网关并进一步发送回 UI (浏览器)。

我们的浏览器有一个数据网格,需要在从不同的微服务聚合数据后显示数据,例如一个数据网格必须显示客户姓名、地址、预订编号。号码、国家名称、酒店名称、酒店地址、酒店费用和其他更多详细信息。

上面的数据网格中还有一个功能,可以根据其中的每一列对上面的网格数据进行排序;根据不同的列值过滤网格也是一个要求。此外,我们还需要在同一个网格中进行分页,页面大小为 10 条记录。

目前,据我所知,数据聚合必须发生在 API 网关层,并且必须在其之上应用排序、过滤和分页功能。

我们使用 EF Core 2.0 作为数据 ORM,将数据发送回微服务并进一步响应。

问题 1:

which layer (UI, API Gateway, Microservices) should do this sorting, filtering and pagination functionality so as to have optimal performance and better user experience?

问题 2:

Is it possible that all parameters such as sort order, sort col name, page size, page number, filter col name, filter col value all should always be sent to the microservice api from API Gateway layer and successfully achieve all the functionality without any latency and optimal performance in read operations?

问题 3:

Is it a good pattern that we instead of above options, create a coarse-grained microservice which does the aggregation, sorting, filtering and pagination of data instead of the API Gateway layer doing Aggregation (currently API Gateway is only doing aggregation in other microservices)?

最佳答案

这里最优雅、最高效的答案可能是创建一个在 API 网关层访问的缓存层 - 请参阅有关可能性的讨论:http://rafaborrego.co.uk/how-to-do-pagination-across-domains-in-microservices-architectures/

存在一个基本问题,如果没有缓存层,对于每个请求,您都需要从组成微服务中收集几乎所有数据,以启用分页、排序和过滤 (PSF)。

将所有数据发送到 UI 层是没有意义的,因为这会给用户带来很大的内存压力,而微服务本身最多只能实现过滤的能力。

关于pagination - 具有自己数据库的微服务的聚合、排序、过滤和分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57394908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com