概述
springcloud是一个分布式的整体解决方案
springcloud的几种组件
Eureka 服务注册与发现
Eureka在springcloud中充当注册中心的角色,就像zookeepr一样,由两个组件组成,Eureka服务端和Eureka客户端。
所有服务都需要在Eureka注册中心去注册,注册时需要配置Eureka的ip地址和自己的服务名称,该名称将作为其他服务调用时它时需要配置的名字
Feign 服务通信
Feign是Netflix开发的声明式、模板化的HTTP客户端,其灵感来自Retrofit、JAXRS-2.0以及WebSocket。Feign可帮助我们更加便捷、优雅地调用HTTP API。
实现consumer调用provider的接口只需创建一个接口在上面标注@FeignClient(name = “provider的名称”),再写想要调的方法,即可直接使用这个方法
Ribbon 负载均衡算法
Nginx是面向服务器做的负载均衡,而Ribbon是面向注册中心的服务之间调用的负载均衡。
如果在eureka注册多个provider,consumer调用该服务 的时候,Ribbon会默认通过轮询的方式实现负载均衡。
负载均衡策略
- WeightedResponseTimeRule
根据响应时间分配一个weight(权重),响应时间越长,weight越小,被选中的可能性越低
- RoundRobinRule
轮询选择server(此为默认的负载均衡策略
- RandomRule
随机选择一个server
- ZoneAvoidanceRule
复合判断server所在区域的性能和server的可用性选择server
- RetryRule
在一个配置时间段内,当选择server不成功时一直尝试重新选择
- BestAvailableRule
选择一个并发请求最小的server
- AvailabilityFilteringRule
过滤掉那些因为一直连接失败而被标记为circuit
想要是使用某一种策略直接配置即可
# 这里写的是调用的服务名称
eureka-client:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
Hystrix 断路器,保护系统,控制异常范围
微服务架构应用的特点就是多服务,而服务层之间通过网络进行通信,从而支撑起整个应用系统,所以,各个微服务之间不可避免的存在耦合依赖关系。但任何的服务应用实例都不可能永远的健康或网络不可能永远的都相安无事,所以一旦某个服务或局部业务发生了故障,会导致系统的不可用,我们知道当故障累积到一定程度就会造成系统层面的灾害,也就是级联故障,也叫雪崩效应,所以微服务需要在故障累计到上限之前阻止或疏通这些故障以保证系统的稳固安全
1、包裹请求:使用HystrixCommand包裹对依赖的调用逻辑,每个命令在独立的线程中执行,使用了设计模式中的“命令模式”;
2、跳闸机制:当某服务的错误率超过一定阈值时,Hystrix可以自动或者手动跳闸,停止请求该服务一段时间;
3、资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。如果该线程已满,则发向该依赖的请求就会被立即拒绝,而不是排队等候,从而加速失败判定;
4、监控:Hystrix可以近乎实时地监控运行指标和配置的变化,例如成功、失败、超时、以及被拒绝的请求等;
5、回退机制:当请求失败、超时、被拒绝,或当断路器打开时,执行回退逻辑,回退逻辑由开发人员自行提供,如返回一个缺省值;
6、自我修复:断路器打开一段时间后,会自动进入“半开”状态,此时断路器可允许一个请求访问依赖的服务,若请求成功,则断路器关闭,否则断路器转为“打开”状态;
Zuul 网关
网关的功能:
- 身份认证和安全
- 审查与监控
- 动态路由
- 静态响应处理
- 弹性负载均衡
在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。
Config 配置管理
- 将公共信息保存到远程仓库
- 连接configServer,无需重启更新配置
- 统一加密解密
配置管理分为 ConfigServer和ConfigClient
ConfigServer主要把自己注册到注册中心,并且连接远程git仓库,
而ConfigClient中的服务配置ConfigServer的地址和要读取的配置文件,连接远程配置文件一般在bootstrap.yml中配置,远程配置的属性优于其他任何配置文件的属性
最后
以上就是唠叨魔镜为你收集整理的springCloud六大组件总结springcloud的几种组件的全部内容,希望文章能够帮你解决springCloud六大组件总结springcloud的几种组件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复