注意:請使用官方建議的springboot和springcloud對應的版本
在之間的博客中已經寫到如何建立高可用的注冊中心,地址見高可用注冊中心
現在我們來創建服務治理體系下的一個服務(即服務的提供者)
1.pom.xml
2.application.properties
3.springboot啟動類
4.演示controller
java -jar service-provide-0.0.1-SNAPSHOT.jar --server.port=8081打成jar文件,服務提供者,通過不同端口啟動,做到負載均衡,(啟動之前要啟動,注冊中心)
java -jar service-provide-0.0.1-SNAPSHOT.jar --server.port=8082
注冊中心分別啟動,為了高可用
java -jar spring-cloud-0.0.1-SNAPSHOT.jar --spring.profiles.active=testhost
java -jar spring-cloud-0.0.1-SNAPSHOT.jar --spring.profiles.active=testhost2
上面都啟動完成之后,通過http://testhost:8000訪問
,通過http://testhost2:8001訪問訪問的結果和上面截圖一樣。
現在注冊中心和服務提供者都已經有了,接下來需要來構建服務的消費者,它主要來完成發現服務和消費服務。服務的發現由Eureka客戶端完成,而服務的消費者任務由Ribbon完成。Ribbon是一個基於HTTP和TCP的客戶端負載均衡,它可以在通過客戶端配置ribbonServerList的服務列表去輪訓訪問以達到負載均衡的作用。
第一種方式:構建服務的發現和服務的消費
1.pom.xl
2.application.properties
3.啟動類
4.controller演示
啟動服務消費者,訪問注冊中心:
通過瀏覽器訪問,消費者,http://localhost:9001/ribbon-consumer
看控制台打印的日志:已經做負載均衡了
第二種方式:
pom.xml文件不變和application.properties修改訪問端口為9002
啟動類:
演示controller
配置多個RestTemplate(以下來自官方文檔)通過查看service-provide控制台信息,可以看到ribbon通過輪訓的方式訪問了,不同端口的服務。
如果你想要一個沒有負載平衡的RestTemplate
,創建一個RestTemplate
bean並注入它。要創建@Bean
時,使用@LoadBalanced
限定符來訪問負載平衡RestTemplate
。
重要 |
請注意下面示例中的普通RestTemplate 聲明的@Primary 注釋,以消除不合格的@Autowired 注入。 |
提示 |
如果您看到錯誤java.lang.IllegalArgumentException: Can not set org.springframework.web.client.RestTemplate field com.my.app.Foo.restTemplate to com.sun.proxy.$Proxy89 ,請嘗試注入RestOperations 或設置spring.aop.proxyTargetClass=true |
微信公眾號