遵義網(wǎng)站推廣百度新聞下載安裝
cloud是基礎(chǔ),eureka是服務(wù)注冊和發(fā)現(xiàn),consumer是消費(fèi)者去消費(fèi)provider里的東西,消費(fèi)方式就是Feign和Ribbon,feign? 接口消費(fèi),ribbon? Rest消費(fèi)
服務(wù)降級發(fā)生在客戶端,客戶端因?yàn)檎埱箨P(guān)閉的服務(wù)器,讓他訪問另一個降級服務(wù)
服務(wù)熔斷發(fā)生在服務(wù)端,服務(wù)器報異常了,就會讓請求走第二個服務(wù)
先寫一個實(shí)現(xiàn)類
package com.kuang.springcloud.service;import com.kuang.springcloud.pojo.Dept;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;import java.util.List;
//降級
@Component
public class DeptClientServiceFallbackFactory implements FallbackFactory {@Overridepublic DeptClientService create(Throwable throwable) {return new DeptClientService() {@Overridepublic Dept queryById(Long id) {return new Dept().setDeptno(id).setDname("這個Id=>"+id+"沒有對應(yīng)的信息,客戶端提供了降級的信息,這個服務(wù)現(xiàn)在已經(jīng)被關(guān)閉").setDb_source("沒有數(shù)據(jù)~");}@Overridepublic List<Dept> queryAll() {return null;}@Overridepublic String addDept(Dept dept) {return null;}};}
}
在接口那里加一個注解? feign里
package com.kuang.springcloud.service;import com.kuang.springcloud.pojo.Dept;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;import java.util.List;@Component
@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT",fallbackFactory = DeptClientServiceFallbackFactory.class)
public interface DeptClientService {@GetMapping("/dept/get/{id}")Dept queryById(@PathVariable("id") Long id);@GetMapping("/dept/list")List<Dept> queryAll();@PostMapping("/dept/add")String addDept(Dept dept);}
在消費(fèi)者fegin里的yml文件加上配置?
server:port: 80#開啟降級feign.hystrix
feign:hystrix:enabled: true#Eureka 配置
eureka:client:register-with-eureka: false #不向Eureka注冊自己service-url:defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
?
然后把服務(wù)器關(guān)了。
服務(wù)降級生效?
?
?就是當(dāng)服務(wù)器在A爆滿的時候需要關(guān)閉其他的服務(wù)器來去跑A的服務(wù),才能支撐,但是別人訪問C的時候,你必須采用服務(wù)降級,來讓他知道服務(wù)器關(guān)閉了,而不是直接拋個異常給他。
?