Что такое Spring Cloud Eureka
Spring Cloud Eureka является компонентом в Spring Cloud. Он является вторичным инкапсулированным на основе Netflix Eureka, который в основном отвечает за выполнение функций управления услугами в структуре микросервиса. Spring Cloud добавляет конфигурацию автоматизации Spring Boot в Eureka. Нам нужны только простые эталонные зависимости и аннотации, чтобы позволить Spring Boot легко интегрировать приложения MicroService с системой управления услугами Eureka.
Управление услугами
Управление услугами является наиболее основным и основным модулем в рамках микросервиса. В основном он используется для реализации автоматической регистрации и обнаружения различных экземпляров микросервиса.
В начале было не так много служб системы микросервистской системы, которые могли быть созданы, и мы можем завершить звонок службы посредством некоторой статической конфигурации. Например, существуют две услуги A и B. Когда обслуживание A необходимо позвонить в службу B для выполнения бизнес -операции, чтобы достичь высокой доступности услуги B, независимо от того, принимаем ли мы сложный баланс на сервере или балансировку нагрузки на клиенту, нам необходимо вручную поддерживать список экземпляров B. Однако с развитием бизнеса функции системы становятся все более и более сложными, и соответствующие микросервисы становятся все более и более сложными.
Чтобы решить эту проблему, было получено большое количество структур управления услугами и продуктов. Эти структуры фактически вращаются вокруг механизмов регистрации услуг и обнаружения услуг, чтобы завершить автоматическое управление экземплярами применения микросервиса.
Регистрация услуг
В рамках управления услугами обычно строится центр регистрации услуг. Каждый подразделение экземпляра службы регистрирует свой собственный сервис в Центре регистрации и сообщает регистрационному центру серию дополнительной информации, такой как местонахождение хоста экземпляра, номер порта, номер версии, протокол связи и т. Д., А регистрационный центр организует список услуг в соответствии с именем службы.
Обнаружение обслуживания
Поскольку работают в рамках Структуры управления услугами, общение и вызовы между службами больше не реализуются путем определения конкретных адресов экземпляра, но инициируя запросы на имени Сервис. Поэтому, когда вызывающий абонент сервис вызывает интерфейс поставщика услуг, он не знает конкретного местоположения экземпляра услуг. Следовательно, необходимо сначала инициировать запрос на запрос в реестре и получить список экземпляров для достижения доступа к конкретным экземплярам обслуживания.
Построить сервис регистрационного центра Eureka
Построить единственный центр Эврика
Все наши последующие разработки будут основаны на вышеуказанной версии. Следует отметить, что Sring Cloud использует версию снимка, поэтому вам необходимо указать адрес репозитория в файле POM.
Во-первых, мы создаем новый Spring Boot Project, названный его: Spring-Cloud-Eureka и добавляем необходимые зависимости в POM. Конкретный файл POM заключается в следующем:
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <doliderversion> 4.0.0 </modelversion> <groupid> com.sagesource </GroupId> <StrifactId> Spring-Cloud-Eureka </artifactid> <sersion> 0.0.1-snapshot </version> <duckaging> jar </упаковка> <mame> Spring-cloud-eureka </name> <parent> <groupgid> org.springframework.boot </Groupid> <strifactid> spring-boot-starter-parent-parent </artifactid> spring-boot-parent-parent </artifactid>> <sersion> 2.0.2.release </version> <verivePath/> <!-Поиск родителя от репозитория-> </parent> <properties> <project.build.sourceEncoding> utf-8 </project.build.sourceencoding> <project.roport.outputencing> utf-8 </project. <java.version>1.8</java.version> <spring-cloud.version>Finchley.BUILD-SNAPSHOT</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId> org.springframework.cloud </GroupId> <ArtifactId> Spring-Cloud-Starter-netflix-eureka-server </artifactid> </depervice> <dependent> <groupid> org.springframework.boot </GroupD> <ratifactid> Spring-boot-starter-test </artifact> artifact> artifact> artifact> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependency> </dependency> </dependencyManagement> <build> <plugins> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <URL> https://repo.spring.io/snapshot </url> <ploshots> <Nabled> true </enabled> </snapshots> </Repository> <perpository> <id> Spring-milestones </id> <mame> </name> <url> https://rep <Spanshots> <Nabled> false </enabled> </sposhots> </Repository> </Repositories> </project>Начните реестр услуг, чтобы обеспечить разговоры с другими приложениями через аннотацию @EnableTeureKaserver. Этот шаг очень прост. Вы можете включить эту функцию, добавив эту аннотацию в обычное приложение Spring Boot:
@SpringbootApplication@enableteurekaserverpublic class applicationeurekaserver {public static void main (string [] args) {SpressApplication.run (ApplicationEurekaserver.class, args); }}В соответствии с конфигурацией по умолчанию сервер регистрационного центра также зарегистрируется в качестве клиента. Как правило, нам нужно отключить эту функцию, и модифицированное приложение. Myml выглядит следующим образом:
# Spring Configspring: Приложение: Имя: Spring-Boot-Eureka # Server ConfigServer: Порт: 9871 # Eureka configureureka: экземпляр: Hostname: Localhost Client: Register-with-eureka: False # не регистрируйте себя с регистрационным центром. http: // $ {eureka.instance.hostname}: $ {server.port}/eureka/ Поскольку мы все работаем локально, для последующего различия в обслуживании мы установили порт реестра сервисов через Server.port для запуска порта как: 9871
После завершения вышеуказанной конфигурации запустите приложение и посетите http: // localhost: 9871. Вы можете увидеть следующую страницу, на которой список экземпляров, зарегистрированного в настоящее время в Eureka, пуст, указывая на то, что в центре регистрации не было зарегистрировано никакой службы.
Я думаю, что все заметили две строки привлекательных красных слов выше:
ЧРЕЗВЫЧАЙНАЯ СИТУАЦИЯ! Эврика может быть неправильно претендовать на случаи, когда они нет. Обновления меньше, чем пороговое значение, и, следовательно, случаи не истек, чтобы быть в безопасности.
Причина: механизм самозащиты. Во время работы сервера Eureka будет подсчитать, составляет ли доля отказа сердцебиения менее 85% в течение 15 минут. Если это произойдет (его легко удовлетворить во время отдельной отладки, но на самом деле это обычно вызвано нестабильностью сети в производственной среде), Eureka Server будет защищать текущую информацию регистрации экземпляров и подсказывать это предупреждение.
Поскольку эта проблема склонна возникать в отдельных ситуациях, после отключения самозащиты в соответствии с конфигурацией онлайн Эврика все равно будет вызывать тревогу, что привело к выключению безопасного режима, и правильность экземпляра не может быть гарантирована. Поэтому мы в настоящее время игнорируем эту проблему и можем быть решены, когда развертывание кластера будет позже.
Зарегистрировать поставщика услуг
После завершения создания службы регистрационного центра мы можем попытаться добавить существующее приложение Spring Boot в систему управления услугами Eureka.
В качестве примера мы по-прежнему принимаем предыдущий весенний клуб. Нам нужно только изменить следующую конфигурацию Application.yml:
# Имя приложения Spring: Приложение: Имя: Spring-Cloud-Server# Eureka Регистрационный центр Местоположение Eureka: Client: Service-url: defaultzone: http: // localhost: 9871/eureka/
После завершения модификации услуга может быть запущена. В настоящее время мы обновляем страницу управления Eureka и видим информацию о списке экземпляров, в настоящее время зарегистрированной в Eureka следующим образом:
Это показывает, что наш сервис был успешно зарегистрирован в регистрационном центре.
Связанный пример код: https://github.com/sagesource/spring-cloud-set-set-set-ste
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.