2016-05-24 17 views
-1

在我的项目“DE”中,我有很多服务,比如snmp,DiameterService,Cli服务等等。我想为它创建一个微服务架构,使用像DE1这样的弹簧引导进行SNMP,DE2, DE3等将在Eureka注册中心注册。但我不想通过REST implementationaion访问服务。除此之外,还有其他方式可以做到这一点。在没有休息服务的情况下使用弹簧引导来实现微服务

<?xml version="1.0" encoding="UTF-8"?> 
    <service-config-list> 

    <service-config> 
     <service-name>SNMPService</service-name> 
     <service-class-name>snmpService</service-class-name> 
     <service-status>true</service-status> 
    </service-config> 
    <service-config> 
     <service-name>IPC_MSG</service-name> 
     service-status>true</service-status> 
    </service-config> 

<!-- 
<service-config> 
     <service-name>ControllerService</service-name> 
     <service-class-name>controllerService</service-class-name> 
     <service-status>false</service-status> 
    </service-config> 

<service-config> 
     <service-name>SubsNetworkNotfService</service-name> 
     <service-class-name>subsNetworkNotfService</service-class-name 
     <service-status>false</service-status> 
    </service-config> -->   
    <service-config> 
     <service-name>TariffCheckService</service-name> 
     <service-class-name>tariffCheckService</service-class-name> 
     <service-status>true</service-status> 
    </service-config> 
    <service-config> 
     <service-name>DiameterService</service-name> 
     <service-class-name>diameterService</service-class-name> 
     <service-status>true</service-status> 
    </service-config> 


    <service-config> 
     <service-name>CLIService</service-name> 
     <service-class-name>cliService</service-class-name> 
     <service-status>false</service-status> 
    </service-config> 
+0

当你说你“有很多像......一样的服务”时,你是什么意思?你能分享一些更多的实现细节吗? – miensol

+0

@miensol:我添加了详细信息。 –

回答

0

尤里卡注册表仅用于名称翻译,您实际上无法使用Eureka访问服务。

如果您想手动解析名称,可以这样做。 Autowire LoadBalancerClient,然后您可以使用balancerClient.choose("service-id")检索实际目标。

例如:

ServiceInstance instance = balancerClient.choose("my-microservice"); 

// Retrieve host name or IP address 
instance.getHost(); 

// Creates an URI, replacing the service ID with the actual hostname 
balancerClient.reconstructURI(instance, new URI("http://my-microservice/foo/bar"); 

但是就像我说的,如果你的目标是你的服务,通过尤里卡沟通,那么这是不可能的,因为这不是尤里卡用于制造。

+0

感谢g00glen00b.My服务通过Eureka获取服务详细信息后进行通信,但机制应该与REST实现有所不同。 –

+0

你的意思是你的微服务应该使用与REST不同的东西,或者如果Eureka可以使用不同的东西? – g00glen00b

+0

我的服务在互相沟通时应该使用一些差异。机器比REST。我的项目是DE。我将为snmp服务创建微服务DE1,同样为cli服务创建DE2,它将在eureka中注册。然后一个微服务说DE3将从注册表中获取服务细节并访问它们。访问部分我想在没有REST的情况下进行,并且我使用的是spring boot。可以提供一些建议吗? –

0

我想这个时候你会有你的问题回答,但无论如何。 微服务的其他通信是同步的,并导致编排模式。您正在寻找的是编排模式,通常通过消息传递(例如 - AMQP)和事件采购来实现。 有很多例子,你可以(一如既往)依靠Fowler excellent description。请记住,对编排进行研究使得Eureka不在等式之列。 Netflix组件不提供这种模式的简单解决方案或实现。

相关问题