[英]Service Resolver for Stateless Services in Service Fabric
每當嘗試解析無狀態服務的端點時,我似乎總是會收到“找不到服務”的消息。 我嘗試使用服務分區解析器和服務代理,但是它們都產生相同的結果。 Service Fabric是否受到限制?或者我是否誤解了應如何使用無狀態服務? 我找不到任何說明這兩種方式的文檔。
詳細說明我正在嘗試做的事情。 我正在構建一個Api網關。 Api網關由RegistryService和RoutingService組成。
我有多個服務結構應用程序,其中一些具有使用WebApi和Owin的“前端”無狀態服務。 在啟動時,這些服務將其路由注冊到RegistryService。
網關使用Registryservices確定將請求定向到的服務。 在這一點上,我正在嘗試解析所述服務的端點,但未能解決。 但是,如果我將路由更改為有狀態的后端服務,則可以正常工作。
任何想法都將非常有幫助
您可以運行此代碼來發現群集中運行的服務的所有端點。 使用此功能,您可以通過查找服務的名稱和分區策略來查找如何與服務對話。
var resolver = ServicePartitionResolver.GetDefault();
var fabricClient = new FabricClient();
var apps = fabricClient.QueryManager.GetApplicationListAsync().Result;
foreach (var app in apps)
{
Console.WriteLine($"Discovered application:'{app.ApplicationName}");
var services = fabricClient.QueryManager.GetServiceListAsync(app.ApplicationName).Result;
foreach (var service in services)
{
Console.WriteLine($"Discovered Service:'{service.ServiceName}");
var partitions = fabricClient.QueryManager.GetPartitionListAsync(service.ServiceName).Result;
foreach (var partition in partitions)
{
Console.WriteLine($"Discovered Service Partition:'{partition.PartitionInformation.Kind} {partition.PartitionInformation.Id}");
ServicePartitionKey key;
switch (partition.PartitionInformation.Kind)
{
case ServicePartitionKind.Singleton:
key = ServicePartitionKey.Singleton;
break;
case ServicePartitionKind.Int64Range:
var longKey = (Int64RangePartitionInformation)partition.PartitionInformation;
key = new ServicePartitionKey(longKey.LowKey);
break;
case ServicePartitionKind.Named:
var namedKey = (NamedPartitionInformation)partition.PartitionInformation;
key = new ServicePartitionKey(namedKey.Name);
break;
default:
throw new ArgumentOutOfRangeException("partition.PartitionInformation.Kind");
}
var resolved = resolver.ResolveAsync(service.ServiceName, key, CancellationToken.None).Result;
foreach (var endpoint in resolved.Endpoints)
{
Console.WriteLine($"Discovered Service Endpoint:'{endpoint.Address}");
}
}
}
因此,對於任何其他來這里的人。 似乎這不是問題。 重置SF群集可修復它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.