2017-07-25 84 views
0

我有一个微服务(MS)/ Doamin(D)架构,其中每个MS/D服务都有自己的休息api。我一直在寻找使用领事进行服务检测,但我不知道如何使用它,因为。我已经按照文档,但它无法找到如何使用MS/D架构中所有MS/D具有多个休息端点的Consul ...领事 - 服务检测微服务/域架构

在文档中,感觉就像您注册一个普通的“服务主机”您没有注册像“mydomain.com:8080/api//”这样的服务端点,您只需注册“mydomain.com:8080/即运行该服务的主机。这感觉就像我错过了一些东西,但我真的不知道如何使用Consul注册rest-api网址。我使用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, 
}; 

如何注册所有的REST API端点1个微服务,如:

<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服务可以问领事让我休息 - ms1_service3

如果我不能做到这一点“知道如何”服务端点的样子必须在调用系统,感觉不对劲......这感觉就像我错过了这里有些基本的东西。

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

会很高兴,如果有人可以帮我解释了如何结合使用领事与MS/d-休息端点

谢谢最佳实践!

回答

0

我建议你看看C#中的Microphone库,这个库很容易配置和使用。

它似乎也可以注册位于同一机器上的不同服务,而不会对此库产生任何问题。

+0

嗨,感谢您的回答,但我没有看到这个框架可能helo因为....因为没有使用它是upp调用客户端到现在如何剩下的网址看起来像。在Microphone文档中的例子中,它看起来像:MakeSomeCall(“/ api/orders”,instance.ServiceAddress,我想为当前实例获取洞休息URL,而不是当前服务的主机url- – user3154653

+0

或者你是说当做:Cluster.RegisterService(新Uri($“http:// localhost/api/someaction”),提供者,“orders_someaction”,“v1”,记录器);我可以设置url到我的动作url? – user3154653