【发布时间】:2019-02-08 23:04:41
【问题描述】:
我的集群中有两个应用程序(比如 app1 和 app2)。这两个应用程序都将无状态服务作为连接到内部有状态服务的网关。我正在尝试在这两个应用程序之间进行调用。我已经从 app1 到 app2 进行了反向代理服务通信。
从 app1 到 app2 的网址:http://localhost:19081/app2/stateless_app2_service/api/values
上述场景在本地集群中运行良好。但是当部署在 Azure 集群上时,需要 2 分钟才能到达 app2。
有人可以帮助我指出导致此延迟的我做错了什么吗?这与任何集群配置有关吗?我在创建集群时为 ARM 中的反向代理启用了端口 19081。
下面是我通过 Azure 集群上的服务进行的调用的事件记录器。 2分钟后接到电话。在 Azure 集群中涉及应用程序间通信的每个调用都会发生这种情况。
代码:
Stateless_app1_service
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new ServiceInstanceListener[]
{
new ServiceInstanceListener(serviceContext =>
new KestrelCommunicationListener(serviceContext, "ServiceEndpoint", (url, listener) =>
{
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Starting Kestrel on {url}");
return new WebHostBuilder()
.UseKestrel()
.ConfigureAppConfiguration((builderContext, config) =>
{
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
.ConfigureServices(
services => services
.AddSingleton<HttpClient>(new HttpClient())
.AddSingleton<StatelessServiceContext>(serviceContext)
.AddSingleton<ILogger>(GenerateLogger()))
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None)
.UseUrls(url)
.Build();
}))
};
}
拨打电话:
_logger.TrackEvent("SF - Call made to other application");
var response2 = await _httpClient.GetAsync($"{_reverseProxy}/{_appNameConnectors}/{_apiNameConnectors}/api/Values");
_logger.TrackEvent("SF- RPC - Call successfully finished!");
【问题讨论】:
标签: azure azure-service-fabric