2016-05-24 4 views
-1

В моем проекте «DE» у меня есть много сервисов, таких как snmp, DiameterService, сервис Cli и т. Д. Я хочу создать архитектуру микросервиса для нее, используя весеннюю загрузку, такую ​​как DE1 для SNMP, DE2, DE3 и т. Д., Которые будут зарегистрированы в реестре Eureka. Но я не хочу получать доступ к сервису через реализацию REST. Есть ли другой способ сделать это, кроме REST.Внедрение микросервиса с использованием весеннего ботинка без обслуживания отдыха

<?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 используется только для перевода имен, вы фактически не можете получить доступ к сервису с помощью Eureka.

Если вы хотите разрешить имена вручную, вы можете это сделать. Autowire a 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"); 

Но, как я уже сказал, если ваша цель состоит в том, чтобы общаться с вашими услугами через Eureka, то это не представляется возможным, так как это не то, что Eureka сделано для.

+0

Спасибо g00glen00b.Мои услуги свяжутся после получения данных о сервисе через Eureka, но механизм должен быть чем-то отличным от реализации REST. –

+0

Вы имеете в виду, что ваши микросервисы должны использовать что-то иное, чем REST, или если Eureka может использовать что-то другое? – g00glen00b

+0

Мои услуги при общении друг с другом должны использовать некоторые различия. чем REST. Мой проект - DE. Я создам микросервис DE1 для службы snmp, DE2 для службы cli, которая будет регистрироваться в эврика. Затем один из микросервисов говорит, что DE3 будет принимать служебные данные из реестра и получать к ним доступ. Что касается доступа, который я хочу обойти без REST, и я использую весеннюю загрузку. –

0

Наверное, к этому времени вы ответите на ваш вопрос, но в любом случае. Служба связи Microservices является синхронной и приводит к шаблону Orchestration. То, что вы ищете, это шаблон хореографии, который обычно достигается с помощью обмена сообщениями (например, AMQP) и источников событий. Есть несколько примеров, и вы можете (как всегда) полагаться на Fowler excellent description. Имейте в виду, что уход за хореографом забирает Эврика из уравнения. Компоненты Netflix не обеспечивают простое решение или реализацию для этого шаблона.

Смежные вопросы