SpringCloud五大组件

springcloud简介

基于springboot构建,通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。

SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix
在这里插入图片描述

下面只简单介绍下经常用的5个

服务发现——Netflix Eureka
客服端负载均衡——Netflix Ribbon
断路器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config

参考连接:
链接: SpringCloud的五大组件详解.

服务发现——Netflix Eureka

在这里插入图片描述我们用EurekaClient 就必须用到图上@EnableDiscoveryClient/@EnableEurekaClient的两个注解之一,EnableEurekaClient 注解里面包含了EnableDiscoveryClient注解

@AutoWired
DisCoverClient disCoverClient=new DisCoverClient();// Eureka发现服务类
@AutoWired
RestTemplate restTempLate=new RestTemplate();//
List<ServiceInstance> serviceInstances=disCoverClient.getInstance("ServiceId");//服务名称
ServiceInstance instance=ServiceInsances.get(i);//服务序列号,获取到服务实例
Product product=restTempLate.getForObject(instance.getHost()+":"+instance.getPost()+"/project/"+pid,Product.class);//url,返回值
客服端负载均衡——Netflix Ribbon
策略名策略描述
RoundRobinRule轮询方式选择Server
BestAvaliableRule选择最小并发数的Server
RondomRule随机选择一个Server
基于Feign实现服务调用

Feign默认集成了Ribbon,整合容错组件需要在配置文件中开发Feign对Hystrix/Sentinel的支持

@FeignClient(value="service-product" fallback=ProductFallback.class fallbackFactory=ProductServiceFallbackFactory.class)//value用于指定调用服务注册中心的哪个微服务;fallback 用于指定当前feign接口的容错类;实现FallbackFactory的容错获取异常 	
public interface ProductService{
@RequestMapping("/product/{pid}")//指定请求的uri部分,结合项目名成为完成的url
Product getByPid(@Pathvariable Integer pid);

/** 在service-order服务中调用service-product服务中的getByPid方法只需要用@Autowried ProductService即可。*/

}
Sentinel使用入门

tomcat默认线程数在200-400之间

// 自定义异常返回页面
@Component
public class ExceptionHandlerPage implements UriBlockHandler{
    
     @Override
     public void blocked(HttpServerletRequest request,HttpServerletResponse response, BlockException e) throw IOException{
          ResponseData responseData=null;
          //BlockException 一场接口,包含Sentinel的五个异常
          //flowException 限流异常
          //DegradeEeCeption 降级异常
          //ParamFlowException 参数限流异常
          //SystemBlockException 系统负载异常
          if(e instanceof FlowException){
            new ResponseData("接口被限流了");
          } else if(e instanceof DegraeException){
            new ResponseData("接口被降级了");
          }
          response.getWriter().write(JSON.toJSONString(responseData));
      }
}
Spring cloud Gateway(网关)

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值