springcloud 及组件的基本使用
本文内容纲要:
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开启负载均衡的功能。
feiginFeign主要做服务调用默认集成了ribbon,采用的是基于接口的注解
pom:spring-cloud-starter-eurekaspring-cloud-starter-feign
启动类上@EnableDiscoveryClient@EnableFeignClients:启用服务注册与发现:启用feign进行远程调用
@FeignClient(value="service-hi")
publicinterfaceSchedualServiceHi{
@RequestMapping(value="/hi",method=RequestMethod.GET)
StringsayHiFromClientOne(@RequestParam(value="name")Stringname);
}
调用这个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
publicclassMyFilterextendsZuulFilter{
privatestaticLoggerlog=LoggerFactory.getLogger(MyFilter.class);
//过滤类型有pre:路由之前routing:路由之时post:路由之后error:发送错误调用
@Override
publicStringfilterType(){
return"pre";
}
//过滤的顺序
@Override
publicintfilterOrder(){
return0;
}
//本文true,永远过滤。
@Override
publicbooleanshouldFilter(){
returntrue;
}
//run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问
@Override
publicObjectrun(){
}
}
eureka注册中心pom:spring-cloud-starter-eureka-server服务端启动类上@EnableEurekaServerapplication.xmleureka:instance:hostname:localhostclient:registerWithEureka:falsefetchRegistry:falseserviceUrl:defaultZone:http://${eureka.instance.hostname}:${server.port}/eureka/客户端启动类上@EnableEurekaClientribbon负载均衡客户端pom:spring-cloud-starter-ribbon启动类@EnableDiscoveryClient注册服务到客户端@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。feiginFeign主要做服务调用默认集成了ribbon,采用的是基于接口的注解pom:spring-cloud-starter-eurekaspring-cloud-starter-feign启动类上@EnableDiscoveryClient@EnableFeignClients:启用服务注册与发现:启用feign进行远程调用@FeignClient(value="service-hi")publicinterfaceSchedualServiceHi{@RequestMapping(value="/hi",method=RequestMethod.GET)StringsayHiFromClientOne(@RequestParam(value="name")Stringname);}调用这个SchedualServiceHi.sayHiFromClientOne方法时其实是调用的服务名为service-hi,/hi的服务
Hystrix熔断器application.xmlfeign.hystrix.enabled=true创建一个实现类HelloRemoteHystrix实现该接口然后对应方法进行熔断回调对应接口加上熔断回调的注解@FeignClient(value="service-hi"fallback=HelloRemoteHystrix.class)zuulZuul的主要功能是路由转发和过滤器。负载均衡pom:spring-cloud-starter-zuul启动类@EnableZuulProxyapplication.xmlzuul.routes.api-a.path=/demand/**zuul.routes.api-a.serviceId=sybus-demand-service前缀为/demand/的请求都转发给sybus-demand-service服务(路由)代理注册在eureka上的服务,实现在服务端的负载均衡。过滤:拦截非法请求定义多个拦截器继承ZuulFilterpublicclassMyFilterextendsZuulFilter{
privatestaticLoggerlog=LoggerFactory.getLogger(MyFilter.class);//过滤类型有pre:路由之前routing:路由之时post:路由之后error:发送错误调用@OverridepublicStringfilterType(){return"pre";}//过滤的顺序@OverridepublicintfilterOrder(){return0;}//本文true,永远过滤。@OverridepublicbooleanshouldFilter(){returntrue;}//run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问@OverridepublicObjectrun(){}}
本文内容总结:
原文链接:https://www.cnblogs.com/wuhaobk/p/8533520.html