Lll Blog


  • 首页

  • 标签

  • 分类

  • 归档

六、使用Hystrix实现微服务的容错处理

发表于 2019-05-17 | 分类于 Spring Cloud 微服务架构实战

应用容错三板斧

  1. 超时机制
    超时机制你懂的,配置一下超时时间,例如1秒——每次请求在1秒内必须返回,否则到点就把线程掐死,释放资源!
    思路:一旦超时,就释放资源。由于释放资源速度较快,应用就不会那么容易被拖死。

  2. 舱壁模式
    软件世界里的仓壁模式可以这样理解:M类使用线程池1,N类使用线程池2,彼此的线程池不同,并且为每个类分配的线程池较小,例如coreSize=10。举个例子:M类调用B服务,N类调用C服务,如果M类和N类使用相同的线程池,那么如果B服务挂了,M类调用B服务的接口并发又很高,你又没有任何保护措施,你的服务就很可能被M类拖死。而如果M类有自己的线程池,N类也有自己的线程池,如果B服务挂了,M类顶多是将自己的线程池占满,不会影响N类的线程池——于是N类依然能正常工作,
    思路:不把鸡蛋放在一个篮子里。你有你的线程池,我有我的线程池,你的线程池满了和我没关系,你挂了也和我没关系。

  3. 断路器
    现实世界的断路器大家肯定都很了解,每个人家里都会有断路器。断路器实时监控电路的情况,如果发现电路电流异常,就会跳闸,从而防止电路被烧毁。
    软件世界的断路器可以这样理解:实时监测应用,如果发现在一定时间内失败次数/失败率达到一定阈值,就“跳闸”,断路器打开——此时,请求直接返回,而不去调用原本调用的逻辑。
    跳闸一段时间后(例如15秒),断路器会进入半开状态,这是一个瞬间态,此时允许一次请求调用该调的逻辑,如果成功,则断路器关闭,应用正常调用;如果调用依然不成功,断路器继续回到打开状态,过段时间再进入半开状态尝试——通过”跳闸“,应用可以保护自己,而且避免浪费资源;而通过半开的设计,可实现应用的”自我修复“。

阅读全文 »

七、使用Zuul构建微服务网关

发表于 2019-05-20 | 分类于 Spring Cloud 微服务架构实战

为什么要使用微服务网关

不同的微服务一般会有不同的网络地址,而外部客户端(例如手机APP)可能需要调用多个服务的接口才能完成一个业务需求。例如一个电影购票的手机APP,可能会调用多个微服务的接口,才能完成一次购票的业务流程,如下图所示。

阅读全文 »

Synchronized同步锁优化

发表于 2019-05-23 | 分类于 多线程性能优化
该内容被加密了, 请输入密码查看.
阅读全文 »

Lock同步锁优化

发表于 2019-09-22 | 分类于 多线程性能优化
该内容被加密了, 请输入密码查看.
阅读全文 »

乐观锁优化并行操作

发表于 2019-09-23 | 分类于 多线程性能优化
该内容被加密了, 请输入密码查看.
阅读全文 »
1234…6

紫苏

30 日志
2 分类
8 标签
© 2022 紫苏
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4