Azure Relay-混合连接重用

时间:2018-11-27 15:37:17

标签: azure azure-hybrid-connections

为每个客户端请求线程创建一个如下所示的新HybridConnectionStream对象需要花费时间(约3秒)

var client = new HybridConnectionClient(new Uri(String.Format("sb://{0}/{1}", relayConfiguration.Value.RelayNamespace, relayConfiguration.Value.ConnectionName)), tokenProvider);

-- (takes ~3 secs) 
HybridConnectionStream relayConnection= await client.CreateConnectionAsync(); 

是否有任何方法可以重用/缓存已建立的HybridConnectionStream以服务同一客户端的所有将来请求,或者是否可以创建HybridConnectionStream池以更快地满足将来的客户端请求。
我们的实现如下:
移动应用程序上的某些用户操作需要来自本地DB的数据,因此该用户操作命中了azure托管服务结构api,后者又将请求转发到特定的azure中继混合连接,然后是我们的自定义,托管的侦听器服务选择请求并将其转发到本地Web服务以选择数据
,这里的服务矩阵应用程序会创建 NEW 混合连接/混合连接流,以与每个中继建立与Azure中继混合连接的连接传入的用户请求非常耗时,我们希望每次都避免创建新的hybridconnection,而是寻找选项来缓存和重用已经创建的昂贵的hybridconnection或尝试创建hybridconnection池之类的东西。还有其他更好的东西。谢谢

2 个答案:

答案 0 :(得分:0)

我们在我们的App Services之一和几个VM之一之间使用混合连接。 Azure混合连接有点像VPN。 (您必须倾斜头并斜视一下。)

  

在App Service中,混合连接可用于访问其他网络中的应用程序资源。来源:Azure App Service Hybrid Connections

所以我认为您应该将混合连接视为持久的东西。它是网络基础结构的一部分,而不是您需要为每个线程创建的内容。我认为建立混合连接所花费的时间与这种想法相符。

答案 1 :(得分:0)

只需保持HybridConnectionStream打开并重用它即可。当您仍然需要它时,请不要关闭它。您可以通过单个流发送多个消息。它是读/写的,所以应该没有问题。