EureakServer的搭建流程
第一步,导入eureka-server依赖,以及springboot的web环境依赖。
第二布,主启动类上打注解,@EnableEurekaServer,开启eureka服务端功能
第三步,yml配置文件中,配置注册中心的端口号,主机名,注册中心地址
Ribbon的整合流程
第一步,导入ribbon依赖
第二部,给RestTemplate的Bean定义方法上,加上注解@LoadBalanced,让这个restTemplate有负载均衡的功能
第三步,修改restTemplate调用服务的url,将目标主机名换成目标服务名
Feign的整合流程
第一步,导入openfeign依赖
第二部,主配置类加注解,@EnableFeignClients,开启feign支持
第三步,定义feign客户端接口,并加上注释@FeignClient("目标服务名"),接口中定义方法,该方法的方法名与目标服务的对应方法的方法名,返回值类型,形参列表,url路径要一致
Hystrix的整合流程
-
第一步,导入hystrix依赖
-
第二部,主启动类加注解,@EnableCircuitBreaker,开启熔断功能
-
第三步,在需要开启熔断功能的方法上,加注解@HystrixCommand(fallbackMethod="xxx"),xxx是降级方法
-
第四步,定义降级方法,方法名需要和fallbackMethod的值一致,形参列表和返回值类型需要和目标方法一致
feign整合Hystrix:
-
第一步,yml中配置,feign.hystrix.enable=true,开启hystrix功能
-
第二部,@FeignClient标签中,定义fallback或者fallbackFactory,指定降级类
-
第三步,
如果是fallback,就实现feign接口,并覆写接口中的方法作为降级方法
如果是fallbackFactory,就实现FallbackFactory接口,同时指定泛型为feign接口,覆写create方法,返回一个feign接口的匿名内部类,类中写降级方法
Zuul的整合流程
第一步,导入zuul依赖
第二步,主启动类上加注解@EnableZuulProxy,开启zuul功能
第三步,yml中配置,统一访问前缀prefix,禁用通过服务名方式访问服务ignoredServices,配置路由routes指定某个服务使用某个路径来访问
ConfigServer的整合流程
配置中心服务端配置:
第一步,导入config-server依赖
第二步,主启动类加注解,@EnableConfigServer,开启配置中心
第三步,配置文件中,配置远程仓库地址,仓库账号密码
客户端配置:
第一步,导入config-client依赖
第二步,创建bootstrap.yml配置文件,配置中心地址config.uri,要拉取的配置文件名name,环境名profile
浏览器发起一个请求,在你的微服务项目中的怎么去执行的?
浏览器发起的所有请求首先通过Nginx,通过负载均衡算法,路由给zuul集群,然后通过zuul前置过滤,作登录校验后,它会从配置中心拉取的通讯地址中,根据url匹配到对应的服务,然后使用ribbon发起restful调用。微服务间也可以通过feign相互调用,最终执行完任务,返回浏览器
说下Ribbon和Feign的区别呢
Ribbon和Feign都是SpringCloud Netflix中实现负载均衡的组件,不同点在于
Ribbon是需要我们手动构建http请求,根据目标服务名通过负载均衡算法直接调用目标服务,
Feign是采用接口的方式,将需要调用的目标服务方法定义成抽象方法,路径,服务名,形参列表,返回值类型需要保持一致。我们只需要调用接口中的方法就可以了。它会自动帮我们生成jdk动态代理,为每个方法生成RequestTemplate并封装url和请求参数,使用负载均衡算法发起调用
Ribbon的实现方式,一般配合RestTemplate发起http请求,我们需要在注册RestTemplate的Bean的方法上加@LoadBalanced,使它具有负载均衡的能力
Feign的实现方式,是在主启动类上加@EnableFeignClients,在客户端接口上加注解@FeignClient