eureka 注册中心 pom:spring-cloud-starter-eureka-server 服务端 启动类上@EnableEurekaServer application.xml eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 客户端 启动类上@EnableEurekaClient ribbon 负载均衡客户端 pom:spring-cloud-starter-ribbon 启动类 @EnableDiscoveryClient 注册服务到客户端 @LoadBalanced注解表明这个restRemplate开启负载均衡的功能。 feigin Feign 主要做服务调用 默认集成了ribbon,采用的是基于接口的注解 pom:spring-cloud-starter-eureka spring-cloud-starter-feign 启动类上@EnableDiscoveryClient @EnableFeignClients :启用服务注册与发现:启用feign进行远程调用 @FeignClient(value = "service-hi") public interface SchedualServiceHi { @RequestMapping(value = "/hi",method = RequestMethod.GET) String sayHiFromClientOne(@RequestParam(value = "name") String name); } 调用这个SchedualServiceHi.sayHiFromClientOne方法时 其实是调用的 服务名为service-hi,/hi的服务 Hystrix 熔断器 application.xml feign.hystrix.enabled=true 创建一个实现类 HelloRemoteHystrix 实现该接口 然后对应方法进行熔断回调 对应接口加上 熔断回调的注解 @FeignClient(value = "service-hi" fallback = HelloRemoteHystrix.class) zuul Zuul的主要功能是路由转发和过滤器。负载均衡 pom :spring-cloud-starter-zuul 启动类 @EnableZuulProxy application.xml zuul.routes.api-a.path=/demand/** zuul.routes.api-a.serviceId=sybus-demand-service 前缀为 /demand/的请求都转发给 sybus-demand-service服务 (路由) 代理注册在eureka上的服务,实现在服务端的负载均衡。 过滤: 拦截非法请求 定义多个拦截器继承ZuulFilter public class MyFilter extends ZuulFilter{ private static Logger log = LoggerFactory.getLogger(MyFilter.class); //过滤类型 有pre:路由之前 routing:路由之时 post: 路由之后 error:发送错误调用 @Override public String filterType() { return "pre"; } //过滤的顺序 @Override public int filterOrder() { return 0; } //本文true,永远过滤。 @Override public boolean shouldFilter() { return true; } //run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问 @Override public Object run() { } }
eureka 注册中心pom:spring-cloud-starter-eureka-server 服务端 启动类上@EnableEurekaServer application.xmleureka: instance:hostname: localhost client:registerWithEureka: falsefetchRegistry: falseserviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/客户端 启动类上@EnableEurekaClient ribbon 负载均衡客户端 pom:spring-cloud-starter-ribbon启动类 @EnableDiscoveryClient 注册服务到客户端@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。feigin Feign 主要做服务调用 默认集成了ribbon,采用的是基于接口的注解pom:spring-cloud-starter-eureka spring-cloud-starter-feign 启动类上@EnableDiscoveryClient @EnableFeignClients :启用服务注册与发现:启用feign进行远程调用@FeignClient(value = "service-hi")public interface SchedualServiceHi {@RequestMapping(value = "/hi",method = RequestMethod.GET)String sayHiFromClientOne(@RequestParam(value = "name") String name);}调用这个SchedualServiceHi.sayHiFromClientOne方法时 其实是调用的 服务名为service-hi,/hi的服务
Hystrix 熔断器 application.xml feign.hystrix.enabled=true 创建一个实现类 HelloRemoteHystrix 实现该接口 然后对应方法进行熔断回调 对应接口加上 熔断回调的注解 @FeignClient(value = "service-hi" fallback = HelloRemoteHystrix.class) zuul Zuul的主要功能是路由转发和过滤器。负载均衡 pom :spring-cloud-starter-zuul 启动类 @EnableZuulProxy application.xml zuul.routes.api-a.path=/demand/**zuul.routes.api-a.serviceId=sybus-demand-service前缀为/demand/的请求都转发给 sybus-demand-service服务 (路由)代理注册在eureka上的服务,实现在服务端的负载均衡。过滤: 拦截非法请求 定义多个拦截器继承ZuulFilterpublic class MyFilter extends ZuulFilter{
private static Logger log = LoggerFactory.getLogger(MyFilter.class);//过滤类型 有pre:路由之前 routing:路由之时 post: 路由之后 error:发送错误调用@Overridepublic String filterType() {return "pre";}//过滤的顺序@Overridepublic int filterOrder() {return 0;}//本文true,永远过滤。@Overridepublic boolean shouldFilter() {return true;}//run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问@Overridepublic Object run() {}}