05 2023 档案
摘要:在一个复杂的系统里,可能你的依赖接口的性能很不稳定,有时候2ms,200ms,2s 如果你不对各种依赖接口的调用,做超时的控制,来给你的服务提供安全保护措施,那么很可能你的服务就被各种垃圾的依赖服务的性能给拖死了 大量的接口调用很慢,大量线程就卡死了,资源隔离,线程池的线程卡死了,超时的控制 (1)
阅读全文
摘要:线程池隔离技术的设计原则 Hystrix采取了bulkhead舱壁隔离技术,来将外部依赖进行资源隔离,进而避免任何外部依赖的故障导致本服务崩溃 线程池隔离,学术名称:bulkhead,舱壁隔离 外部依赖的调用在单独的线程中执行,这样就能跟调用线程隔离开来,避免外部依赖调用timeout耗时过长,导致
阅读全文
摘要:断路器深入的工作原理 1、如果经过断路器的流量超过了一定的阈值,HystrixCommandProperties.circuitBreakerRequestVolumeThreshold() 举个例子,可能看起来是这样子的,要求在10s内,经过短路器的流量必须达到20个;在10s内,经过短路器的流量
阅读全文
摘要:1、fallback降级机制 hystrix调用各种接口,或者访问外部依赖,mysql,redis,zookeeper,kafka,等等,如果出现了任何异常的情况 比如说报错了,访问mysql报错,redis报错,zookeeper报错,kafka报错,error 对每个外部依赖,无论是服务接口,中
阅读全文
摘要:Hystrix command 执行时 8 大步骤第三步,就是检查 Request cache 是否有缓存。 首先,有一个概念,叫做 Request Context 请求上下文,一般来说,在一个 web 应用中,如果我们用到了 Hystrix,我们会在一个 filter 里面,对每一个请求都施加一个
阅读全文
摘要:前面了解了 Hystrix 最基本的支持高可用的技术:资源隔离 + 限流。 创建 command; 执行这个 command; 配置这个 command 对应的 group 和线程池。 开始执行这个 command,调用了这个 command 的 execute() 方法之后,Hystrix 底层的
阅读全文
摘要:Hystrix 实现资源隔离,有两种策略: 线程池隔离 信号量隔离 对资源隔离这一块东西,其实可以做一定细粒度的一些控制。 1、execution.isolation.strategy 指定了HystrixCommand.run()的资源隔离策略,THREAD或者SEMAPHORE,一种是基于线程池
阅读全文
摘要:Hystrix 机制实现资源隔离 Hystrix 里面核心的一项功能,其实就是所谓的资源隔离,要解决的最最核心的问题,就是将多个依赖服务的调用分别隔离到各自的资源池内。避免说对某一个依赖服务的调用,因为依赖服务的接口调用的延迟或者失败,导致服务所有的线程资源全部耗费在这个服务的接口调用上。一旦说某个
阅读全文
摘要:1、Hystrix是什么? 在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。 Hystrix可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。 Hystrix通过将依赖服务进行资源隔离,进
阅读全文
摘要:Redis(REmote DIctionary Service)是一个开源的键值对数据库服务器。 Redis 更准确的描述是一个数据结构服务器。Redis 的这种特殊性质让它在开发人员中很受欢迎。 Redis不是通过迭代或者排序方式处理数据,而是一开始就按照数据结构方式组织。早期,它的使用很像 Me
阅读全文
摘要:刚开始使用github时很多时候会碰到图片不显示的问题以下为解决方法 不显示图片原因:一般是因为DNS无法解析到图片外链地址的ip地址 解决方法:很简单,我们可以通过外国的ip地址测试找到该域名具体对应的ip地址,之后手动地加到我们本机的host文件中(相当于DNS映射) 具体步骤 第一步:检查域名
阅读全文
摘要:线程池常见的工作队列有以下几种: 1. 无界队列:使用一个无限制的队列来保存等待执行的任务,直到线程池中的线程可用时才会执行任务。这种队列可以保证任务不会被拒绝,但是可能会导致内存溢出。 2. 有界队列:使用一个固定大小的队列来保存等待执行的任务,如果队列已满,则新提交的任务将被拒绝。这种队列可以避
阅读全文
摘要:1. JMeter:JMeter是一种开源的Java压测工具,它可以测试Web应用程序、FTP服务器和数据库等。它支持多线程测试,可以模拟大量用户同时访问应用程序。JMeter还提供了可扩展的插件架构,可以扩展其功能。 2. Gatling:Gatling是一种基于Scala的高性能压测工具,它可以
阅读全文