上一篇 <<<缓存策略汇总
下一篇 >>>服务的隔离、降级和熔断
1.RPC与本地调用的区别
RPC远程调用,一般是跨平台、采用http协议,因为http协议底层使用socket技术,只要你的语言支持socket技术,就可以相互进行通讯。
比如:java语言开发的接口,使用http协议,如此以来C#语言可以调用。
本地调用:只支持java语言与java语言开发,使用虚拟机和虚拟机之间的通讯,RMI。
2.雪崩效应产生的原因
默认情况下只有一个线程池维护所有的服务接口,如果大量的请求访问同一个接口,达到tomcat线程池默认极限,可能会导致其他服务无法访问。
3.雪崩效应的解决思路
服务器在高并发下会产生雪崩效应,为了解决此可以,主要可以从三方面解决
a、缓存:提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的核心。
b、服务隔离、熔断、降级等,当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;
隔离:让各服务使用独立的线程池,互不影响。
熔断:当服务达到最大的承受极限直接拒绝访问,使用服务降级。
降级:用户一直等待时,给客户端一个友好的错误提示。
c、限流:不能使用缓存或降级时的解决方案,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页)。
Hystrix是一个微服务关于服务保护的框架,是Netflix开源的一款针对分布式系统的延迟和容错解决框架,目的是用来隔离分布式服务故障。
限流和服务保护都需要和服务降级共同使用。
白话文理解:
服务保护:当服务产生堆积的时候,对服务实现保护功能
服务隔离:保证每个服务互不影响,使用信号量或线程池方式
服务降级:当服务不可用的时候,不会被等待,直接给客户端一个友好提示
服务熔断:当服务器达到最大的承受能力后,直接决绝访问服务,采用服务降级返回友好提示。
推荐阅读:
<<<高并发架构的整体思路
<<<一个网站访问慢的真正原因
<<<高并发情况下,接口的代码会存在哪些问题
<<<压缩静态资源减少带宽传输的方式
<<<动静分离架构模式
<<<缓存策略汇总
<<<服务的隔离、降级和熔断
<<<服务限流之计数器方式
<<<服务限流之滑动窗口计数
<<<服务限流之令牌桶算法
<<<服务限流之漏桶算法
<<<漏桶算法和令牌桶算法的区别
<<<自定义封装限流算法
<<<应用级限流
<<<接入层限流
网友评论