数据检索与部署:技术解析与策略探讨
1. 数据检索方式
1.1 通过服务调用进行数据检索
这种数据检索模型有多种变体,核心是通过 API 调用从源系统拉取所需数据。对于简单的报告系统,如仅显示过去 15 分钟内订单数量的仪表盘,这种方式可行。但如果要跨两个或多个系统的数据进行报告,则需要多次调用以整合数据。
不过,当涉及大量数据的用例时,这种方法很快就会失效。例如,要报告音乐商店过去 24 个月的客户购买行为,就需要从客户和财务系统中拉取大量数据。在报告系统中保留本地副本存在风险,因为无法确定数据是否已更改,所以为了生成准确的报告,需要获取过去两年的所有财务和客户记录。即使客户数量适中,这也会是一个非常缓慢的操作。
报告系统通常依赖第三方工具,而提供 SQL 接口是确保报告工具链易于集成的最快方法。可以定期将数据拉取到 SQL 数据库中,但这也面临一些挑战。
其中一个关键挑战是,各种微服务暴露的 API 可能并非为报告用例而设计。例如,客户服务可能允许通过 ID 查找客户或按各种字段搜索客户,但不一定会暴露检索所有客户的 API。这可能导致为了检索所有数据而进行大量调用,不仅对报告系统效率低下,还会给相关服务带来负载。
虽然可以通过为服务暴露的资源添加缓存头,并将数据缓存在反向代理中,来加快部分数据检索速度,但报告的性质通常是访问长尾数据。这意味着可能会请求其他人之前未请求过(或至少很长时间未请求过)的资源,从而导致代价高昂的缓存未命中。
可以通过暴露批量 API 来简化报告。例如,客户服务可以允许传入客户 ID 列表以批量检索客户,甚至可以暴露一个接口让用户分页浏览所有客户。更极端的做法是将批量
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



