На этот раз мы делимся контентом о регистрации и обнаружении услуг SpringCloud, что будет объяснено строительными сервисными центрами, регистрацией услуг и обнаружением услуг соответственно. Теперь многие стартапы в Пекине начали полагаться на Springcloud. Это может быть из -за богатых документов и компонентов. В конце концов, это относительно полная архитектура микросервиса в настоящее время. Я надеюсь, что этот обмен может принести хорошую помощь всем;
Сервисный центр Eureka
Насколько я знаю и использую многие регистрационные центры, включают Zookeeper и Eureka. Моя предыдущая статья поделилась Dubbo+Zookeeper для создания услуг, поэтому на этот раз я использую Eureka. Структура SpringCloud также рекомендует его в качестве регистрационного центра. Конечно, он может быть интегрирован с другими центрами регистрации услуг. В конце концов, Springcloud полагается на Springboot для создания проектов, поэтому очень быстро интегрировать другие компоненты. Во -первых, создайте проект регистрационного центра Eureka_server и введите зависимости через следующее:
<Depective> <groupid> org.springframework.cloud </GroupId> <ArtifactId> Spring-Cloud-Starter-Eureka-server </artifactid> </gethyederian>
Затем добавьте элементы конфигурации в файл Application.yml:
Сервер: Порт: 2001Spring: Приложение: Имя: Eureka-Serveureka: Клиент: Регистрация с помощью Eureka: False #Forbid Sight, чтобы зарегистрироваться в качестве сервисной регистрации: false #mask Registration Information Encoman: Prefer-IP-ADDRES
После завершения конфигурации вам необходимо запустить класс и добавить аннотацию @enableeurekaserver. Настройки в основном завершены и запускаются. Посетите http: // localhost: 2001/ чтобы получить следующий интерфейс:
Служба регистрации поставщика
В центре регистрации услуг нам также необходимо предоставить некоторые услуги и зарегистрировать эти услуги в сервисном центре. Чтобы облегчить это, сначала мы создаем проект интерфейсного модуля eureka_api, который используется поставщиками услуг и потребителями, и создаем следующий класс параметров возврата и возврата запроса:
public interface userInterface {@postmapping ("/users") morp <list <mouser >> getUsers (morq rq); @Getmapping ("/msg") string getMsg ();}Сущность мышца:
открытый класс Mouser {Private Long ID; частное имя пользователя; Private String userPwd; public long getId () {return id; } public void setId (long id) {this.id = id; } public String getUsername () {return username; } public void setUsername (string username) {this.username = username; } public String getUserpwd () {return userpwd; } public void setUserPwd (String userPwd) {this.userpwd = userPwd; }}Затем создайте модуль eureka_provider на нашей стороне поставщика услуг, а также введите зависимости Eureka, но между ним и на стороне сервера есть небольшая разница:
<Depective> <groupid> org.springframework.cloud </GroupId> <ArtifactId> Spring-Cloud-Starter-eureka </artifactid> </gethyse>
Затем создайте сервис USERCONTROLLER, который будет предоставлен поставщиком услуг, и реализуйте интерфейс userInterface в нашем модуле Eureka_API. Код заключается в следующем:
@RestControllerPublic Class USERCONTROLLER реализует userInterface {@Autowired Private httpservletRequest запрос; @Override public morp <list <mouser >> getUsers (morq rq) {morp <list <mouser >> rp = new morp <> (); Список <mouser> list = new ArrayList <> (); for (int i = 0; i <5; i ++) {mouser mouser = new mouser (); mouser.setid (i); mouser.setusername ("shenniu" + i); list.add (mouser); } rp.sett (list); rp.setStatus (list.size ()> = 1? 1: 0); rp.setmessage (list.size ()> = 1? "": "нет данных еще"); вернуть RP; } @Override public String getMsg () {return »Вот поставщик, порт:"+ request.getServerport (); }}Здесь следует отметить, что в два сервисных интерфейса контроллера не добавляется постмазация или getMapping, поскольку это объявлено реализованным интерфейсом; После определения пользователей и сервисов MSG нам также необходимо иметь возможность вводить их в центр регистрации услуг, поэтому требуется следующая конфигурация Application.yml:
Весна: Приложение: Имя: Eureka-Provider #service Имя Eureka: Client: Service-url: defaultzone: http: // localhost: 2001/eureka/#service Center Экземпляр: Prefer-IP-Address: True Encession-ID: $ {Spring.Application.Name}: $ {Server.port} Server: Port: 2004Нам также необходимо добавить следующий тег @enableeurekaclient в класс запуска, что означает запуск клиента Eureka, потому что поставщик услуг принадлежит клиенту по сравнению с сервисным центром; При запуске проекта Eureka_provider мы можем увидеть следующую информацию в регистрационном центре:
Чтобы убедиться, что интерфейс поставщика услуг в порядке, мы можем напрямую щелкнуть Eureka-Provider: 2004, а затем увеличить путь к использованию интерфейса. Вот: http://192.168.153.148:2004/msg, и мы можем получить следующую информацию, возвращаемую с помощью обычного интерфейса доступа:
Потребительская служба обнаружения
Благодаря услугам интерфейса нам также необходимо потреблять услуги, поэтому мы создаем модульный проект eureka_consumer, поскольку для доступа к нашему поставщику услуг используется метод псевдо-клиента Fegin, и нам также необходимо ввести зависимости Eureka:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId></dependency>
Затем определите службу пользователя -сервиса на уровне сервиса и реализуйте интерфейс в модуле публичного интерфейса eureka_api, код выглядит следующим образом:
@Feignclient (value = "eureka-provider") общедоступный интерфейс userservice Extends userInterface {}Через FeignClient укажите имя приложения SERVER Eureka-Provider. Это имя соответствует каталогу приложений, зарегистрированным в сервисном центре. Создайте выходной вывод USERCONTROLLER на уровне контроллера и предоставьте два отображаемых интерфейса, коды, такие как:
@Restcontrollerpublic class usercontroller {@autowired private userservice userservice; @Getmapping ("/users") public morp <list <mouser >> getUsers (morq rq) {return userservice.getusers (rq); } @Getmapping ("/msg") public String getMsg () {return userservice.getmsg (); }}Точно так же потребительская сторона также должна настроить некоторую информацию в Application.yml:
Весна: Приложение: Имя: Eureka-consumereureka: Client: Service-url: defaultzone: http: // localhost: 2001/eureka/#register Центр. Экземпляр: Prefer-Ip-Address: True Encession-ID: $ {Spring.Application.name}: $ {Server.port} Сервер: порт: 2005Конфигурация аналогична конфигурации поставщика. Наконец, вам нужно объявить следующие аннотации в классе стартапов:
@SpringBootApplication@enabledIscoveryClient // Consumer Client@enablefeignClients // Feign Client Public Class EurekaconsumerApplication {public static void main (string [] args) {SpringApplication.run (eurekaconsumerApplication.class, args); }}После начала проекта eureka_consumer мы можем увидеть информацию, зарегистрированную в регистрационном центре:
Затем, получив доступ к интерфейсу потребителя Eureka_consumer, проверьте данные интерфейса поставщика услуг Eureka_provider, чтобы увидеть, может ли он ответить нормально. Адрес интерфейса http: // 192.168.153.148:2005/msg:
Результат поставщика получается путем доступа к потребителю, который является основным процессом тестирования для регистрации и обнаружения услуг; Что касается того, как потребитель запрашивает интерфейс поставщика, мы можем решить его по следующей ручной диаграмме:
Eureka Service Center высоко доступен
Судя по приведенным выше ручным рисунку, сервисный центр играет очень важную роль. Обычно этот вид сервисного центра не только строит один, поэтому необходимо создать набор высокодоступных сервисных центров; На самом деле, очень просто, что конфигурация поставщика и потребителя не нужно делать. Нам нужно только настроить его в Application.yml проекта Eureka-Server на первом узле и запустить несколько сервисов с разными портами (один и тот же сервер имеет несколько портов, и разные порты сервера могут быть одинаковыми):
server: port: 2001spring: application: name: eureka-serveureureka: client: register-with-eureka: true # When configuring high availability, you need to open and register yourself fetch-registry: true service-url: defaultZone: http://localhost:2002/eureka/ #Register in eureka on port 2002# defaultZone: http: // localhost: 2001/eureka/экземпляр: Prefer-ip-address: true ancession-id: $ {spring.application.name}: $ {server.port} Сервер: выселение-интервал-timer-in-ms: 2000 #exclude.На следующие моменты следует обратить внимание в высокодоступных конфигурациях:
Здесь я создал два адреса реестра: http: // localhost: 2001/и http: // localhost: 2002/; Поскольку адреса реестра, настроенные поставщиком и потребителем, являются Port 2001, чтобы проверить высокую доступность, нам необходимо получить доступ к центру регистрации портов 2002 года, эффекты следующие:
Вы можете видеть, что порт 2002 года имеет такую же регистрационную информацию, что и порт 2001 года. Когда я закрываю приложение порта 2001 года, я все еще могу найти информацию о поставщике и потребителе в 2002 году. Для получения более подробной конфигурации, пожалуйста, обратитесь к официальному описанию веб -сайта.
Адрес GIT: https://github.com/shenniubuxing3
Пакет релиза Nuget: https://www.nuget.org/profiles/shenniubuxing3
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.