天天看點

springcloud學習-11 Ribbon、OpenFeign【周陽springcloud2020學習筆記】

負載均衡:将使用者請求分攤到多個服務上,進而達到系統的高可用性。

常見:軟體nginx、LVS;硬體F5等

ribbon和nginx差別

1.ribbon本地用戶端負載均衡:

在調用微服務接口時,會在注冊中心上擷取服務資訊清單之後緩存到JVM本地,進而再本地實作了RPC遠端服務調用技術。

2.nginx服務端負載均衡:

将使用者所有請求都交給nginx,然後再由nginx來轉發請求,進而達到了服務端的負載均衡。

OpenFeign的注解

1.@FeignClient 用于聲明Feign用戶端可通路的Web服務

2.@EnableFeignClients 用于修飾SpringBoot應用的入口類,以通知SpringBoot啟動應用時,掃描應用中聲明的Feign用戶端可通路的Web服務

消費端使用openFeign

1.建立module:feign-consumer-order80

2.pom.xml

<dependencies>

            <!-- openfeign -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>

            <!-- eureka -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>

            <!--公共子產品:通用工具包-->
            <dependency>
                <groupId>cn.chen.demo</groupId>
                <artifactId>api-common</artifactId>
                <version>${project.version}</version>
            </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>

            <!-- lombok -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>

            <!-- test -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>

        </dependencies>
           

3.yml

server:
      port: 80

    eureka:
      client:
        register-with-eureka: false
        service-url:
          #defaultZone: http://localhost:7001/eureka # 單機版
          defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  #叢集版
           

4.主啟動類

@SpringBootApplication
    @EnableFeignClients
    public class OpenFeignOrderApplication {
        public static void main(String[] args) {
            SpringApplication.run(OpenFeignOrderApplication.class, args);
        }
    }

           

5.業務類

1)PaymentService

@Component
        @FeignClient(value = "payment-service")
        public interface PaymentService {

        	/**
        	 * 要與提供方的controller裡的方法保持一緻
        	 * @param id
        	 */
        	@GetMapping(value = "/payment/get/{id}")
        	public CommonResult<Payment> getById(@PathVariable ("id") Long id);

        }
           

2)OrderController

@RestController
        @RequestMapping("/consumer")
        public class OrderController {

        	@Autowired
        	private PaymentService paymentService;

        	@GetMapping(value = "/payment/get/{id}")
        	public CommonResult getPaymentById(@PathVariable("id") Long id){
        		return paymentService.getById(id);
        	}
        }
           

6.測試

兩台eureka7001、7002

兩台payment8001、8002

feignOrder

#Feign自帶負載均衡配置項

日志列印

1.級别

NONE: 預設的,不顯示任何日志

BASIC: 僅記錄請求方法、URL、響應狀态碼以及執行時間

HEADERS:除了BASIC 中自定義的資訊外,還有請求和響應的資訊頭

FULL: 除了HEADERS中定義的資訊外, 還有請求和響應的正文以及中繼資料。

2.配置日志bean:OpenFeignConfig

@Configuration
    public class OpenFeignConfig {

    	@Bean
    	Logger.Level feignLoggerLevel(){
    		return Logger.Level.FULL;
    	}

    }
           

3.yml開啟

# 開啟feign日志
    logging:
      level:
        # feign日志以什麼級别監控哪個接口
        cn.chen.cloud.service.PaymentService: debug
           

4.背景就會列印咯

springcloud學習系列目錄

繼續閱讀