Consul - 服务检测微服务/域架构

时间:2017-07-25 11:13:55

标签: c# rest microservices consul

我有一个微服务(MS)/ Doamin(D)架构,其中每个MS / D服务都有自己的rest api。我一直在研究使用Consul进行服务检测,但我无法弄清楚如何使用它,因为。我已经按照文档但它无法找到如何在MS / D架构中使用Consul,其中所有MS / D都有多个休息端点...

在文档中,您感觉自己正在注册一个简单的服务主机"您没有注册像" mydomain.com这样的服务端点:8080 / api //您只是注册" mydomain.com:8080 /即运行该服务的主机。感觉我错过了一些东西,但我真的无法弄清楚如何使用Consul注册rest-api urls。我使用Consul.NET(https://github.com/PlayFab/consuldotnet),我的注册微服务的设置是:

var client = GetServiceClient();
var httpCheck = new AgentServiceCheck()
{
  DeregisterCriticalServiceAfter = TimeSpan.FromMinutes(1),
  Interval = TimeSpan.FromSeconds(15),
  HTTP = $"http://{host}:{microservicePort.ToString()}/healthcheck/"
};

var agentReg = new AgentServiceRegistration()
{
  Checks = new[] { httpCheck },
  Address = <serviceIp>,
  ID = microServiceUniqueIdentifier,
  Name = <servicename>,
  Port = microservicePort,
};

如何为1个微服务注册所有其余的api端点,如:

<microservice1>/api/<entity>/<api-service1> with <servicename> ms1_service1 
<microservice1>/api/<entity>/<api-service2> with <servicename> ms1_service2 
<microservice1>/api/<entity>/<api-service3> with <servicename> m1s_service3

所以另一个MS / D服务可以要求Consul为我获取ms1_service3的休息端点

如果我不能这样做,那么&#34;知道如何&#34;服务端点看起来如何必须在呼叫系统中感觉错误所以......感觉我在这里错过了一些基本的东西。

我也一直在考虑使用KV存储rest-api-endpoints但是因为它的关键值你只能为每个键值注册1个服务所以如果我有10个MS只有1个kan存储在当前&# 34;键&#34;值。

如果有人能帮助我解释如何将Consul与MS / D-rest端点结合使用的最佳实践,那将非常高兴

谢谢!

1 个答案:

答案 0 :(得分:0)

我建议你看看C#中的Microphone库,它易于配置和使用。

您似乎也可以在同一台计算机上注册不同的服务而不会出现此库的问题。