SpringCloud概述。
Eureka: (服务注册发现)
配置文件参数:
register-with-eureka: false #false表示不向注册中心注册自己。 fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
Eureka Client、 Eureka Server:客户端和服务端, 服务端一般是Eureka本身,客户端是各种服务。 有些服务作为单纯的消费者
是不会注册到服务端的。
服务提供者和服务消费者:
服务提供者:服务的提供者会在启动的时候通过rest请求方式将自己注册到EurekaServer上去,同时把自己服务的元数据带过去。
服务续约:注册之后,用心跳机制来续约。
服务下线:服务下线的Rest请求发给Eureka Server进行下线操作
服务消费者:服务启动,发送一个rest请求给服务注册中心,来获取服务清单。
服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元数据信息。在进行服务调用的时候,优先访问同处一个Zone中的服务提供方
EurekaServer:服务注册中心
失效剔除机制:每隔30s(默认),对超时(默认90s)未续约的服务剔除出去
自我保护机制:EurekaServer 在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%(通常由于网络不稳定导致)。 Eureka Server会将当前的实例注册信息保护起来, 让这些实例不会过期,尽可能保护这些注册信息。
RestTemplate:远程调用
@RestController public class DeptController{ // 服务实例名 private static final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT"; @Autowired private RestTemplate restTemplate; @RequestMapping(value = "/consumer/dept/add") public boolean add(Dept dept) { return restTemplate.postForObject(REST_URL_PREFIX + "/dept/add", dept); } }
RestTemplate定义了远程服务调用的规则
Ribbon负载均衡:
客户端负载均衡:客户端可以拿到服务清单后,通过Ribbon负载均衡在多个服务器质检根据负载均衡算法选择一个进行访问。 和RestTemplate一起使用,会在使用RestTemplate的时候自动开启Ribbon负载均衡。
服务端负载均衡:Ngnix 服务实例的清单在服务端,服务器进行负载均衡算法分配。
Ribbon是在本地进行负载均衡后访问具体服务器,Ngnix是先发送访问请求,在服务端进行负载均衡。
Ribbon还可以配置自己的负载均衡规则。
hystrix熔断:
可以通过失败快速返回,线程池隔离的方式避免问题的进一步升级。
Hystrix提供几个熔断关键参数:滑动窗口大小(20)、 熔断器开关间隔(5s)、错误率(50%)
。
-
每当20个请求中,有50%失败时,熔断器就会打开,此时再调用此服务,将会直接返回失败,不再调远程服务。
-
直到5s钟之后,重新检测该触发条件,判断是否把熔断器关闭,或者继续打开。
feign:
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign,
我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
整合了Ribbon和Hystrix
Zuul:
前置拦截过滤,校验,动态路由匹配,过滤器实现。
Config:
Spring Cloud Config就是将配置文件放到统一的位置管理(比如GitHub),客户端通过接口去获取这些配置文件
标签:负载,服务,均衡,SpringCloud,Day1,概述,注册,Eureka,服务端 From: https://www.cnblogs.com/dwj-ngu/p/16918967.html