他们都是实现服务之间调用的方式
feign 的实现方式是社区版,类似java 的control 里面的实现方式
service + 注解 实现,即 在service中类中定义中增加@feignClient 方式在方法中增加@requsetMapping("/")注解,类似java的controller 写法,在消费者中的启动类中增加enableFeignClient , 在调用的congtroller 中@autowire 注入使用
rabbion + restTemplate 通过应用名 ,地址调用其他服务,rabboin 实现负载均衡
hystrix 服务熔断、 服务降级
服务熔断是服务端(生产者)做。熔断配置 @hystrix() 自定义一个熔断发方法,让异常直接调用该方法,达到不抛出异常返回正常返回值(里面增加字段说明该服务被熔断)
降级,是在消费者(客户端)做的,配合feign 使用 @feignClient(,fallbackfactory()),增加配置类注 实现fallbackfactory, 重写里面的方法 返回 调用服务方法,重写服务的方法(不去调用生产者服务端)直接返回正常json ,里面给提示降级。
服务降级是为了高并发时候,关掉一些不常用的服务,把资源出来,等风头过去,重新开启,淘宝1111,关闭退款服务
zuul 服务网关 :其中路由功能负责外部转发到具体的微服务上,是实现外部访问统一入口的基础,而过滤功能则负责对请求处理过程中的干预,实现请求校验,zuul 和eureka进行整合,将zuul 自身注册未eureka 服务治理下的应用,同时从eurka 中获取其他微服务的消息,
两大功能 路由 、 过滤
zuul :
routes:
myapp .servcierId : true 名称真实应用名
myapp.path :/myapp/** 别名
ignored-service: "*" 隐藏所有真实的应用名