小麦带你学架构十

简介: 架构学习

流量治理

熔断

如果说房子里面安装了电路熔断器,当你使用超大功率的电路时,有熔断设配帮你保护不至于出问题的时候把问题扩大化。

隔离

我们知道计算资源都是有限的,cpu,内存,队列,线程池都是资源,他们都是限定的资源数,如果不进行隔离,一个服务的调用可能要消耗很多的线程资源,把其他服务的资源都给占用了,那么可能出现应为一个服务的问题连带效应造成其他服务不能进行访问。

限流

让大流量的访问冲进去我们的服务时,我们需要一定的限流措施,比方说我们规则一定时间内只允许一定的访问数从我们的资源过,如果再大的化系统会出现问题,那么就需要限流保护。

降级

如果说系统后题无法提供足够的支撑能力,那么需要一个降级能力,保护系统不会被进一步恶化,而且可以对用户提供比较友好的柔性方案,例如告知用户暂时无法访问,请在一段时候后重试等等。

Hystrix

Hystrix就把上面说的 熔断,隔离,限流,降级封装在这么一个组件里面 下图是Hystrix内部设计和调用流程

大致的工作流如下:

  • 构建一个HystrixCommand对象,用于封装请求,并在构造方法配置请求被执行需要的参数
  • 执行命令,Hystrix提供了几种执行命令的方法,比较常用到的是synchrous和asynchrous
  • 判断电路是否被打开,如果被打开,直接进入fallback方法
  • 判断线程池/队列/信号量是否已经满,如果满了,直接进入fallback方法
  • 执行run方法,一般是HystrixCommand.run(),进入实际的业务调用,执行超时或者执行失败抛出未提前预计的异常时,直接进入fallback方法
  • 无论中间走到哪一步都会进行上报metrics,统计出熔断器的监控指标
  • fallback方法也分实现和备用的环节
  • 最后是返回请求响应
相关文章
|
移动开发 负载均衡 安全
Web Security 之 HTTP request smuggling(上)
Web Security 之 HTTP request smuggling
448 0
|
网络协议 程序员 测试技术
用了TCP协议,就一定不会丢包吗? 1
用了TCP协议,就一定不会丢包吗?
344 0
用了TCP协议,就一定不会丢包吗? 1
|
存储 设计模式 JavaScript
vuex底层原理实现方案
【8月更文挑战第10天】vuex底层原理实现方案
164 4
|
SDN 网络虚拟化 虚拟化
云数据中心中的SDN/NFV应用
【6月更文挑战第9天】计算和存储虚拟化技术在云计算IDC中已基本满足需求,但网络成为新瓶颈,主要问题包括虚拟化环境下的网络配置复杂度增加、拓扑展现困难和无法动态调整资源。
|
UED
【亮剑】无线AP在中小型和大型网络环境中的两种组网方式——分布式和集中式。
【4月更文挑战第30天】本文探讨了无线AP在中小型和大型网络环境中的两种组网方式——分布式和集中式。分布式组网适合中小型网络,成本低、部署简单,但管理复杂性和漫游体验有限。案例显示,分布式组网能满足小公司基本需求。而在大型网络中,集中式组网提供统一管理、无缝漫游和高稳定性,但初期投资大、维护复杂。大型购物中心采用集中式组网,实现了全面覆盖和客户体验提升。企业应根据需求和预算选择合适组网策略。
437 1
|
搜索推荐 安全 数据安全/隐私保护
SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧
【8月更文挑战第9天】SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧
SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧
|
监控 网络协议 测试技术
网工必备网络排错管理工具之IP链路测试工具
网工必备网络排错管理工具之IP链路测试工具
613 0
网工必备网络排错管理工具之IP链路测试工具
19zTree - Checkbox halfCheck 演示
19zTree - Checkbox halfCheck 演示
80 0
|
关系型数据库 MySQL 数据库
报错:ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)
报错:ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)
754 0
报错:ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)