天天看點

springCloud項目結合Eureka搭建OpenFeign負載均衡

1.首先配置子產品的pom檔案,引入openFeign

<dependencies>
    <!--openfeign-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!--eureka-client 已經內建了ribbon複雜均衡-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--熱部署-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
           

2.配置application.yml檔案

server:
  port: 80

eureka:
  client:
    #true表示将自己注冊進eureka server
    register-with-eureka: false
    #true預設值,從eureka server抓取已有的注冊資訊,單節點無所謂,叢集必須設定為true才能配合ribbon使用負載均衡
    fetch-registry: true
    service-url:
      #defaultZone: http://localhost:7001/eureka/
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
  #配置主機名稱
  instance:
    instance-id: consumerfeignorder80
    prefer-ip-address: true
           

3.主啟動類,必須使用@EnableFeignClients注解,激活feign

@SpringBootApplication
@EnableFeignClients//使用feign并開啟激活
public class ConsumerFeignOrderMain {
    public static void main(String[] args) {
            SpringApplication.run(ConsumerFeignOrderMain.class,args);
        }
}
           

4.建立一個service接口

openFeign是基于接口調用微服務的,是以在業務接口添加注解@FeignClient并制定微服務的名稱,以此來實作負載均衡調用

@ComponentScan
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {

    @GetMapping("/payment/get/{id}")
    CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);
}
           

5.建立controller調用service

@RestController
@Slf4j
public class OrderFeignController {

    @Resource
    private PaymentFeignService paymentFeignService;

    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id){
        return paymentFeignService.getPaymentById(id);
    }
}
           

基于openfeign的負載均衡就搭建好了