Открытие
Этот пример основан на базе данных памяти Springboot, реализации модульных тестов и независимых от базы данных и использования RestTemplate для употребления Spring Boot Service.
В примере SERTFUL SERVICE, который использует RestTemplate для использования Spring Boot, мы упомянули, что при вызове Spring Boot Service URL -адрес службы необходимо записать в файл конфигурации, но независимо от того, какой из этих двух методов, после изменения IP -адреса, программы необходимо изменить и сервис перераспределяется. Эту проблему можно эффективно избежать при использовании ленты.
Предисловие:
Есть два способа реализации мягкой балансировки нагрузки, а именно балансировки нагрузки на сервере и балансировки нагрузки на клиенту.
Серверная балансировка нагрузки: когда браузер выдает запрос на фон, он сначала отправит запрос на обратный прокси-сервер. Обратный прокси -сервер решит, какой сервер отправлять запрос на основе таблицы отображения IP: портов и политика балансировки нагрузки, развернутая клиентом. Как правило, используется технология обратного прокси NGINX.
Балансировка нагрузки клиента: когда браузер выполняет запрос на фон, клиент привлечет доступную информацию о службе, зарегистрированную на сервере, на регистрацию службы (например: Eureka Server), а затем напрямую нажмите, какой сервер отправляет запрос в соответствии с политикой балансировки нагрузки. Весь этот процесс выполняется на стороне клиента и не требует участия сервера обратного прокси.
1. Запустите сервер Eureka
Пожалуйста, обратитесь к этому примеру: запустите сервер Eureka в Spring Cloud
2. Запустите микросервис и зарегистрируйтесь на сервере Eureka
Spring Cloud - Зарегистрируйте Spring Boot Service на сервер Eureka
Чтобы продемонстрировать эффект балансировки нагрузки, запустите другую службу, обратите внимание, что номер порта должен быть изменен на непоследовательный
3. Добавить поддержку ленты
1. Добавить зависимости ленты
2. Добавить поддержку балансировки нагрузки
пакет com.chhliu.springboot.restful; Импорт org.springframework.beans.factory.annotation.autowired; Импорт org.springframework.boot.springapplication; Импорт org.springframework.boot.autoconfigure.springbootapplication; Импорт org.springframework.boot.web.client.resttemplatebuilder; Import org.springframework.cloud.client.loadbalancer.loadbalanced; Импорт org.springframework.cloud.netflix.eureka.enableteurekaclient; Импорт org.springframework.context.annotation.bean; импорт org.springframework.web.client.resttemplate; @Springbootapplication @enableeurekaclient public class springbootresttemplateapplication {@autowired private resttemplatebuilder строитель; @Bean @loadbalanced // Добавление поддержки балансировки нагрузки очень проста. Вам нужно только добавить аннотацию @loadbalanced в Resttemplate. Тогда RestTemplate имеет функцию балансировки нагрузки. Если аннотация @loadbalanced не добавлена, Java.net.unknownhostexception: будет сообщено исключение Springboot-H2. В настоящее время служба не может быть вызвана путем регистрации имени службы на сервере Eureka, потому что RestTemplate не может составить карту с имени службы на IP: порт, а функция отображения реализована LoadBalancerClient. public resttemplate resttemplate () {return builder.build (); } public static void main (string [] args) {SpringApplication.run (SpringBootRestTemplateAplication.class, args); }} 3. Измените URL -адрес вызова микросервиса
пакет com.chhliu.springboot.restful.controller; Импорт org.springframework.beans.factory.annotation.autowired; Импорт org.springframework.web.bind.annotation.getMaping; Импорт org.springframework.web.bind.annotation.pathvariable; Импорт org.springframework.web.bind.annotation.restcontroller; импорт org.springframework.web.client.resttemplate; импорт com.chhliu.springboot.restful.vo.user; @Restcontroller public class resttemplatecontroller {@autowired private resttemplate resttemplate; @Getmapping ("/template/{id}") public user findbyId (@pathvariable long id) {// Изменить исходную форму IP: порт на имя приложения, зарегистрированное на пользователе сервера Eureka u = this.resttemplate.getForObject ("http: // springboot-h2/user/" + id, user.class); System.out.println (u); вернуть u; }}4. Проверьте состояние сервера Eureka
5. В браузере обновите http: // localhost: 7904/template/2 адрес много раз
6. Результаты теста
7900 портовой сервис:
Hibernate: выберите user0_.id как id1_0_0_, user0_.age as age2_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ из пользователя user0_, где user0_.id =? Hibernate: выберите user0_.id как id1_0_0_, user0_.age as age2_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ из пользователя user0_, где user0_.id =? Hibernate: выберите user0_.id как id1_0_0_, user0_.age as age2_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ из пользователя user0_, где user0_.id =? Hibernate: выберите user0_.id как id1_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ от пользователя user0_ user0_.id =?
7901 Порт Сервис:
Hibernate: выберите user0_.id как id1_0_0_, user0_.age as age2_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ из пользователя user0_, где user0_.id =? Hibernate: выберите user0_.id как id1_0_0_, user0_.age as age2_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ из пользователя user0_, где user0_.id =? Hibernate: выберите user0_.id как id1_0_0_, user0_.age as age2_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ из пользователя user0_, где user0_.id =? Hibernate: выберите user0_.id как id1_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ от пользователя user0_ user0_.id =? Hibernate: выберите user0_.id как id1_0_0_, user0_.age as age2_0_0_, user0_.balance as balance3_0_0_, user0_.name как name4_0_0_, user0_.username как username5_0_0_ из пользователя user0_, где user0_.id =?
7904 Служба порта:
Пользователь [id = 2, username = user2, name = li si, возраст = 20, баланс = 100,00] 2017-01-23 09: 58: 05.682 Информация 7436 --- [erlistupdater-0] C.netflix.config.chiednamicproperty: Flipping hopport: Springboot-h2.ribbon.Activecnecnections. niws.loadbalancer.availabilityfilteringrule.activeconnectionslimit = 2147483647 Пользователь [id = 2, username = user2, name = li si, возраст = 20, баланс = 100,00] Пользователь [id = 2, username = user2, имя = li si, возраст = баланс = 100.00] пользователь [id = usermame, user2, имя = li si, возраст = 20,00]. Баланс = 100,00] Пользователь [id = 2, username = user2, name = li si, возраст = 20, баланс = 100,00] пользователь [id = 2, username = user2, name = li si, возраст = 20, баланс = 100,00] пользователь [id = 2, username = user2, имя = li si, возраст = 20, баланс = 100,00] пользователь [id = userme = user2, li si, возраст = 20, баланс = 100,00] [id = 2, user2, name. Баланс = 100,00] Пользователь [id = 2, username = user2, name = li si, возраст = 20, баланс = 100,00]
Из приведенных выше результатов испытаний мы видим, что в общей сложности 7904 сервисов порта были скорректированы 9 раз, из которых 7904 сервисов порта были скорректированы 4 раза, а 7901 порты были скорректированы 5 раз, что было ровно 9 раз.
После вышеуказанных этапов лента в основном используется для реализации функции балансировки нагрузки клиента.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.