我一直在修补 Azure Data bricks 和 Azure data factory,我想知道当你只想通过调用这些服务 API (Rest) 从一些服务中获取数据,然后推送时,这些是否有点过分这些数据也使用 Rest API 发送到服务 X。
我已经看到数据工厂可以调用 rest API(但似乎不支持 Oauth2),但我还没有发现任何关于将数据推送到另一个 rest Api 的信息(而且整合所有内容并没有真正意义此时在 Azure 数据库中)
那么,我应该使用数据工厂,还是编写一个 python 脚本并使用 Azure Functions 调用它更适合解决这个问题?
问候,
最佳答案
只有当数据可以非常直接地从一个数据库(或文件)移动到另一个数据库时,我才更喜欢使用 DataFactory。当您需要更多逻辑来与 API 交互时(例如在您的情况下),使用 DataFactory 几乎没有附加值(value),因为您已经需要一些计算(例如 Azure Functions)。
如果您的数据摄取是某种工作流程(例如,在推送到 X 之前,您需要按特定顺序排列 A、B 和 C),那么我建议使用 Durable Functions具有功能链和扇出/扇入模式。我也有一些 video content我在这里解释一下。
这里是一个使用函数链的编排的小伪代码示例:
var id = input.GetInput<string>();
var a = await context.CallActivityAsync<DataA>("CallApiAActivity", id);
var b = await context.CallActivityAsync<DataB>("CallApiBActivity", id);
var c = await context.CallActivityAsync<DataC>("CallApiCActivity", id);
var combined = Builder.CombineABC(a, b, c);
return await context.CallActivityAsync<bool>("PushToApiXActivity", combined);
如果对 A、B 和 C 的调用不相关,那么我建议您进行扇出/扇入,以便可以并行调用这些函数。
Durable Functions 的好处是编排是有状态的,并且会为每个事件函数调用创建存储检查点。这通过使用 CallActivityWithRetryAsync
方法启用自动重试。这在处理您无法控制的服务时特别有用,并使您的解决方案更具弹性。
关于azure-functions - 从 API A、B、C 获取数据并将它们推送到 API X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57462093/