Я недавно подвергся воздействию микросервисов и имею некоторое понимание этого аспекта. Я поделюсь этим с вами.
Spring Cloud - это полный набор фреймворков для реализации микросервисов на основе Spring Boot. Можно сказать, что Spring Boot в качестве фреймворка и пружинного облака, поскольку микросервисы вместе образуют новую систему фреймворта, которую нельзя игнорировать. Он предоставляет компоненты, необходимые для разработки микросервиса, таких как управление конфигурацией, обнаружение услуг, автоматические выключатели, интеллектуальная маршрутизация, микроагенты, шина управления, глобальные замки, кампании принятия решений, распределенные сеансы и управление государством кластера, которые являются удобными и простыми в использовании. Spring Cloud включает в себя много подборов, среди которых Spring Cloud Netflix является одной из структур, которые в основном предоставляют модули: обнаружение обслуживания, выключатели схемы и мониторинг, интеллектуальная маршрутизация, балансировка нагрузки клиента и т. Д.
характеристика
(1) Eureka, Регистрация и обнаружение услуг, предоставляет центр регистрации услуг, клиент Service Discovery и удобный интерфейс для просмотра всех зарегистрированных услуг. Все службы используют клиент Eureka Service Discovery, чтобы зарегистрироваться на сервере Eureka.
(2) Zuul, Gateway, все клиенты требуют доступа к сервисным услугам через этот шлюз. Он может использовать определенные конфигурации маршрутизации, чтобы определить, какая служба обрабатывает определенный URL. И получить зарегистрированную службу от Eureka для пересылки запроса.
(3) лента, то есть балансировка нагрузки. Когда Zuul Gateway отправляет запрос на приложение определенной услуги, если служба запустит несколько экземпляров, он отправит его в определенное экземпляр службы через ленту через определенную политику балансировки нагрузки.
(4) Файн, обслуживающий клиент, если службы должны получить доступ к друг другу, вы можете использовать Resttemplate или Fail Client для доступа. Он использует ленту по умолчанию для достижения балансировки нагрузки.
(5) Hystrix, мониторинг и выключатель схемы. Нам нужно только добавить тег Hystrix в интерфейс службы, чтобы реализовать функции мониторинга и выключателя схемы этого интерфейса.
(6) Dashboard Hystrix, панель мониторинга, предоставляет интерфейс, который может отслеживать время, потребляемое сервисными вызовами в каждой службе.
(7) Турбина, мониторинг агрегации, с использованием мониторинга Hystrix, нам необходимо открыть информацию о мониторинге каждого экземпляра службы для просмотра. Турбина может помочь нам объединить информацию о мониторингах всех экземпляров обслуживания в одно место для единого просмотра.
Вы можете обратиться к документу в нем: https://springcloud.cc/spring-cloud-netflix.html
(1) Центр регистрации и мониторинга обслуживания:
@SpringbootApplication@enableteurekaserver@enablehystrixdashboardpublic Class Application Registry {public static void main (string [] args) {new SpringApplicationBuilder (Application.class) .Web (true) .run (args); }}Здесь, @SpringBootApplication с использованием тега Spring Boot показывает, что текущее приложение является приложением Spring Boot. Таким образом, я могу напрямую использовать основную функцию, чтобы запустить приложение в IDE, или я могу запустить его с командной строки после упаковки. Конечно, вы также можете запустить упакованный военный пакет с такого сервера, как Tomcat. Используйте TAG @EnableEurekaserver, чтобы запустить компоненты Реестра услуг Eureka во время запуска. Он будет прослушать порт, который по умолчанию составляет 8761, для получения регистрации услуг. И предоставить веб -страницу. После его открытия вы можете увидеть зарегистрированную службу. Добавление @enablehystrixdashboard предоставит страницу мониторинга. Мы можем ввести адрес службы, который будет контролироваться на нем, чтобы просмотреть состояние вызова интерфейса с включенным мониторингом Hystrix. Конечно, для использования приведенных выше компонентов нам нужно добавить соответствующие зависимости в файле Maven POM, таких как использование пружинного бутора-звездного родителя, полагаясь на пружинную область-стартер-эйрека-сервер и пружина-клуб-стартер-гистрскую доску.
(2) Межпроводной звонок:
Есть два способа сделать сервисные звонки, Resttemplate и FeignClient. Независимо от того, что это за метод, он вызывает интерфейс HTTP службы через интерфейс REST, а параметры и результаты сериализованы и девериализированы по умолчанию через Джексон. Поскольку интерфейс, определяемый Spring MVC RestController, возвращаемые данные сериализуются на данные JSON через Джексон.
Первый тип: Resttemplate, вам нужно только определить боб Resttemplate и установить его на LoadBalanced:
@ConfigurationPublic Class SomeCloudConfiguration {@loadbalanced @bean resttemplate resttemplate () {return new Resttemplate (); }}Таким образом, мы можем внедрить этот боб, где нам это нужно:
открытый класс SomeServiceClass {@autowired private resttemplate resttemplate; public String getUserbyId (long userId) {userDTO Results = RestTemplate.getForObject ("http: // users/getUserdetail/" + userId, userDto.class); вернуть результаты; }}Где, пользователи являются идентификатором службы, лента получит экземпляр этой службы из списка экземпляров службы, отправил запрос и получит результат. Пользователь объекта требует серийного номера, и его антисеральное число будет автоматически завершено.
Второй тип: FeignClient
@Feignclient (value = "users", path = "/users") public usercompositeservice {@requestmapping (value = "/getuserdetail/{id}", method = requestMethod.get, производит = mediaType.application_json_value) userdto getUserbyid (@pathvararable long Id);Нам нужно только определить оправдание, используя @feignclient. Spring Cloud Feign поможет нам генерировать реализацию и получить данные от соответствующей службы пользователей. Среди них значение в @feignclient (value = "users", path = "/users/getuserdetail") является идентификатором службы, а Path - это префикс пути этой группы интерфейсов. В следующем определении метода, как и настройка интерфейса Spring MVC, для этого метода его соответствующий URL IS/users/getUserDetail/{id}. Затем, при его использовании, как ввод в общий сервис, а затем используйте его:
public class neamothersErviceClass {@autowired private usercompositeservice userservice; public void dosomething () {// ...... userdto results = userservice.getuserbyid (userid); // другая операция ...}}(3) Выключатель цепи:
// Выключатель схемы: Чтобы решить проблему, которая вызывает метод отступления, чтобы заменить неудачный метод, когда вызов метода не стерж, была достигнута функция устойчивости к ошибкам/блокировке блокировки. // SharkbackMethod указывает метод отступления @hystrixcommand (sharkbackmethod = "dostudentfallback") @requestmapping (value = "dostudent", method = requestmethod.get) public String dostudent () {return "Ваше имя: секрет, ваш возраст: секрет!Среди них используйте @enablecircuitbreaker, чтобы включить поддержку выключателя схемы. Spring Cloud обеспечивает консоль для контроля работы автоматического выключателя, которая включена через аннотацию @enablehystrixdashboard.
Выше представлено краткое введение в компоненты Spring Cloud Netflix. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать wulin.com больше.