使用try catch也是处理了业务,业务判断实现出异常了,再cath。开始做业务性能也是下降了。而断路器访问不通,不做业务直接立即返回,能抗跟大的洪峰。
程序出错
1)传统解决方案,抛异常try/catch。问题,先调用业务,等待超时时间。设置超时时间无法设置非常短。高并发情况下不怎么样。
2)京东商品价格,微服务宕机。展示:a.出错,b默认价格2499
断路器,如果服务正常,调用服务,如果服务不正常,返回一个默认处理。
优点:
1)快速失效,不用等待业务超时时间(时间相对来说太长了),返回默认值
2)服务一旦正常,自动重新连接到服务,再也不处理这个默认值
双11,应对高并发情况,洪峰。
经典解决方案:降级。
举例:后台有很多微服务,商品服务,OA办公自动化服务,CRM销售资源管理,ERP人财物管理。把这些不重要的服务暂时停掉。
断路器方案:“拔网线”,“插网线”去Eurka注册。
断路器状态:关闭:业务正常。打开:调用次数超过阀值。半开。
1阀值根据当前网路稳定情况去设置最优值。
2如果超过阀值,还不能正常访问,说明服务器应该出异常。打开断路器,走断路器规定的流程,返回默认值。
3过了一个时间窗口1s,再次调用。如果调用成功就关闭状态。
项目支持浏览器,手机,API是网关。
服务出异常,断路器(回调Fallback)调用FallBack内容,具体处理就在这个方法中来编写,返回默认值。
如果微服务正常,不再调用FallBack。