2016-05-24 50 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組件不提供這種模式的簡單解決方案或實現。

相關問題