Eureka - это продукт с открытым исходным кодом Netflix, который обеспечивает регистрацию и обнаружение услуг, а также обеспечивает полную реализацию реестра услуг и обнаружения услуг. Это также один из самых важных и основных компонентов в системе Springcloud.
Фоновое введение
Сервисный центр
Сервисный центр также называется регистрационным центром, который управляет различными функциями обслуживания, включая регистрацию обслуживания, обнаружение, выключатель схемы, нагрузку, понижение и т. Д., Такие, как различные функции фона администратора администратора Дуббо.
Какие изменения произойдут с отношениями вызова сервисного центра? Нарисуйте несколько простых диаграмм, чтобы помочь вам понять
Проект A Calls Project B
Обычно вызовите проект A, чтобы запросить проект B
После получения сервисного центра не может быть удалено услуги и использование напрямую, и его необходимо вызвать через сервисный центр.
Проект A Calls Project B, проект B вызывает проект C
В настоящее время шаги для вызова будут двумя шагами: первым шагом является то, что проект первого запроса проекта B -сервера из сервисного центра, а затем проект B запрашивает службу проекта C в сервисном центре.
Вышеуказанные проекты - это просто простые вызовы между двумя или тремя, но если есть более 20 проектов и 30 проектов, к концу 2015 года распределенные проекты нашей компании достигли более 20. Любые изменения в одном из проектов будут включать в себя несколько проектов, которые перезагружаются, что очень хлопотно и подвержено ошибкам. Чтобы получить услуги через сервисный центр, вам не нужно обращать внимание на IP -адрес проекта, который вы звоните. Он состоит из нескольких серверов. Каждый раз, когда вы заходите в сервисный центр, чтобы позвонить доступным услугам.
Поскольку в сервисном центре были зарегистрированы все виды услуг, есть много передовых функций. Например, несколько сервисов предоставляют ту же услугу, чтобы сбалансировать нагрузку; Следите за скоростью успеха вызова сервера, чтобы выполнить разрыв схемы, удалить точки неисправности в списке услуг; Следите за временем вызова службы, чтобы установить разные веса для разных серверов и т. Д.
Прежде чем говорить об Эврике, я сплетнику о Netflix
Netflix
Следующее введение поступает из энциклопедии Baidu:
Netflix-американская компания, которая предоставляет онлайн-потоковые средства массовой информации на месте в Соединенных Штатах и Канаде, а также пользовательские DVD и Blu-Ray Disc Online Services. Основанная в 1997 году, компания находится в штаб -квартире в Лос -Гайту, штат Калифорния, и начала подписные услуги в 1999 году. В 2009 году компания могла предоставить до 100 000 DVD -фильмов и иметь 10 миллионов подписчиков. 25 февраля 2007 года Netflix объявила, что продал свой 1 миллиард DVD. В его отчете говорится, что в 2011 году продажа фильмов Netflix онлайн составила 45% от общего онлайн -продаж фильмов американских пользователей.
В первый раз, когда я увидел это слово, это было в начале различных американских драм или фильмов. Представитель американских драм, снятых Netflix, включают в себя «Карточные дома», «наркобароны» и «незнакомцы». Позже, когда я изучал Springcloud, я обнаружил компании Netflix и подумал, были ли они той же компанией. После проверки суффикса по электронной почте на GitHub я определил, что это действительно та же компания. На самом деле, микросервисы Springcloud основаны на продуктах Netflix с открытым исходным кодом.
Компоненты Framework с открытым исходным кодом Netflix были доказаны в крупномасштабной распределенной среде микросервиса Netflix в течение многих лет и постепенно принимаются сообществом в качестве стандартных компонентов для построения фреймворков микросервиса. Продукты Spring Cloud с открытым исходным кодом в основном основаны на дальнейшей упаковке компонентов Netflix с открытым исходным кодом, что облегчает разработчикам Spring создание основной структуры микросервиса. Для некоторых компаний, которые намерены создать систему фреймворса микросервиса, в полной мере использовать или ссылаться на компоненты микросервиса с открытым исходным кодом Netflix (или пружинное облако) и провести необходимую настройку предприятия на этой основе, является необычайно ярлыком в архитектуре микросервиса.
Эврика
Согласно официальному введению:
Eureka-это сервис, основанная на переносе состояния, на основе репрезентативного состояния), которая в основном используется в облаке AWS для размещения служб с целью балансировки нагрузки и отказоустойчивости серверов среднего уровня.
Eureka-это услуга, основанная на отдыхе, в основном используемая в облаке AWS, и определяет сервисы для балансировки нагрузки и отказоустойчивости серверов среднего уровня.
Spring Cloud инкапсулирует модуль Eureka, разработанный Netflix, чтобы обеспечить регистрацию и обнаружение услуг. Эврика принимает архитектуру дизайна CS. Eureka Server - это сервер с функцией регистрации службы, это центр регистрации служб. Другие микросервисы в системе используют клиент Eureka для подключения к серверу Eureka и поддерживать соединение с сердцебиениями. Таким образом, персонал по обслуживанию системы может отслеживать, работает ли каждый микросервис в системе нормально через сервер Eureka. Некоторые другие модули Spring Cloud (например, Zuul) могут использовать сервер Eureka для обнаружения других микросервисов в системе и выполнения соответствующей логики.
Eureka состоит из двух компонентов: сервер Eureka и клиента Eureka. Сервер Eureka используется в качестве сервера регистрации услуг. Клиент Eureka является клиентом Java, используемым для упрощения взаимодействия с сервером, выступает в качестве балансировщика нагрузки на избирательные участки и обеспечивает поддержку отказа от обслуживания. Netflix использует другого клиента в своей производственной среде, которая обеспечивает взвешенную балансировку нагрузки на основе трафика, использования ресурсов и состояния ошибки.
Используйте изображение, чтобы понять следующее:
На приведенном выше рисунке кратко описывается основная архитектура Эврики, состоящая из 3 ролей:
1. Эврика сервер
2. Поставщик услуг
3. Обслуживание потребителя
Кейс -практика
Eureka Server
Spring Cloud помогло мне внедрить центр регистрации услуг, и нам нужно только несколько простых шагов, чтобы завершить его.
1. Добавить зависимости в POM
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId> org.springframework.boot </GroupId> <artifactid> spring-boot-starter-test </artifactid> <cerpope> test </scope> </depertive> </depertive>
2. Добавить аннотацию @EnableEurekaServer в код запуска
@SpringbootApplication@enableteurekaserverpublic class springcloudeurekaapplication {public static void main (string [] args) {SpringApplication.Run (SpringCloudeurekaApplication.class, args); }}3. Файл конфигурации
По умолчанию реестр услуг также попытается зарегистрироваться в качестве клиента, поэтому нам необходимо отключить его поведение регистрации клиента и добавить следующую конфигурацию в application.properties .
Spring.application.name = Spring-cloud-eurekaserver.port = 8000eureka.client.register-with-eureka = falseeureka.client.fetch-registry = falseeureka.client.serviceurl.defaultzone = http: // localhost: $ {server.port}/eureka/http: // $ {server.port}/eureka/http: // $eureka.client.register-with-eureka : указывает, следует ли регистрироваться на сервере Eureka, по умолчанию верно.eureka.client.fetch-registry : указывает, получает ли регистрационная информация от сервера Eureka, по умолчанию верно.eureka.client.serviceUrl.defaultZone : устанавливает адрес для взаимодействия с сервером Eureka. Как услуги запроса, так и службы регистрации должны полагаться на этот адрес. По умолчанию http: // localhost: 8761/eureka; Несколько адресов могут быть использованы и разделены.После начала проекта посетите: http: // localhost: 8000/и вы можете увидеть страницу ниже, где не было найдено никаких услуг
Кластер
Такая критическая служба, как регистрационный центр, если это единственная точка, будет разрушительно столкнуться с неудачей. В распределенной системе Центр регистрации услуг является наиболее важной основной частью и должен находиться в состоянии, где услуги могут быть предоставлены в любое время. Чтобы сохранить его доступность, использование кластеров является хорошим решением. Eureka реализует широко доступное развертывание, регистрируя друг друга, поэтому нам нужно только настроить Eureke Server для настройки других доступных ServiceUrls для достижения высокодоступного развертывания.
Центр регистрации двойного узла
Впервые мы стараемся построить центр регистрации с двумя узлами.
1. Создание Application-peer1.properties в качестве конфигурации сервисного центра PEER1 и Point ServiceUrl to Peer2
Spring.application.name = Spring-Cloud-Eurekaserver.port = 8000Eureka.instance.hostname = peer1eureka.client.serviceurl.defaultzone = http: // peer2: 8001/eureka/
2. Создать приложение-peer2.properties в качестве конфигурации сервисного центра Peer2 и Point ServiceUrl to Peer1
Spring.application.name = Spring-Cloud-Eurekaserver.port = 8001Eureka.instance.hostname = peer2eureka.client.serviceurl.defaultzone = http: // peer1: 8000/eureka/
3. Преобразование хоста
Добавьте следующую конфигурацию в файл хостов
127.0.0.1 Peer1 127.0.0.1 Peer2
4. Запуск пакета
Выполнить следующие команды по очереди
#Package mvn Clean Package# start eurekajava с информацией о конфигурации Peer1 и Peeer2 соответственно -jar Spring-cloud-eureka-0.0.1-snapshot.jar--spring.profiles.active = peer1java -jar spring-cloud-eureka-0.0-snapshot.jar-spring.-priple.-priple.-priple.-priple.-priple.
После начала одного за другим браузер входит: http://localhost:8000/ рендеринг выглядит следующим образом:
Согласно рисунку, можно видеть, что DS-реплики регистрационного центра Peer1 имеет соответствующую информацию о конфигурации Peer2 и появляются в доступных Replicas. Мы вручную останавливаем Peer2, чтобы наблюдать, и обнаруживаем, что Peer2 перейдет в колонку «Недоступно-репликас», указывая на то, что Peer2 недоступен.
Конфигурация этого двойного узла была завершена.
Eureka Cluster Использование
В производстве нам может понадобиться три или более регистрационных центров, чтобы обеспечить стабильность услуги. Принципы конфигурации на самом деле одинаковы, и мы указываем регистрационный центр на другие регистрационные центры соответственно. Здесь мы представим только конфигурацию трех кластеров. Фактически, это похоже на центр регистрации с двойным узлом. Каждый регистрационный центр может указывать на два других узла соответственно и использовать Application.yml для его настройки.
Подробная информация о конфигурации Application.
--Сдстрин: Приложение: Имя: Spring-Cloud-Eureka Профили: Peer1server: Port: 8000eureka: экземпляр: Hostname: Peer1 Client: ServiceUrl: defaultzone: http: // peer2: 8001/eureka/, http: // peer3: 8002/eureka/--- Peer2server: Port: 8001Eureka: экземпляр: HostName: Peer2 Client: ServiceUrl: Defaultzone: http: // peer1: 8000/eureka/, http: // peer3: 8002/eureka/-Spring: Приложение: Имя: Spring-Cloud-Eureka: Peerver3Server: 8002. Имя хоста: Peer3 Client: ServiceUrl: defaultzone: http: // peer1: 8000/eureka/, http: // peer2: 8001/eureka/
Начните регистрационный центр Eureka с параметрами конфигурации PEER1, PEER2 и PEER3 соответственно.
Java -jar Spring-Cloud-Eureka-0.0.1-Snapshot.jar--spring.profiles.active = peer1java -jar Spring-cloud-eureka-0.0.1-snapshot.jar--spring.profiles.active = peer2java -jar Spring-cloud-eureka-0.0.1-sn.jar-jar-jar-jar-jar-j -spring.profiles.active = peer3
После начала одного за другим браузер входит: http://localhost:8000/ рендеринг выглядит следующим образом:
Вы можете увидеть соответствующую информацию о Peer2 и Peer3 в Peer1. Пока что кластер Eureka был завершен
Пример кода
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.