1.Ribbon是什么?


2.訂單服務使用Ribbon調用支付服務
上一節我們已經搭建了支付服務,現在我們搭建訂單服務
1.pom

我們可以發現
spring-cloud-starter-netflix-eureka-client 這個里面已經集成了Ribbon
2.yml
server:
port: 80
spring:
application:
name: cloud-consumer-service #服務名
eureka:
client:
#表示是否將自己注冊進EurekaServer默認為true
register-with-eureka: true
#是否從EurekaServer抓取已有的注冊信息,默認為true,單節點無所謂,集群必須設置為true才能配合ribbon使用負載均衡
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
#defaultZone: http://localhost:7001/eureka 單機版
3.啟動類
@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE")
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class,args);
}
}
4.控制層

5.使用RestTemplate
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced //使用默認的Ribbon輪詢機制
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
這樣就實現了Ribbon +RestTemplate
Ribbon和Eureka整合后可以直接調用服務而不用再關心ip地址和端口號
3.支付服務集群
Ribbon使用了輪詢那么就需要 支付方使用集群才能起到負載均衡的作用
8002的配置和8001是一樣的。端口的位置改一下就好

服務名一定要一樣的,如下所示,說明我們集群搭建成功

4.自定義負載均衡算法:
方式一:在springboot主程序掃描的包外定義配置類,然后為springboot主程序添加 @RibbonClient 注解引入配置類。
配置類不應該在SpringBoot的包路徑下,通過@RibbonClient 注解加載:@Configurationpublic class MySelfRule {
@Bean
public IRule myRule(){
return new RandomRule();//定義為隨機
}
}
springboot主程序:
@SpringBootApplication
@EnableEurekaClient
//在啟動該微服務的時候就能去加載我們的自定義Ribbon配置類,從而使配置生效
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MySelfRule.class)
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class,args);
}
}
方式二 自定義LoadBalance:



controller層使用


這期結束了,下期再會!
