【发布时间】:2017-12-31 06:43:18
【问题描述】:
我有一个微服务 (MS)/Doamin (D) 架构,其中每个 MS/D 服务都有自己的 rest api。我一直在研究使用 Consul 进行服务检测,但我不知道如何使用它,因为。我已按照文档进行操作,但无法找到如何在 MS/D 架构中使用 Consul,其中所有 MS/D 都有多个休息端点...
在文档中,感觉就像您正在注册一个普通的“服务主机”,您没有注册像“mydomain.com:8080/api//”这样的服务端点,您只是在注册“mydomain.com:8080/”,即正在运行的主机服务。感觉好像我错过了一些东西,但我真的不知道如何使用 Consul 注册 rest-api url。我正在使用 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 的休息端点
如果我不能做到这一点,那么服务端点外观的“诀窍”必须在感觉不对的调用系统中,所以......感觉就像我在这里错过了一些基本的东西。
我也一直在研究使用 KV 来存储 rest-api-endpoints 但因为它的键值你只能为每个键值注册 1 个服务所以如果我有 10 个 MS 的一种只有 1 个 kan 存储在当前“键"值。
如果有人可以帮助我解释如何将 Consul 与 MS/D-rest 端点结合使用的最佳实践,我将非常高兴
谢谢!
【问题讨论】:
标签: c# rest microservices consul