代码拉取完成,页面将自动刷新
组件名 | 语言 | CAP | 健康检查 | 对外接口 | Springcloud集成 |
---|---|---|---|---|---|
Eureka | Java | AP | 可支持配置 | HTTP | 已集成 |
Consul | Go | CP | 支持 | HTTP/DNS | 已集成 |
Zookeeper | Java | CP | 支持 | TCP | 已集成 |
Nacos | Java | AP/CP | 支持 | HTTP/DNS/UDP | 已集成 |
CAP理论: Consistency 强一致性,Availability 可用性,Partition tolerance 分区容错性一个分布式系统最多只能同时满足两个。
CAP理论核心:一个分布式系统不可能同时很好的满足一致性、可用性和分区容错性的三个要求。
因此,根据CAP理论将NoSQL数据库分成满足CA原则、满足CP原则和满足AP原则三大类:
CA:单点集群,满足一致性,可用性的系统,在扩展性上不太强大
CP:满足一致性,分区容忍性的系统,通常性能不高
AP:满足可用性,分区容忍性的系统,通常对一致性要求较低
Nginx是服务器端负载均衡,客户端所有请求都会发到Ngin,然后由Ngnix实现请求转发,即负载均衡。
Ribbon本地负载均衡,在调用微服务接口时,会在注册中心上获取注册信息服务列表之后缓存到本地,从而在本地实现RPC远程服务调用
2.Ribbon负载均衡算法(7大):轮询、随机、重试(轮询)、响应越快越被选择 3.Ribbon轮询负载均衡算法原理:
轮询算法:rest接口第几次请求数 % 服务器集群总数量=实际调用服务器位置下标,每次服务重启后rest接口计数从1开始。
Feign中包含了Ribbon,在此基础上进行改进,采用接口的方式来提供更加方便的HTTP请求
服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。这样,虽然提供的是一个有损的服务,但却保证了整个系统的稳定性和可用性。
在客户端和服务服务端都可以使用服务熔断技术。在该项目中,对客户端和服务器端采用不同的降级处理方法,推荐使用客户端的降级处理方法。 2.1.1 服降级常见情况如下:
- 程序运行异常
- 服务请求超时
- 服务熔断会触发服务降级
- 线程池/信号量打满则会导致服务降级
2.2 服务熔断 在cloud-hystrix-provider-payment8002中进行服务熔断设计,常用配置如下:
@HystrixCommand(fallbackMethod = "paymentTimeOutFallbackMethod",
commandProperties = {
@HystrixProperty(name = "circuitBreaker.enabled", value = "true"), // 是否开启熔断
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"), // 请求次数
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "1000"), // 时间窗口
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "60") // 失败率到达多少进行熔断跳闸
})
public String paymentCircuitBreaker(@PathVariable("id") Integer id) {
if (id < 0) {
throw new RuntimeException("******id 不能为负数");
}
String serialNumber = IdUtil.simpleUUID(); //UUID.randomUUID();
return Thread.currentThread().getName() + "\t" + "调用成功,流水号:" + serialNumber;
}
public String paymentTimeOutFallbackMethod(@PathVariable("id") Integer id){
return "id 不能负数,请稍后再试,o(╥﹏╥)o id:"+id;
}
服务熔断的作用:
服务熔断的作用类似于我们家用的保险丝,当某服务出现访问量最大情况、不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。
2.3 服务限流
2.4 DashBoard熔断监控
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
在DashBoard和服务提供给模块中添加以上依赖,修改服务模块中的主函数.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。