从一个API调用另一个API时的延迟

时间:2017-03-01 18:59:08

标签: azure iis asp.net-web-api asp.net-core

我有这种情况,我有一个外部.net核心API网关,我的移动设备与之交谈,然后是网关调用的许多单独的内部“微型”服务。

我的问题是本地服务器和Azure上的IIS / Kestrel(因为我的开发设置在Azure中,但在个人服务器上生产)。

问题是如果在两种情况下内部api的调用开箱即用的延迟时间都很小吗?或者我可以做一些事情来“连接”外部和内部api到减少延迟?

我真的找不到任何关于此的好数据,所以我觉得我没有这个问题的正确术语。

希望你能帮助我阐明一下。

1 个答案:

答案 0 :(得分:0)

简答:在调用远程服务时,在.NET代码中使用async/await pattern。尽可能将服务和服务器放在一起,以减少网络开销。

如果您的代码通过HTTPS调用其他服务,则总会存在与以下内容相关的延迟:

  • 网络堆栈开销
  • HTTPS握手
  • 数据包路由
  • 实际上正在等待远程服务器处理并返回响应

前两个是最小的,你不能对它们做很多事情。数据包在两个物理位置之间所需的时间可能在5毫秒到200毫秒(或更长)之间变化,这就是将服务放在同一地理区域或数据中心的常见原因。

就您的代码而言,只要您使用async/await pattern,您的代码就已经以最佳网络速度运行。如果延迟不符合您的要求,您需要让服务器更快,或者将它们靠得更近。

公平警告:我不是网络工程师,这是一个非常高级的概述。我建议在Server Fault询问技术网络问题。