Netfilx听起来微服务很高大上,但是做起来时因为有了框架,所以只是简单的注解和类就可以搞定了。
一、Eureka配置需要配公共的访问地址,引入server和client包,server需要禁用自身的注册功能。
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:7000/eureka
instance:
hostname: ldx-eureka
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 4000
Note:导入用户类时需要去其他服务找类。需要先打包install进本地仓库之后,其他服务才可以用。maven中,clear是清除target文件,compile是生成target文件,package是打成jar等包,install是把jar包放到本地maven仓库中,deploy就是发布远程仓库。因为Java核心的就是包依赖,所以做的这么细粒度。
二、feign是负载均衡和服务间调用。需要专门生成一个接口,这个接口带上注解去请求其他服务。本服务调这个接口,而不是直接调其他服务。
pr:feign整合了ribbon,ribbon是管理负载均衡的。这个策略是内置的,不用设置,如果是多个相同服务则自动采取轮询。
@Component
@FeignClient(name = "ldx-order",fallback = OrderFeignFallback.class)
public interface OrderFeignClient {
@PostMapping("/order/add")
public String add(UserCommon userCommon);
}
三、hystrix是服务降级和服务熔断。降级和熔断都需要在服务调用失败时返回内容。正好,在调用其他服务的这个接口做文章,实现这个接口,成为回调类。如果正常调用的话,就是调用其他服务,如果不成功则调用这个回调类。
@Component
public class OrderFeignFallback implements OrderFeignClient {
@Override
public String add(UserCommon userCommon) {
System.out.println("发生了服务降级");
return "发生了服务降级";
}
}
四、Zuul作为网关,访问固定的网址前缀时,转移到某个服务上。需要在启动类上加注解@EnableZuulProxy,也要作为微服务中的一个。但是配置上网关后,被转发的服务降级就不生效了。这个问题暂时搁置,要去唱歌了。
zuul:
routes:
order-api:
path: /oapi/**
serviceId: ldx-order-api